-
Notifications
You must be signed in to change notification settings - Fork 40
Expand file tree
/
Copy pathqueries.js
More file actions
77 lines (61 loc) · 3.98 KB
/
queries.js
File metadata and controls
77 lines (61 loc) · 3.98 KB
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
'use strict';
module.exports = class Queries {
constructor(mongoose, { souvenirsCollection, cartsCollection }) {
const souvenirSchema = mongoose.Schema({ // eslint-disable-line new-cap
// Ваша схема сувенира тут
});
const cartSchema = mongoose.Schema({ // eslint-disable-line new-cap
// Ваша схема корзины тут
});
// Модели в таком формате нужны для корректного запуска тестов
this._Souvenir = mongoose.model('Souvenir', souvenirSchema, souvenirsCollection);
this._Cart = mongoose.model('Cart', cartSchema, cartsCollection);
}
// Далее идут методы, которые вам необходимо реализовать:
getAllSouvenirs() {
// Данный метод должен возвращать все сувениры
}
getCheapSouvenirs(price) {
// Данный метод должен возвращать все сувениры, цена которых меньше или равна price
}
getTopRatingSouvenirs(n) {
// Данный метод должен возвращать топ n сувениров с самым большим рейтингом
}
getSouvenirsByTag(tag) {
// Данный метод должен возвращать все сувениры, в тегах которых есть tag
// Кроме того, в ответе должны быть только поля name, image и price
}
getSouvenrisCount({ country, rating, price }) {
// Данный метод должен возвращать количество сувениров,
// из страны country, с рейтингом больше или равной rating,
// и ценой меньше или равной price
// ! Важно, чтобы метод работал очень быстро,
// поэтому учтите это при определении схем
}
searchSouvenirs(substring) {
// Данный метод должен возвращать все сувениры, в название которых входит
// подстрока substring. Поиск должен быть регистронезависимым
}
getDisscusedSouvenirs(date) {
// Данный метод должен возвращать все сувениры,
// первый отзыв на которые был оставлен не раньше даты date
}
deleteOutOfStockSouvenirs() {
// Данный метод должен удалять все сувениры, которых нет в наличии
// (то есть amount = 0)
// Метод должен возвращать объект формата { ok: 1, n: количество удаленных сувениров }
// в случае успешного удаления
}
async addReview(souvenirId, { login, rating, text }) {
// Данный метод должен добавлять отзыв к сувениру souvenirId, отзыв добавляется
// в конец массива (чтобы сохранить упорядоченность по дате),
// содержит login, rating, text - из аргументов,
// date - текущая дата и isApproved - false
// Обратите внимание, что при добавлении отзыва рейтинг сувенира должен быть пересчитан
}
async getCartSum(login) {
// Данный метод должен считать общую стоимость корзины пользователя login
// У пользователя может быть только одна корзина, поэтому это тоже можно отразить
// в схеме
}
};