Add brand set and gear administration
This commit is contained in:
+49
-1
@@ -42,7 +42,7 @@ CREATE UNIQUE INDEX IF NOT EXISTS stat_attributes_name_nocase_idx ON stat_attrib
|
||||
CREATE TABLE IF NOT EXISTS talents (
|
||||
id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
category TEXT NOT NULL CHECK(category IN ('Weapon', 'Backpack', 'Vest')),
|
||||
category TEXT NOT NULL CHECK(category IN ('Weapon', 'Backpack', 'Body Armor', 'Vest')),
|
||||
active INTEGER NOT NULL DEFAULT 1,
|
||||
created_at TEXT NOT NULL,
|
||||
updated_at TEXT NOT NULL
|
||||
@@ -91,3 +91,51 @@ CREATE TABLE IF NOT EXISTS talent_tier_effects (
|
||||
created_at TEXT NOT NULL,
|
||||
UNIQUE(talent_tier_id, stat_attribute_id)
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS brand_sets (
|
||||
id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
active INTEGER NOT NULL DEFAULT 1 CHECK(active IN (0, 1)),
|
||||
created_at TEXT NOT NULL,
|
||||
updated_at TEXT NOT NULL
|
||||
);
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS brand_sets_name_nocase_idx ON brand_sets(name COLLATE NOCASE);
|
||||
CREATE TABLE IF NOT EXISTS brand_set_effects (
|
||||
id TEXT PRIMARY KEY,
|
||||
brand_set_id TEXT NOT NULL REFERENCES brand_sets(id) ON DELETE CASCADE,
|
||||
pieces_required INTEGER NOT NULL CHECK(pieces_required IN (2, 3, 4)),
|
||||
stat_attribute_id TEXT NOT NULL REFERENCES stat_attributes(id),
|
||||
value REAL NOT NULL CHECK(value >= 0),
|
||||
created_at TEXT NOT NULL,
|
||||
updated_at TEXT NOT NULL,
|
||||
UNIQUE(brand_set_id, pieces_required)
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS gear (
|
||||
id TEXT PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
slot TEXT NOT NULL CHECK(slot IN ('Holster', 'Gloves', 'Backpack', 'Knee Pads', 'Body Armor', 'Mask')),
|
||||
tier INTEGER NOT NULL CHECK(tier BETWEEN 0 AND 2),
|
||||
level INTEGER NOT NULL CHECK(level BETWEEN 1 AND 50),
|
||||
base_health_min REAL NOT NULL CHECK(base_health_min >= 0),
|
||||
base_health_max REAL NOT NULL CHECK(base_health_max >= base_health_min),
|
||||
base_armor_min REAL,
|
||||
base_armor_max REAL,
|
||||
active INTEGER NOT NULL DEFAULT 1 CHECK(active IN (0, 1)),
|
||||
created_at TEXT NOT NULL,
|
||||
updated_at TEXT NOT NULL,
|
||||
CHECK(
|
||||
(slot IN ('Gloves', 'Knee Pads', 'Body Armor') AND base_armor_min IS NOT NULL AND base_armor_max IS NOT NULL AND base_armor_min >= 0 AND base_armor_max >= base_armor_min)
|
||||
OR
|
||||
(slot NOT IN ('Gloves', 'Knee Pads', 'Body Armor') AND base_armor_min IS NULL AND base_armor_max IS NULL)
|
||||
)
|
||||
);
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS gear_name_nocase_idx ON gear(name COLLATE NOCASE);
|
||||
CREATE TABLE IF NOT EXISTS gear_brand_sets (
|
||||
gear_id TEXT NOT NULL REFERENCES gear(id) ON DELETE CASCADE,
|
||||
brand_set_id TEXT NOT NULL REFERENCES brand_sets(id),
|
||||
PRIMARY KEY(gear_id, brand_set_id)
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS gear_talents (
|
||||
gear_id TEXT NOT NULL REFERENCES gear(id) ON DELETE CASCADE,
|
||||
talent_id TEXT NOT NULL REFERENCES talents(id),
|
||||
PRIMARY KEY(gear_id, talent_id)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user