chore: perauset customer project

This commit is contained in:
e2e
2026-07-11 08:54:43 +02:00
commit 49d05dfa0b
293 changed files with 28421 additions and 0 deletions

49
sql/0011-inventory.sql Normal file
View File

@@ -0,0 +1,49 @@
-- ============================================================
-- Inventory enum types
-- ============================================================
CREATE TYPE app.inventory_request_status AS ENUM ('submitted', 'approved', 'rejected', 'fulfilled', 'cancelled');
-- ============================================================
-- Inventory items
-- ============================================================
CREATE TABLE app.inventory_item (
item_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name TEXT NOT NULL,
unit TEXT NOT NULL DEFAULT 'unit',
current_quantity NUMERIC NOT NULL DEFAULT 0,
minimum_quantity NUMERIC NOT NULL DEFAULT 0,
is_active BOOLEAN NOT NULL DEFAULT true,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX idx_inventory_item_active ON app.inventory_item(is_active);
-- ============================================================
-- Inventory requests
-- ============================================================
CREATE TABLE app.inventory_request (
request_id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
requested_by_user_id UUID NOT NULL REFERENCES app."user"(user_id),
item_id UUID REFERENCES app.inventory_item(item_id),
item_name TEXT NOT NULL,
quantity NUMERIC NOT NULL,
unit TEXT NOT NULL,
purpose TEXT,
status app.inventory_request_status NOT NULL DEFAULT 'submitted',
reviewed_by_user_id UUID REFERENCES app."user"(user_id),
reviewed_at TIMESTAMPTZ,
review_notes TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX idx_inventory_request_status ON app.inventory_request(status);
CREATE INDEX idx_inventory_request_user ON app.inventory_request(requested_by_user_id);
-- Enable audit
SELECT app.enable_audit('inventory_item', 'item_id');
SELECT app.enable_audit('inventory_request', 'request_id');