Skip to content

Commit 7a1e77d

Browse files
committed
Work on add expense functionality to DB
1 parent db92339 commit 7a1e77d

File tree

9 files changed

+389
-239
lines changed

9 files changed

+389
-239
lines changed

app.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,20 @@ const app = express();
55
//parse the form data sent with post request
66
const bodyParser = require('body-parser');
77
app.use(bodyParser.urlencoded({ extended: false }));
8+
app.use(bodyParser.json()); // It parses only json object(when any request post json data)
89

910
// connect to the mysql DB
1011
const sequelize = require('./util/database');
11-
const User = require('./models/user')
12+
const User = require('./models/user');
13+
const Expense = require('./models/expense');
1214

1315
// set the static folder in my express (by the we can use css and js file)
1416
app.use(express.static('./public'));
1517

1618
// use express router
1719
app.use('/', require('./router/user'));
1820
app.use('/user', require('./router/user'));
21+
app.use('/expense', require('./router/expense'));
1922

2023
sequelize.sync().then((result) => {
2124
app.listen(port, function (err) {

controllers/expense_controller.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
const Expense = require("../models/expense");
2+
// const User = require("../models/user");
3+
const sequelize = require("../util/database");
4+
5+
module.exports.addExpense = async (req, res) => {
6+
// const t = await sequelize.transaction();
7+
try {
8+
const date = req.body.date;
9+
const category = req.body.category;
10+
const description = req.body.description;
11+
const amount = req.body.amount;
12+
13+
// await User.update({ totalExpenses: req.user.totalExpenses + Number(amount), },
14+
// { where: { id: req.user.id } },
15+
// { transaction: t }
16+
// );
17+
18+
// await
19+
20+
// console.log(amount);
21+
// console.log(req.body);
22+
23+
Expense.create({
24+
date: date,
25+
category: category,
26+
description: description,
27+
amount: amount
28+
// userId: req.user.id
29+
}
30+
// ,{ transaction: t }
31+
).then((data) => {
32+
res.status(200).redirect("/user_dashboard"); // Pending -: Doubt why use .redirect here, bcz when we give home route ('/) its not work
33+
}).catch((err) => {
34+
console.log(err);
35+
});
36+
// await t.commit();
37+
} catch {
38+
async (err) => {
39+
// await t.rollback();
40+
console.log(err);
41+
};
42+
}
43+
};

models/expense.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
const Sequelize = require("sequelize");
2+
const sequelize = require("../util/database");
3+
4+
const Expenses = sequelize.define("expenses", {
5+
id: {
6+
type: Sequelize.INTEGER,
7+
autoIncrement: true,
8+
allowNull: false,
9+
primaryKey: true
10+
},
11+
date: {
12+
type: Sequelize.STRING,
13+
allowNull: false
14+
},
15+
category: {
16+
type: Sequelize.STRING,
17+
allowNull: false
18+
},
19+
description: {
20+
type: Sequelize.STRING,
21+
allowNull: false
22+
},
23+
amount: {
24+
type: Sequelize.INTEGER,
25+
allowNull: false
26+
},
27+
});
28+
29+
module.exports = Expenses;

models/user.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,20 @@ const User = sequelize.define("users", {
66
type: Sequelize.INTEGER,
77
autoIncrement: true,
88
allowNull: false,
9-
primaryKey: true,
9+
primaryKey: true
1010
},
1111
name: {
1212
type: Sequelize.STRING,
13-
allowNull: false,
13+
allowNull: false
1414
},
1515
email: {
1616
type: Sequelize.STRING,
1717
allowNull: false,
18-
unique: true,
18+
unique: true
1919
},
2020
password: {
2121
type: Sequelize.STRING,
22-
allowNull: false,
22+
allowNull: false
2323
},
2424
// isPremiumUser: Sequelize.BOOLEAN,
2525
// totalExpenses: {

package-lock.json

Lines changed: 72 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"author": "Chirag Raj",
1414
"license": "ISC",
1515
"dependencies": {
16+
"axios": "^1.5.0",
1617
"body-parser": "^1.20.2",
1718
"express": "^4.18.2",
1819
"mysql2": "^3.6.1",

0 commit comments

Comments
 (0)