-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
154 lines (130 loc) · 4.65 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
const express = require('express');
const cors = require('cors');
const app = express();
const port = process.env.PORT || 5000;
require('dotenv').config();
const jwt = require('jsonwebtoken');
// MiddleWare
app.use(cors());
app.use(express.json());
// ----------------------------
// MongoDB Code
const { MongoClient, ServerApiVersion, ObjectId } = require('mongodb');
const uri = `mongodb+srv://${process.env.DATA_USER}:${process.env.DATA_PASS}@cluster0.jlpngjm.mongodb.net/?retryWrites=true&w=majority`;
// Create a MongoClient with a MongoClientOptions object to set the Stable API version
const client = new MongoClient(uri, {
serverApi: {
version: ServerApiVersion.v1,
strict: true,
deprecationErrors: true,
}
});
async function run() {
try {
// Connect the client to the server (optional starting in v4.7)
client.connect();
const toyCollection = client.db('marvelUniverse').collection('toyCollection');
const galleryToyCollection = client.db('marvelUniverse').collection('galleryToyCollection');
// All Code For Client Side
// -------------------------
// Get Gallery Toys Data
app.get('/toyGallery', async (req, res) => {
const result = await galleryToyCollection.find().toArray();
res.send(result);
})
app.get('/toys', async (req, res) => {
const page = parseInt(req.query.page);
const limit = parseInt(req.query.limit);
const skip = page * limit;
const searchName = req.query.name; // Get the toy name from the query parameters
const query = searchName ? { toyName: { $regex: searchName, $options: 'i' } } : {}; // Create the query object
const result = await toyCollection.find(query).skip(skip).limit(limit).toArray();
res.send(result);
});
// Find Specific Data Using Email
app.get('/toys/email', async (req, res) => {
console.log(req.query.sort);
console.log(req.query.order);
let query = {};
if (req.query.email) {
query = { sellerEmail: req.query.email }
}
const sortField = req.query.sort || 'price';
const sortOrder = parseInt(req.query.order) || 1;
const result = await toyCollection.find(query).sort({ [sortField]: sortOrder }).toArray();
res.send(result);
})
// Find Single Toy
app.get('/toys/:id', async (req, res) => {
const id = req.params.id;
const query = { _id: new ObjectId(id) };
const result = await toyCollection.findOne(query);
res.send(result);
})
// Find By Category Data
app.get('/toys/category/:category', async (req, res) => {
const category = req.params.category;
console.log(category);
let query = {};
if (category) {
query = { category: category }
}
const result = await toyCollection.find(query).toArray();
res.send(result);
})
// Total Toys Count
app.get('/totalToys', async (req, res) => {
const result = await toyCollection.estimatedDocumentCount();
res.send({ totalToys: result });
})
// Add Toys
app.post('/toys', async (req, res) => {
const toy = req.body;
const addNewToy = await toyCollection.insertOne(toy);
res.send(addNewToy);
})
// Update Toy
app.put('/toys/:id', async (req, res) => {
const toyId = req.params.id;
const updatedToy = req.body;
const filter = { _id: new ObjectId(toyId) };
const options = { upsert: true };
const toy = {
$set: {
toyName: updatedToy.toyName,
category: updatedToy.category,
description: updatedToy.description,
toyPhoto: updatedToy.toyPhoto,
price: updatedToy.price,
rating: updatedToy.rating,
quantity: updatedToy.quantity,
sellerName: updatedToy.sellerName,
sellerEmail: updatedToy.sellerEmail
}
}
const result = await toyCollection.updateOne(filter, toy, options);
res.send(result);
})
// Delete Toy
app.delete('/toys/:id', async (req, res) => {
const id = req.params.id;
const query = { _id: new ObjectId(id) };
const result = await toyCollection.deleteOne(query);
res.send(result);
})
// Send a ping to confirm a successful connection
await client.db("admin").command({ ping: 1 });
console.log("Pinged your deployment. You successfully connected to MongoDB!");
} finally {
// Ensures that the client will close when you finish/error
// await client.close();
}
}
run().catch(console.dir);
// Start
app.get('/', (req, res) => {
res.send('Marvel Universe Running')
});
app.listen(port, (req, res) => {
console.log(`Marvel Universe Server Running on Port: ${port}`);
});