Skip to content

Commit c02a66d

Browse files
committed
create route api product
1 parent 77735fe commit c02a66d

File tree

1 file changed

+139
-3
lines changed

1 file changed

+139
-3
lines changed

routers.js

+139-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
const express = require('express')
22
const routers = express.Router();
3+
const client = require('./connection')
4+
const ObjectId = require('mongodb').ObjectId
35

46
const multer = require('multer')
57
const imageFilter = (req, file, cb) => {
@@ -31,8 +33,6 @@ routers.post('/register', upload.single('avatar'), (req, res) => {
3133
res.send({ name: name, avatar: avatar })
3234
})
3335

34-
35-
3636
// req semua method
3737
routers.all('/universal', function (req, res) {
3838
res.send('request dengan method ' + req.method)
@@ -51,7 +51,143 @@ routers.get('/foods', (req, res) => {
5151
res.end();
5252
});
5353

54+
// Route Products
55+
56+
routers.get('/products', async (req, res) => {
57+
if (client.isConnected()) {
58+
const db = client.db('latihan')
59+
const products = await db.collection("products").find().toArray()
60+
if (products.length > 0) {
61+
res.send({
62+
status: 'success',
63+
message: 'list products ditemukan',
64+
data: products
65+
})
66+
} else {
67+
res.send({
68+
status: 'success',
69+
message: 'list products tidak ditemukan',
70+
})
71+
}
72+
} else {
73+
res.send({
74+
status: 'error',
75+
message: 'koneksi database gagal'
76+
})
77+
}
78+
})
79+
80+
routers.get('/products/:id', async (req, res) => {
81+
if (client.isConnected()) {
82+
const db = client.db("latihan");
83+
const productId = await db.collection("products").findOne({
84+
_id: ObjectId(req.params.id)
85+
})
86+
res.send({
87+
status: "success",
88+
message: "single products",
89+
data: productId
90+
})
91+
} else {
92+
res.send({
93+
status: "error",
94+
message: "Koneksi Database Gagal"
95+
})
96+
}
97+
})
98+
99+
routers.post('/products', multer().none(), async (req, res) => {
100+
if (client.isConnected()) {
101+
const { name, price, stock, status } = req.body
102+
const db = client.db('latihan')
103+
104+
const result = await db.collection('products').insertOne({
105+
name: name,
106+
price: price,
107+
stock: stock,
108+
status: status
109+
})
110+
111+
if (result.insertedCount == 1) {
112+
res.send({
113+
status: "success",
114+
message: "add products success",
115+
})
116+
} else {
117+
res.send({
118+
status: 'warning',
119+
message: 'tambah product gagal',
120+
})
121+
}
122+
} else {
123+
res.send({
124+
status: "error",
125+
message: "Koneksi Database Gagal"
126+
})
127+
}
128+
})
129+
130+
routers.put('/products/:id', multer().none(), async (req, res) => {
131+
if (client.isConnected()) {
132+
const { name, price, stock, status } = req.body
133+
const db = client.db('latihan')
134+
135+
const result = await db.collection('products').updateOne(
136+
{ _id: ObjectId(req.params.id) },
137+
{
138+
$set: {
139+
name: name,
140+
price: price,
141+
stock: stock,
142+
status: status
143+
},
144+
}
145+
)
146+
147+
if (result.matchedCount == 1) {
148+
res.send({
149+
status: "success",
150+
message: "update products success",
151+
})
152+
} else {
153+
res.send({
154+
status: 'warning',
155+
message: 'update product gagal',
156+
})
157+
}
158+
} else {
159+
res.send({
160+
status: "error",
161+
message: "Koneksi Database Gagal"
162+
})
163+
}
164+
})
165+
166+
routers.delete('/products/:id', multer().none(), async (req, res) => {
167+
if (client.isConnected()) {
168+
const db = client.db('latihan')
169+
const result = await db.collection('products').deleteOne(
170+
{ _id: ObjectId(req.params.id) },
171+
)
172+
173+
if (result.deletedCount == 1) {
174+
res.send({
175+
status: "success",
176+
message: "delete products success",
177+
})
178+
} else {
179+
res.send({
180+
status: 'warning',
181+
message: 'delete product gagal',
182+
})
183+
}
184+
} else {
185+
res.send({
186+
status: "error",
187+
message: "Koneksi Database Gagal"
188+
})
189+
}
190+
})
54191

55-
// kode routing lainnya
56192

57193
module.exports = routers

0 commit comments

Comments
 (0)