-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.js
268 lines (209 loc) · 7.16 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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
// On récupére notre librairie
const express = require('express');
//On initialise notre application dans la constante
const app = express();
//Librairie path pour utiliser les chemins absolut
let path = require('path');
const bodyParser = require('body-parser');
const multer = require('multer');
const upload = multer();
const config = require('./config')
//On récupére notre librairie mongoose
const mongoose = require('mongoose')
const schemaMovie = require('./Schema/movieSchema')
// url mongodb user: motdepasse /name of DB
mongoose.connect(`mongodb+srv://${config.db.user}:${config.db.password}@m2icluster-kpkda.gcp.mongodb.net/films?retryWrites=true&w=majority`);
//On déclare une connection dans la constante db
const db = mongoose.connection;
// On gére l'erreur et la reussite de la connexion via .on et .once
db.on('error', console.error.bind(console, 'Erreur de connexion: Aucun accés à la DB'))
db.once('open', () => {
console.log('Connection réussite')
})
// On attribut le schema a la Constante Movie
const Movie = mongoose.model('Movie', schemaMovie.movieSchema)
// ( Next dans la route /moovie/add )
//On déclare le moteurs de view, et le dossier dans lequel les trouver
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use('/public', express.static('public'));
app.use(bodyParser.urlencoded({extended: false}))
/** On utilise la methode get de l'objet app
* pour intéragir avec les apelle en get sur une
* url précise ici le "/"*/
app.get('/', (req, res) => {
//On renvoie dans la réponse un message
res.render('index')
});
app.get('/moovies', (req, res) => {
Movie.find({}, (err, films) => {
if (!err) {
resultatFilms = films
res.render('list-film', {films: resultatFilms})
} else {
res.render('list-film', {films: 'no Records found'})
}
});
});
app.get('/moovies/search', (req, res) => {
res.render('search-moovie')
})
app.get('/moovies/add', (req, res) => {
Movie.find({}, (err, films) => {
if (!err) {
res.render('addMoovie', {films: films})
} else {
throw err;
}
});
});
app.post('/moovies/add', upload.fields([]), (req, res) => {
if (!req.body) {
res.sendStatus(500)
} else {
const formData = req.body;
console.log('formData', formData);
//On instancie notre Schema et on lui attribut les valeurs correspondante
const myMovie = new Movie({title: req.body.titrefilm, year: req.body.anneefilm});
// On gére la persistance de l'objet avec la methode error first
myMovie.save((err, savedMovie) => {
if (err) {
console.log(err)
} else {
console.log("Votre film " + savedMovie.title + " A bien été ajouté")
}
})
}
})
// app.post('/moovies/add', (req,res)=>{
// console.log(req)
// console.log(req.body)
// console.log(`Le titre du film est: ${req.body.titrefilm}`);
// console.log(`L'année du film est: ${req.body.anneefilm}`);
// res.sendStatus(201)
// });
//On a créer la route /moovies suivit d'un paramétre
app.get('/moovies/:id', (req, res) => {
//On récupére le paramétre stocker
const idFilm = req.params.id;
Movie.findById(idFilm, (err, film) => {
if (!err) {
res.render('moovies-details', {film: film})
} else if (err) {
console.log(err)
res.render('moovies-details', {msg: 'Le film n\'a pas était trouver'})
}
})
// On utilise render pour génére une vue, qui
// contient la valeur de notre constante dans
//une clef nomée mooviesId
})
app.get('/moovies/delete/:id', (req,res)=>{
const filmId = req.params.id
Movie.findByIdAndDelete(filmId, {},(err,filmdeleted)=>{
if(!err){
Movie.find({}, (err, films)=>{
if(!err){
res.render('list-film', {films: films, suprMsg: filmdeleted})
}
})
}
})
})
const ObjectID = require('mongodb').ObjectID;
const MongoClient = require('mongodb').MongoClient
let database;
MongoClient.connect(`mongodb+srv://${config.db.user}:${config.db.password}@m2icluster-kpkda.gcp.mongodb.net/films?retryWrites=true&w=majority`, (err, DB)=>{
if(err){
throw err;
}else{
database = DB.db('films')
}
})
//La methode collection crée, ou séléction la collection présente dans la DB
app.get('/series/list', (req,res)=>{
database.collection('series').find({}).toArray(function(err, result) {
if (err) throw err;
console.log(result);
res.render('serie-list', {series: result})
});
})
app.get('/series/add', (req, res)=>{
res.render('serie-add')
})
app.post('/series/add', (req, res)=>{
console.log(database)
let actif = false;
if(req.body.actif){
actif = true
}
database.collection('series').insert({
titre: req.body.title,
resume: req.body.description,
nbsSaison: req.body.nbSaison,
actif: actif,
defaultValue: 'Serie crée depuis l\'App Moovie App'
})
console.log(req.body)
res.sendStatus(201)
})
app.get('/series/detail/:id', (req,res)=>{
let serieId = req.params.id;
database.collection('series').findOne({_id: new ObjectID(serieId)},(err, result)=>{
if (err) throw err;
console.log(result);
res.render('serie-detail', {serie: result})
});
})
app.get('/series/delete/:id', (req,res)=>{
let serieId = req.params.id;
database.collection('series').deleteOne({_id: new ObjectID(serieId)}, (err, success)=>{
if(!err){
database.collection('series').find({}).toArray(function(err, result) {
if (err) throw err;
console.log(result);
res.render('serie-list', {series: result})
})
}else{
throw err
}
})
})
app.get('/series/update/:id', (req,res)=>{
let serieId = req.params.id;
database.collection('series').findOne({_id: new ObjectID(serieId)},(err, result)=>{
if (err) throw err;
console.log(result);
res.render('serie-update', {serie: result})
});
})
app.post('/series/update/:id', (req,res)=>{
let serieId = req.params.id;
let actif = false;
if(req.body.actif){
actif = true
}
database.collection('series').updateOne({
_id: new ObjectID(serieId)
},{$set:{
titre: req.body.title,
resume: req.body.description,
nbsSaison: req.body.nbSaison,
actif: actif,
defaultValue: 'Serie crée depuis l\'App Moovie App'
}}, (err, result)=> {
if (err) throw err;
database.collection('series').find({}).toArray(function(err, result) {
if (err) throw err;
console.log(result);
res.render('serie-list', {series: result})
})
})
})
/** On utilise la methode listen pour lancer
* l'application sur un port précis, on peux
* également renvoyer un message de bon ou
* mauvais fonctionement*/
app.listen(config.port, () => {
console.log(`Ecoute sur le port ${config.port}`)
})