import client from '../database' export type Order = { id?: number status: string user_id: number } export type OrderProduct = { id?: number quantity: number order_id: number product_id: number } export class OrderStore { async index(): Promise { try { const conn = await client.connect() const sql = 'SELECT * FROM orders' const result = await conn.query(sql) const orders = result.rows conn.release() return orders } catch (err) { throw new Error(`Cannot get any order ${err}`) } } async read(user_id: number): Promise { try { const conn = await client.connect() const sql = 'SELECT * FROM orders WHERE user_id=($1)' const result = await conn.query(sql, [user_id]) const order = result.rows[0] conn.release() return order } catch (err) { throw new Error(`Could not find order ${user_id}. Error: ${err}`) } } async create(o: Order): Promise { try { const conn = await client.connect() const sql = 'INSERT INTO orders (status, user_id) VALUES ($1, $2) RETURNING *' const result = await conn.query(sql, [o.status, o.user_id]) const order = result.rows[0] conn.release() return order } catch (err) { throw new Error(`Could not add a new order ${o.user_id}. Error: ${err}`) } } async addProduct(o: OrderProduct): Promise { try { const conn = await client.connect() const sql = 'INSERT INTO order_products (quantity, order_id, product_id) VALUES ($1, $2, $3) RETURNING *' const result = await conn.query(sql, [o.quantity, o.order_id, o.product_id]) const order = result.rows[0] conn.release() return order } catch (err) { throw new Error(`Could not add a new orderProducts ${o.order_id}. Error: ${err}`) } } }