Conversation
| db.setType('knex'); | ||
| console.log(`New DB type is ${db.getType()}`); |
There was a problem hiding this comment.
Оце можна не робити. Під час зустрічі я це робив лише для зразку. Це можна зробити через envvar DB_WRAPPER.
| process.on('SIGUSR1', exitHandler); | ||
| process.on('SIGUSR2', exitHandler); |
There was a problem hiding this comment.
Оці сигнали краще не закривати мабуть все-таки.
| products: process.env.TABLE_NAME || 'products', | ||
| colors: 'colors', | ||
| types: 'types', |
There was a problem hiding this comment.
Якщо одну назву виніс, то чому інші ні? 🙂
| createTables: async () => { | ||
| try { | ||
| await knex.raw( | ||
| `SELECT 'CREATE DATABASE ${database}' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '${database}')`, |
There was a problem hiding this comment.
Боюсь, що якщо бази нема, то воно і підконектитись не зможе. Загалом створення бази і таблиць краще не робити з коду. Для цього і є міграції.
Ну і тут екранування нема.
| throw err; | ||
| } | ||
|
|
||
| const [product] = await knex(tables.products) |
There was a problem hiding this comment.
Тут можна зробити одним комплексним запитом в базу, щоб спочатку не вигрібати ці айдішки окремо.
| const { Pool } = require('pg'); | ||
|
|
||
| const name = 'pg'; | ||
| const table = 'products'; |
| await client.query( | ||
| `CREATE TABLE IF NOT EXISTS ${tablename}( | ||
| id INT GENERATED ALWAYS AS IDENTITY, | ||
| type VARCHAR(255), | ||
| color VARCHAR(255), | ||
| price NUMERIC(10,2), | ||
| quantity BIGINT NOT NULL, | ||
| created_at TIMESTAMP DEFAULT NULL, | ||
| updated_at TIMESTAMP DEFAULT NULL, | ||
| deleted_at TIMESTAMP DEFAULT NULL, | ||
| PRIMARY KEY (type, color, price) |
There was a problem hiding this comment.
Стара неактуальна таблиця? Взагалі ці createTable для кожного враппера краще прибрати.
| 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.
Не актуально для домашки №7?
| } | ||
| }; | ||
|
|
||
| const testc = async (req, res) => { |
There was a problem hiding this comment.
Погана назва, так незрозуміло краще не називати.
| type: e.type || 'no type', | ||
| color: e.color || 'no color', | ||
| quantity: e.quantity || 0, | ||
| price: +e.price + 0.99, |
There was a problem hiding this comment.
Що це за 0.99 щоразу? 🙂 Просто прикол?
No description provided.