dbwrapper

  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
/*
var = function (db, , callback) {
db.query('', ,
function(err, ) {
if(err) throw err;
callback();
});
}
*/
//---Приватные функции---
//Если row - false - возвращает false, иначе (объект, массив и т.д.) - true
var isThereRow = function(row) {
if(row) {
return true;
} else {
return false;
}
}
//Изменяет поле logged_ip для заданного по ID пользователя
var updateUserIP = function(db, userID, userIP, callback) {
db.query('UPDATE `users` SET `logged_ip`=? WHERE `id`=?', [userIP, userID],
function(err) {
if(err) throw err;
callback();
})
}
//Публичные функции (возвращаем в module.exports)
//Получение данных
//Возвращает все товары из заданной(по ID) категории
var getCategoryItems = function(db, id, callback) {
db.query('SELECT `id`,`name`,`pic_name`,`price` FROM `items` WHERE `category_id`=? and `is_outofdate`=0', [id],
function(err, rows, fields)
{
if(err) throw err;
callback(rows);
}
);
}
//Получает почти все поля для одного товара: id, название, имя изображения, id категории, описание, цену
var getItemFullInfo = function (db, id, callback) {
db.queryRow('SELECT `id`,`name`,`pic_name`,`category_id`,`desc`,`price` FROM `items` WHERE `is_outofdate`=0 AND `id`=?', [id],
function(err, row) {
if(err) throw err;
callback(row);
});
}
//Получение вообще всех существующих товаров
var getAllItems = function (db, callback) {
db.query('SELECT `id`,`name`,`pic_name`,`price` FROM `items` WHERE `is_outofdate`=0',
function(err, rows, fields) {
if(err) throw err;
callback(rows);
});
}
//Получение самый новый товаров в кол-ве count
var getNewItems = function (db, count, callback) {
db.query('SELECT `id`,`name`,`pic_name`,`price` FROM `items` WHERE `is_outofdate`=0 ORDER BY `id` DESC LIMIT ?', [count],
function(err, rows, fields) {
if(err) throw err;
callback(rows);
});
}
//Получение всех активных категорий
var getCategories = function (db, callback) {
db.query('SELECT `id`,`name` FROM `categories` WHERE `is_disabled`=0',
function(err, rows, fields) {
if(err) throw err;
callback(rows);
});
}
//Получение вообще всех категорий
var getAllCategories = function (db, callback) {
db.query('SELECT `id`,`name` FROM `categories`',
function(err, rows, fields) {
if(err) throw err;
callback(rows);
});
}
//Проверяет - есть ли категория с таким именем
var isCategoryName = function (db, categoryName, callback) {
db.queryRow('SELECT 1 FROM `categories` WHERE `name`=?', [categoryName],
function(err, row) {
if(err) throw err;
callback(isThereRow(row));
});
}
//Есть ли категория с таким ID
var isCategoryID = function (db, categoryID, callback) {
db.queryRow('SELECT 1 FROM `categories` WHERE `id`=?', [categoryID],
function(err, row) {
if(err) throw err;
callback(isThereRow(row));
});
}
//Есть ли товар с таким именем
var isItemName = function (db, itemName, callback) {
db.queryRow('SELECT 1 FROM `items` WHERE `name`=?', [itemName],
function(err, row) {
if(err) throw err;
callback(isThereRow(row));
});
}
//Есть ли товар с таким ID
var isItemID = function (db, itemID, callback) {
db.queryRow('SELECT 1 FROM `items` WHERE `id`=?', [itemID],
function(err, row) {
if(err) throw err;
callback(isThereRow(row));
});
}
//Получить ID катеории, в которой находится товар с заданным ID
var getItemCategory = function (db, itemID, callback) {
db.queryValue('SELECT `category_id` FROM `items` WHERE `id` = ?', [itemID],
function(err, categoryID) {
if(err) throw err;
callback(categoryID);
});
}
//Получение почти всех полей записи пользователя
var getUserFullInfo = function (db, userID, callback) {
db.queryRow('SELECT `name`,`sname`,`address` FROM `users` WHERE `id`=?', [userID],
function(err, row) {
if(err) throw err;
callback(row);
});
}
//Есть ли пользователь с таким ID и пришедший с такого IP
var isUser = function (db, userID, userIP, callback) {
db.queryRow('SELECT `id` FROM `users` WHERE `id`=? AND `logged_ip`=?', [userID, userIP],
function(err, row) {
if(err) throw err;
callback(isThereRow(row));
});
}
//Проверяем, свободен ли такой логин
var isLoginFree = function (db, login, callback) {
db.queryRow('SELECT `id` FROM `users` WHERE `login`=?', [login],
function(err, row) {
if(err) throw err;
callback(!isThereRow(row));
});
}
//Проверяем - есть ли такая пара логин-пароль в базе.
//Если есть - обновляем у этой записи поле logged_ip - с какого IP зашёл чувак
var checkUser = function (db, login, password, userIP, callback) {
db.queryRow('SELECT `id` FROM `users` WHERE `login`=? AND `password`=?', [login, password],
function(err, row) {
if(err) throw err;
result = isThereRow(row);
if(result===true) {
updateUserIP(db, row.id, userIP,
function() {
callback(result)
});
}
else callback(result);
});
}
//Получем исчерпывающую информацию о корзине пользователя
//INNER JOIN-ом собираем все 4 таблицы, условие - ID пользователя
//Поля - id записи в корзине, имя товара, id категории, имя категории, кол-во товара в корзине, цена товара за шт.
var getUserCart = function (db, userID, callback) {
db.queryRow('SELECT `carts_items`.`id` as id, '+
' `items`.`id` as `item_id`, '+
' `items`.`name` as `item_name`, ' +
' `categories`.`id` as `category_id`, '+
' `categories`.`name` as `category_name`, '+
' `carts_items`.`count` as `count`, ' +
' `items`.`price` as `price` ' +
' FROM `carts_items` INNER JOIN `items` ON `carts_items`.`item_id` = `items`.`id` '+
' INNER JOIN `categories` ON `items`.`category_id` = `categories`.`id` ' +
' WHERE `carts_items`.`user_id` = ?', userID,
function(err, row) {
if(err) throw err;
callback(row);
});
}
//Добавление данных
//Удаление данных
//Экспорт публичных функций
module.exports = function() {
return {
getCategoryItems: getCategoryItems,
getItemFullInfo: getItemFullInfo,
getAllItems: getAllItems,
getNewItems: getNewItems,
getCategories: getCategories,
getAllCategories: getAllCategories,
isCategoryID: isCategoryID,
isItemName: isItemName,
isItemID: isItemID,
getItemCategory: getItemCategory,
getUserFullInfo: getUserFullInfo,
isUser: isUser,
isLoginFree: isLoginFree,
getUserCart: getUserCart
};
}