33 lines
1.6 KiB
SQL
33 lines
1.6 KiB
SQL
-- +goose Up
|
|
|
|
-- Same identity pattern as cartridge_recurring_items (059) — a QR label
|
|
-- stuck on the physical printer chassis is what makes "the same one"
|
|
-- unambiguous across repeat visits (client+model alone can't distinguish
|
|
-- a fleet of identical office printers). Scanning it back at intake
|
|
-- pre-fills the device fields and re-links the new order to this same
|
|
-- physical unit's history.
|
|
CREATE TABLE printer_recurring_items (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
client_id UUID NOT NULL REFERENCES clients(id) ON DELETE RESTRICT,
|
|
device_brand TEXT,
|
|
device_model TEXT,
|
|
serial_number TEXT,
|
|
-- Same alphabet/length as cartridge codes (059) — see
|
|
-- internal/order/printerqr.go's generateCode.
|
|
code TEXT NOT NULL UNIQUE,
|
|
created_by_staff_id UUID NOT NULL,
|
|
created_by_staff_name TEXT NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
CREATE INDEX printer_recurring_items_client_id_idx ON printer_recurring_items (client_id);
|
|
|
|
-- Nullable: only printers someone bothered to label carry this link — see
|
|
-- cartridge_items.recurring_item_id's doc comment (059) for the same
|
|
-- rationale.
|
|
ALTER TABLE orders ADD COLUMN printer_recurring_item_id UUID REFERENCES printer_recurring_items(id);
|
|
CREATE INDEX orders_printer_recurring_item_id_idx ON orders (printer_recurring_item_id) WHERE printer_recurring_item_id IS NOT NULL;
|
|
|
|
-- +goose Down
|
|
ALTER TABLE orders DROP COLUMN printer_recurring_item_id;
|
|
DROP TABLE printer_recurring_items;
|