76 lines
2.2 KiB
SQL
76 lines
2.2 KiB
SQL
-- name: GetComponentItemByID :one
|
|
SELECT * FROM component_items
|
|
WHERE id = sqlc.arg(id);
|
|
|
|
-- name: ListComponentItems :many
|
|
SELECT * FROM component_items
|
|
ORDER BY created_at DESC;
|
|
|
|
-- name: CreateComponentItem :one
|
|
INSERT INTO component_items (component_id,container_id,quantity, status, metadata, created_at)
|
|
VALUES (
|
|
sqlc.arg(component_id),
|
|
sqlc.arg(container_id),
|
|
sqlc.arg(quantity),
|
|
sqlc.arg(status),
|
|
sqlc.arg(metadata),
|
|
sqlc.arg(created_at)
|
|
)
|
|
RETURNING *;
|
|
|
|
-- name: UpdateComponentItem :one
|
|
UPDATE component_items
|
|
SET component_id = CASE WHEN sqlc.arg(component_id) = '' THEN component_id ELSE sqlc.arg(component_id) END,
|
|
container_id = CASE WHEN sqlc.arg(container_id) = '' THEN container_id ELSE sqlc.arg(container_id) END,
|
|
metadata = coalesce(sqlc.arg(metadata), metadata),
|
|
updated_at = sqlc.arg(updated_at)
|
|
WHERE id = sqlc.arg(id)
|
|
RETURNING *;
|
|
|
|
-- name: DeleteComponentItem :execrows
|
|
DELETE FROM component_items
|
|
WHERE id = $1;
|
|
|
|
-- name: UpdateComponentItemStatus :one
|
|
UPDATE component_items
|
|
SET status = sqlc.arg(status),
|
|
updated_at = sqlc.arg(updated_at)
|
|
WHERE id = sqlc.arg(id)
|
|
RETURNING *;
|
|
|
|
-- name: UpdateComponentItemQuantity :one
|
|
UPDATE component_items
|
|
SET quantity = sqlc.arg(quantity),
|
|
updated_at = sqlc.arg(updated_at)
|
|
WHERE id = sqlc.arg(id)
|
|
RETURNING *;
|
|
|
|
-- name: GetComponentItemByComponentContainerStatus :one
|
|
SELECT * FROM component_items
|
|
WHERE component_id = sqlc.arg(component_id)
|
|
AND container_id = sqlc.arg(container_id)
|
|
AND status = sqlc.arg(status);
|
|
|
|
-- name: FindComponentItem :many
|
|
SELECT
|
|
c.name AS component_name,
|
|
ct.name AS type_name,
|
|
ci.quantity,
|
|
ci.status,
|
|
cn.name AS container_name,
|
|
cn.container_type,
|
|
s.name AS shelf_name,
|
|
cb.name AS cabinet_name,
|
|
r.name AS room_name,
|
|
w.name AS warehouse_name
|
|
FROM component_items ci
|
|
JOIN components c ON ci.component_id = c.id
|
|
JOIN component_types ct ON c.component_type_id = ct.id
|
|
JOIN containers cn ON ci.container_id = cn.id
|
|
JOIN shelves s ON cn.shelf_id = s.id
|
|
JOIN cabinets cb ON s.cabinet_id = cb.id
|
|
JOIN rooms r ON cb.room_id = r.id
|
|
JOIN warehouses w ON r.warehouse_id = w.id
|
|
WHERE ci.component_id = sqlc.arg(componentId) AND ci.quantity > 0;
|
|
|