Conversation
VitaliiHurin
left a comment
There was a problem hiding this comment.
Щось не побачив де кладеться в базу, коли обрацьовуємо CSV потоково.
Як я зрозумів, там тільки можна вже підготовлений файл в базу класти?
Можна було зробити реалізацію додавання в базу після оптимізації зразу, тобто без файлів взагалі.
| const timestamp = new Date(); | ||
|
|
||
| const res = await client.query( | ||
| `INSERT INTO ${table} (type, color, price, quantity, created_at, updated_at, deleted_at) VALUES ($1, $2, $3, $4, $5, $6, $7) ON CONFLICT (type, color, price) DO UPDATE SET quantity = ${table}.quantity + $4 RETURNING *`, |
There was a problem hiding this comment.
Погано напряму в запит вставляти назву таблиці...
| const timestamp = new Date(); | ||
|
|
||
| const res = await client.query( | ||
| `INSERT INTO ${table} (type, color, price, quantity, created_at, updated_at, deleted_at) VALUES ($1, $2, $3, $4, $5, $6, $7) ON CONFLICT (type, color, price) DO UPDATE SET quantity = ${table}.quantity + $4 RETURNING *`, |
There was a problem hiding this comment.
При апдейті кількості треба апдейтити і updated_at поле теж.
Також при такій реалізації цей метод має називатись не createProduct, а скоріше вже upsertProduct...
| const getProductById = async (req, res) => { | ||
| const { id } = req.params; | ||
| try { | ||
| const result = await getProduct(id); |
There was a problem hiding this comment.
Доречно ще буде опрацювати якщо юзер ввів не правильний id, то щоб це не давало 500 помилку. Тобто ще валідувати id на число. Крім цього, ще треба опрацювати ситуацію, коли за вказаним id не знайдено товару, по хорошому треба віддавати 404. Те ж саме і для delete та update.
| type: e.type || 'no type', | ||
| color: e.color || 'no color', | ||
| quantity: e.quantity || 0, | ||
| price: +e.price + 0.99, |
Увесь необхідний функціонал додав. Але ніяк не можу приборкати помилку із аутентифікацією :(