Skip to content

Commit

Permalink
add bank backend code
Browse files Browse the repository at this point in the history
  • Loading branch information
yashj09 committed Jul 16, 2024
1 parent a235fc4 commit 61dc886
Show file tree
Hide file tree
Showing 5 changed files with 101 additions and 24 deletions.
16 changes: 16 additions & 0 deletions backend/Models/accountModel.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
const { mongoose } = require("mongoose");

const accountSchema = new mongoose.Schema({
userId: {
type: mongoose.Schema.Types.ObjectId,
ref: "User",
required: true,
},
balance: {
type: Number,
required: true,
},
});

const Account = mongoose.model("Account", accountSchema);
module.exports = Account;
53 changes: 53 additions & 0 deletions backend/Routes/accountRoutes.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
const express = require("express");
const router = express.Router();
const Account = require("../Models/accountModel");
const authMiddleware = require("../Middleware/authMiddleware");
router.get("/balance", authMiddleware, async (req, res) => {
try {
const account = await Account.findOne({ userId: req.userId });

if (!account) {
return res.status(404).json({ message: "Account not found" });
}

res.json({ balance: account.balance });
} catch (error) {
console.error("Error fetching account balance:", error);
res.status(500).json({ message: "Internal server error" });
}
});

router.post("/transfer", authMiddleware, async (req, res) => {

const { amount, to } = req.body;

const account = await Account.findOne({ userId: req.userId })

if (!account || account.balance < amount) {
return res.status(400).json({
message: "Insufficient balance",
});
}

const toAccount = await Account.findOne({ userId: to })
if (!toAccount) {
return res.status(400).json({
message: "Invalid account",
});
}

await Account.updateOne(
{ userId: req.userId },
{ $inc: { balance: -amount } }
)
await Account.updateOne(
{ userId: to },
{ $inc: { balance: amount } }
)


res.json({
message: "Transfer successful",
});
});
module.exports = router;
49 changes: 28 additions & 21 deletions backend/Routes/authRoutes.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
const express = require("express");
const User = require("../Models/User");
const Account = require("../Models/accountModel");
const router = express.Router();
const { JWT_SECRET, JWT_EXPIRY } = require("../Config/config");
const jwt = require("jsonwebtoken");
const authMiddleware = require("../Middleware/authMiddleware");
const zod = require("zod");

router.post("/signup", async (req, res, next) => {
try {
const { username, password, firstName, lastName } = req.body;
Expand All @@ -15,6 +17,13 @@ router.post("/signup", async (req, res, next) => {
}
const user = new User({ username, password, firstName, lastName });
await user.save();

const userId = user._id;
await Account.create({
userId,
balance: 1 + Math.random() * 10000,
});

const token = jwt.sign({ id: user._id }, JWT_SECRET, {
expiresIn: JWT_EXPIRY,
algorithm: "HS256",
Expand Down Expand Up @@ -85,30 +94,28 @@ router.put("/update", authMiddleware, async (req, res) => {
}
});

//filter user based on name
router.get('/bulk', async (req,res)=>{
const filter=req.query.filter||""
const users=await User.find({
$or:[
{
firstName:{'$regex':filter}
},
{
lastName:{'$regex':filter}
}
]
})
//filter user based on name
router.get("/bulk", async (req, res) => {
const filter = req.query.filter || "";
const users = await User.find({
$or: [
{
firstName: { $regex: filter },
},
{
lastName: { $regex: filter },
},
],
});

res.json({
user: users.map(user => ({
res.json({
user: users.map((user) => ({
username: user.username,
firstName: user.firstName,
lastName: user.lastName,
_id: user._id
}))
})
})


_id: user._id,
})),
});
});

module.exports = router;
4 changes: 4 additions & 0 deletions backend/Routes/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
const express = require("express");
const router = express.Router();
const authRoutes = require("./authRoutes");
const accountRoutes = require("./accountRoutes");
const authMiddleware = require("../Middleware/authMiddleware");

router.use("/user", authRoutes);
router.use("/account", accountRoutes);

module.exports = router;
3 changes: 0 additions & 3 deletions backend/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@ const cors = require("cors");
const mainroute=require("./Routes/index")
const app = express();
config();
app.get("/", (req, res) => {
res.send("heiii");
});

connectDB();

Expand Down

0 comments on commit 61dc886

Please sign in to comment.