This commit is contained in:
blaisadmin
2026-03-25 21:54:50 -04:00
parent a34b585b21
commit 04c74de25a
30 changed files with 6854 additions and 6 deletions
+46
View File
@@ -0,0 +1,46 @@
CREATE EXTENSION IF NOT EXISTS pgcrypto;
CREATE TABLE IF NOT EXISTS calibers (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name VARCHAR(40) NOT NULL UNIQUE,
is_default BOOLEAN NOT NULL DEFAULT FALSE,
is_active BOOLEAN NOT NULL DEFAULT TRUE,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS firearms (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
manufacturer VARCHAR(120) NOT NULL,
model VARCHAR(120) NOT NULL,
category VARCHAR(80) NOT NULL,
caliber VARCHAR(40) NOT NULL,
serial_number VARCHAR(120) NOT NULL UNIQUE,
purchase_price NUMERIC(10, 2) NOT NULL DEFAULT 0,
acquired_on DATE,
image_url TEXT,
notes TEXT,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS ammo_inventory (
caliber_id UUID PRIMARY KEY REFERENCES calibers(id) ON DELETE CASCADE,
rounds_on_hand INT NOT NULL DEFAULT 0 CHECK (rounds_on_hand >= 0),
cost_per_round NUMERIC(10, 2) NOT NULL DEFAULT 0,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO calibers (name, is_default, is_active)
VALUES
('9mm', TRUE, TRUE),
('.22 LR', TRUE, TRUE),
('5.56 NATO', TRUE, TRUE),
('.308 Win', TRUE, TRUE),
('12 Gauge', TRUE, TRUE),
('.45 ACP', TRUE, TRUE)
ON CONFLICT (name) DO NOTHING;
INSERT INTO ammo_inventory (caliber_id, rounds_on_hand, cost_per_round)
SELECT id, 0, 0
FROM calibers
ON CONFLICT (caliber_id) DO NOTHING;