feat: order and item queries
This commit is contained in:
0
api/controllers/itemController.go
Normal file
0
api/controllers/itemController.go
Normal file
77
api/queries/ItemQueries.go
Normal file
77
api/queries/ItemQueries.go
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
package queries
|
||||||
|
|
||||||
|
const CREATE_ITEM = `
|
||||||
|
INSERT INTO item(item_name, in_season) VALUES ($1, $2);
|
||||||
|
`
|
||||||
|
|
||||||
|
const CREATE_ITEM_PRICE = `
|
||||||
|
INSERT INTO item_price_history(item_id, price) VALUES ($1, $2);
|
||||||
|
`
|
||||||
|
|
||||||
|
const SET_ITEM_PRICE_VALID_TO_DATE = `
|
||||||
|
UPDATE item_price_history SET valid_to = now()
|
||||||
|
FROM (
|
||||||
|
SELECT item_id, MAX(valid_from) FROM item_price_history WHERE item_id = $1
|
||||||
|
) as o
|
||||||
|
WHERE item_id IN o.item_id
|
||||||
|
`
|
||||||
|
|
||||||
|
const GET_ITEM_PRICE = `
|
||||||
|
SELECT
|
||||||
|
oi.item_id,
|
||||||
|
oi.order_id,
|
||||||
|
i.item_name,
|
||||||
|
oi.quantity,
|
||||||
|
oi.made,
|
||||||
|
oi.created_at,
|
||||||
|
oi.quantity * iph.price AS total_price,
|
||||||
|
iph.price AS unit_price
|
||||||
|
FROM
|
||||||
|
order_item oi
|
||||||
|
INNER JOIN item i ON oi.item_id = i.id
|
||||||
|
AND oi.item_id = $1
|
||||||
|
AND oi.order_id = $2
|
||||||
|
INNER JOIN item_price_history iph ON iph.item_id = i.id
|
||||||
|
AND iph.valid_from <= oi.created_at
|
||||||
|
AND (iph.valid_to IS NULL OR iph.valid_to > oi.created_at);
|
||||||
|
`
|
||||||
|
|
||||||
|
const ADD_ITEM_TO_ORDER = `
|
||||||
|
INSERT INTO order_item (item_id, order_id, quantity, created_at) VALUES ($1, $2, $3, $4) ON CONFLICT (item_id, order_id) DO UPDATE SET
|
||||||
|
quantity = $3,
|
||||||
|
created_at = $4`
|
||||||
|
|
||||||
|
const SET_QUANTITY = `
|
||||||
|
UPDATE order_item SET quantity = $1 WHERE item_id = $2 AND order_id = $3;
|
||||||
|
`
|
||||||
|
|
||||||
|
const SET_MADE = `
|
||||||
|
UPDATE order_item SET made = $1 WHERE item_id = $2 AND order_id = $3;
|
||||||
|
`
|
||||||
|
|
||||||
|
const GET_ORDER_ITEMS = `
|
||||||
|
SELECT
|
||||||
|
oi.item_id,
|
||||||
|
oi.order_id,
|
||||||
|
i.item_name,
|
||||||
|
oi.quantity,
|
||||||
|
oi.made,
|
||||||
|
oi.created_at,
|
||||||
|
oi.quantity * iph.price AS total_price,
|
||||||
|
iph.price AS unit_price
|
||||||
|
FROM
|
||||||
|
order_item oi
|
||||||
|
INNER JOIN item i ON oi.item_id = i.init_db_pool
|
||||||
|
AND oi.order_id = $1
|
||||||
|
INNER JOIN item_price_history iph ON iph.item_id = i.id
|
||||||
|
AND iph.valid_from <= oi.created_at
|
||||||
|
AND (iph.valid_to IS NULL OR iph.valid_to > oi.created_at);
|
||||||
|
`
|
||||||
|
|
||||||
|
const REMOVE_ITEM_FROM_ORDER = `
|
||||||
|
DELETE FROM order_item WHERE item_id = $1 AND order_id = $2;
|
||||||
|
`
|
||||||
|
|
||||||
|
const SET_ITEM_IS_IN_SEASON = `
|
||||||
|
UPDATE item SET in_season = $1 WHERE id = $2;
|
||||||
|
`
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
package queries
|
||||||
|
|
||||||
|
const CREATE_ORDER = `
|
||||||
|
INSERT INTO order_record(user_id, orderer, date_due, date_placed) VALUES ($1, $2, $3, $4);
|
||||||
|
`
|
||||||
|
|
||||||
|
const SET_ORDER_FILLED = `
|
||||||
|
UPDATE order_record SET filled = $1 WHERE id = $2
|
||||||
|
`
|
||||||
|
|
||||||
|
const SET_ORDER_DELIVERED = `
|
||||||
|
UPDATE order_record SET delivered = $1 WHERE id = $2
|
||||||
|
`
|
||||||
|
|
||||||
|
const SET_ORDER_PAID = `
|
||||||
|
UPDATE order_record SET amount_paid = $1 WHERE id = $2
|
||||||
|
`
|
||||||
|
|
||||||
|
const GET_ORDER_TOTAL_AND_BALANCE = `
|
||||||
|
SELECT
|
||||||
|
SUM(oi.quantity * iph.price) AS order_total,
|
||||||
|
order_total - orec.amount_paid AS balance
|
||||||
|
FROM
|
||||||
|
order_item oi
|
||||||
|
INNER JOIN item i ON oi.item_id = i.init_db_pool
|
||||||
|
AND oi.order_id = $1
|
||||||
|
INNER JOIN order_record orec ON oi.order_id = orec.order_id
|
||||||
|
INNER JOIN item_price_history iph ON iph.item_id = i.id
|
||||||
|
AND iph.valid_from <= oi.created_at
|
||||||
|
AND (iph.valid_to IS NULL OR iph.valid_to > oi.created_at);
|
||||||
|
`
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ CREATE TABLE IF NOT EXISTS ordr_user (
|
|||||||
id SERIAL NOT NULL PRIMARY KEY,
|
id SERIAL NOT NULL PRIMARY KEY,
|
||||||
sub_id TEXT UNIQUE NOT NULL,
|
sub_id TEXT UNIQUE NOT NULL,
|
||||||
user_name TEXT NOT NULL,
|
user_name TEXT NOT NULL,
|
||||||
|
position TEXT DEFAULT "",
|
||||||
active BOOLEAN NOT NULL DEFAULT TRUE,
|
active BOOLEAN NOT NULL DEFAULT TRUE,
|
||||||
is_admin BOOLEAN NOT NULL DEFAULT FALSE
|
is_admin BOOLEAN NOT NULL DEFAULT FALSE
|
||||||
);
|
);
|
||||||
@@ -12,6 +13,7 @@ CREATE TABLE IF NOT EXISTS order_record (
|
|||||||
orderer TEXT NOT NULL,
|
orderer TEXT NOT NULL,
|
||||||
date_due TIMESTAMP NOT NULL,
|
date_due TIMESTAMP NOT NULL,
|
||||||
date_placed TIMESTAMP NOT NULL DEFAULT now(),
|
date_placed TIMESTAMP NOT NULL DEFAULT now(),
|
||||||
|
amount_paid REAL NOT NULL DEFAULT 0,
|
||||||
filled BOOLEAN NOT NULL DEFAULT FALSE,
|
filled BOOLEAN NOT NULL DEFAULT FALSE,
|
||||||
delivered BOOLEAN NOT NULL DEFAULT FALSE
|
delivered BOOLEAN NOT NULL DEFAULT FALSE
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user