-
Notifications
You must be signed in to change notification settings - Fork 523
/
app.js
132 lines (114 loc) · 4.17 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
const express = require('express');
const mongoose = require('mongoose');
const bcrypt = require('bcrypt');
const cors = require('cors');
// Import required modules
// Create an Express app
const app = express();
// Enable CORS
app.use(express.json());
app.use(cors());
// Connect to MongoDB
mongoose.connect('mongodb://localhost:27017/cafe', { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => {
console.log('Connected to MongoDB');
})
.catch((error) => {
console.error('Error connecting to MongoDB:', error);
});
// Define a user schema
const userSchema = new mongoose.Schema({
username: { type: String, required: true },
password: { type: String, required: true }
});
// Define a user model
const User = mongoose.model('User', userSchema);
const productSchema = new mongoose.Schema({
name: { type: String, required: true },
price: { type: Number, required: true },
quantity: { type: Number, required: true }
});
const Product = mongoose.model('Product', productSchema);
// Register a new user
app.post('/register', async (req, res) => {
try {
const { username, password } = req.body;
// Check if the username already exists
const existingUser = await User.findOne({ username });
if (existingUser) {
return res.status(400).json({ message: 'Username already exists' });
}
// Hash the password
const hashedPassword = await bcrypt.hash(password, 10);
// Create a new user
const newUser = new User({ username, password: hashedPassword });
await newUser.save();
res.status(201).json({ message: 'User registered successfully' });
} catch (error) {
console.error('Error registering user:', error);
res.status(500).json({ message: 'Internal server error' });
}
});
// User login
app.post('/login', async (req, res) => {
try {
const { username, password } = req.body;
// Find the user by username
const user = await User.findOne({ username });
if (!user) {
return res.status(404).json({ message: 'User not found' });
}
// Compare the password
const isPasswordValid = await bcrypt.compare(password, user.password);
if (!isPasswordValid) {
return res.status(401).json({ message: 'Invalid password' });
}
res.status(200).json({ message: 'Login successful' });
} catch (error) {
console.error('Error logging in:', error);
res.status(500).json({ message: 'Internal server error' });
}
});
app.get('/products',async (req,res)=>{
try{
const products = await Product.find();
res.status(200).json(products);
}catch(error){
console.error('Error getting products:',error);
res.status(500).json({message:'Internal server error'});
}
})
app.post('/products',async (req,res)=>{
try{
const {name,price,quantity} = req.body;
const newProduct = new Product({name,price,quantity});
await newProduct.save();
res.status(201).json({message:'Product added successfully'});
}catch(error){
console.error('Error adding product:',error);
res.status(500).json({message:'Internal server error'});
}
})
app.put('/products/:id',async (req,res)=>{
try{
const {name,price,quantity} = req.body;
await Product.findByIdAndUpdate(req.params.id,{name,price,quantity});
res.status(200).json({message:'Product updated successfully'});
}catch(error){
console.error('Error updating product:',error);
res.status(500).json({message:'Internal server error'});
}
})
app.delete('/products/:id',async (req,res)=>{
try{
await Product.findByIdAndDelete(req.params.id);
res.status(200).json({message:'Product deleted successfully'});
}catch(error){
console.error('Error deleting product:',error);
res.status(500).json({message:'Internal server error'});
}
})
// Start the server
app.listen(3000, () => {
console.log('Server started on port 3000');
});