-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
164 lines (145 loc) · 5.5 KB
/
index.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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
const express = require('express');
const { MongoClient } = require('mongodb');
require('dotenv').config();
const ObjectId = require('mongodb').ObjectId;
const cors = require('cors');
const app = express();
const port = process.env.PORT || 5000;
//middleware
app.use(cors());
app.use(express.json());
const uri = `mongodb+srv://${process.env.DB_USER}:${process.env.DB_PASS}@cluster0.cnnr8.mongodb.net/myFirstDatabase?retryWrites=true&w=majority`;
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });
// console.log(uri);
async function run() {
try {
await client.connect();
// console.log('database connect successfully');
const database = client.db("touristTravel");
const serviceCollection = database.collection("services");
const bookingCollection = database.collection("bookings");
const usersCollection = database.collection("users");
const reviewCollection = database.collection("reviews");
//SERVICE DATA SHOW
app.get('/services', async (req, res) => {
const cursor = serviceCollection.find({});
const services = await cursor.toArray();
res.send(services);
})
//BOOKING COLLECTION
app.post('/bookings', async (req, res) => {
//ei comment diye dekha databackend e aise kina
// const appointment = req.body;
// console.log(appointment);
// res.json({message:'hello'})
const booking = req.body;
const result = await bookingCollection.insertOne(booking);
// console.log(result);
res.json(result)
})
//GET BOOKING SPECIFIC USER DATA
app.get('/bookings', async (req, res) => {
const email = req.query.email;
const date = req.query.date;
// console.log(date);
const query = { email: email, date: date }
const cursor = bookingCollection.find(query);
const bookings = await cursor.toArray();
res.json(bookings);
})
//ALL BOOKING SHOW
app.get('/allBookings', async (req, res) => {
const cursor = bookingCollection.find({});
const bookings = await cursor.toArray();
res.json(bookings);
});
//UPDATE BOOKING DATA
app.put('/bookings/:id', async (req, res) => {
const id = req.params.id;
const updateOrder = req.body;
const filter = { _id: ObjectId(id) };
const options = { upset: true };
const updateDoc = {
$set: {
status: "Booked"
},
};
const result = await bookingCollection.updateOne(filter, updateDoc, options);
res.json(result)
})
//DELETE BOOKING DATA
app.delete('/bookings/:id', async (req, res) => {
const id = req.params.id;
const query = { _id:ObjectId(id) };
const result = await bookingCollection.deleteOne(query);
res.json(result);
})
//POST REVIEW DATA
app.post('/reviews', async (req, res) => {
const reviews = req.body;
// console.log(reviews);
const result = await reviewCollection.insertOne(reviews);
// console.log(result);
res.json(result)
})
//REVIEW DATA SHOW
app.get('/reviews', async (req, res) => {
const cursor = reviewCollection.find({});
const reviews = await cursor.toArray();
res.send(reviews);
})
//USER INFO POST TO THE DATABASE
app.post('/users', async (req, res) => {
const user = req.body;
const result = await usersCollection.insertOne(user);
// console.log(result);
res.json(result)
})
//USER PUT FOR GOOGLE SIGN IN METHOD(upsert)
app.put('/users', async (req, res) => {
const user = req.body;
const filter = { email: user.email };
const options = { upsert: true };
const updateDoc = { $set: user };
const result = await usersCollection.updateOne(filter, updateDoc, options);
res.json(result);
})
//MAKE ADMIN OR NORMAL USERS
app.put('/users/admin', async (req, res) => {
const user = req.body;
// console.log(user);
const filter = { email: user.email };
const updateDoc = { $set: { role: 'admin' } };
const result = await usersCollection.updateOne(filter, updateDoc);
res.json(result);
})
//DIFFERENTIATE ADMIN CAN ONLY ADD ADMIN
app.get('/users/:email', async (req, res) => {
const email = req.params.email;
// console.log(email);
const query = { email: email };
const user = await usersCollection.findOne(query);
console.log(user);
let isAdmin = false;
if (user) {
if (user.role === 'admin') {
isAdmin = true;
}
res.json({ admin: isAdmin });
}
else {
res.json({ admin: isAdmin });
}
// res.json('dd');
})
} finally {
// await client.close();
}
}
run().catch(console.dir);
app.get('/', (req, res) => {
res.send('i am from tourist travel server');
})
app.listen(port, () => {
console.log('running server on port', port);
})