|
|
|
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<Order[]> {
|
|
|
|
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<Order> {
|
|
|
|
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<Order> {
|
|
|
|
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<OrderProduct> {
|
|
|
|
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}`)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|