73 lines
3.0 KiB
SQL
73 lines
3.0 KiB
SQL
-- Add core columns to items table for efficient querying
|
|
|
|
-- Item classification
|
|
ALTER TABLE items ADD COLUMN item_type TEXT NOT NULL DEFAULT 'resource';
|
|
ALTER TABLE items ADD COLUMN level INTEGER NOT NULL DEFAULT 1;
|
|
|
|
-- Economy
|
|
ALTER TABLE items ADD COLUMN price INTEGER NOT NULL DEFAULT 0;
|
|
|
|
-- Stacking and storage
|
|
ALTER TABLE items ADD COLUMN max_stack INTEGER NOT NULL DEFAULT 1;
|
|
ALTER TABLE items ADD COLUMN storage_size INTEGER NOT NULL DEFAULT 0;
|
|
|
|
-- Skills
|
|
ALTER TABLE items ADD COLUMN skill TEXT NOT NULL DEFAULT 'none';
|
|
ALTER TABLE items ADD COLUMN tool TEXT NOT NULL DEFAULT 'none';
|
|
|
|
-- Visual/UI
|
|
ALTER TABLE items ADD COLUMN description TEXT NOT NULL DEFAULT '';
|
|
|
|
-- Boolean flags (stored as INTEGER: 0=false, 1=true)
|
|
ALTER TABLE items ADD COLUMN two_handed INTEGER NOT NULL DEFAULT 0;
|
|
ALTER TABLE items ADD COLUMN undroppable INTEGER NOT NULL DEFAULT 0;
|
|
ALTER TABLE items ADD COLUMN undroppable_on_death INTEGER NOT NULL DEFAULT 0;
|
|
ALTER TABLE items ADD COLUMN unequip_destroy INTEGER NOT NULL DEFAULT 0;
|
|
ALTER TABLE items ADD COLUMN generate_icon INTEGER NOT NULL DEFAULT 0;
|
|
ALTER TABLE items ADD COLUMN hide_milestone INTEGER NOT NULL DEFAULT 0;
|
|
ALTER TABLE items ADD COLUMN cannot_craft_exceptional INTEGER NOT NULL DEFAULT 0;
|
|
ALTER TABLE items ADD COLUMN storage_all_items INTEGER NOT NULL DEFAULT 0;
|
|
|
|
-- Ability and item IDs
|
|
ALTER TABLE items ADD COLUMN ability_id INTEGER NOT NULL DEFAULT 0;
|
|
ALTER TABLE items ADD COLUMN special_ability INTEGER NOT NULL DEFAULT 0;
|
|
ALTER TABLE items ADD COLUMN learn_ability_id INTEGER NOT NULL DEFAULT 0;
|
|
ALTER TABLE items ADD COLUMN book_id INTEGER NOT NULL DEFAULT 0;
|
|
ALTER TABLE items ADD COLUMN swap_item INTEGER NOT NULL DEFAULT 0;
|
|
|
|
-- Create indexes for commonly queried columns
|
|
CREATE INDEX idx_items_type ON items(item_type);
|
|
CREATE INDEX idx_items_level ON items(level);
|
|
CREATE INDEX idx_items_price ON items(price);
|
|
CREATE INDEX idx_items_skill ON items(skill);
|
|
|
|
-- Crafting recipes table
|
|
CREATE TABLE crafting_recipes (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
product_item_id INTEGER NOT NULL,
|
|
skill TEXT NOT NULL,
|
|
level INTEGER NOT NULL,
|
|
workbench_id INTEGER NOT NULL,
|
|
xp INTEGER NOT NULL DEFAULT 0,
|
|
unlocked_by_default INTEGER NOT NULL DEFAULT 1,
|
|
checks TEXT, -- nullable, for conditional recipes
|
|
FOREIGN KEY (product_item_id) REFERENCES items(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE INDEX idx_crafting_recipes_product ON crafting_recipes(product_item_id);
|
|
CREATE INDEX idx_crafting_recipes_skill ON crafting_recipes(skill);
|
|
CREATE INDEX idx_crafting_recipes_level ON crafting_recipes(level);
|
|
CREATE INDEX idx_crafting_recipes_workbench ON crafting_recipes(workbench_id);
|
|
|
|
-- Crafting recipe ingredients (many-to-many)
|
|
CREATE TABLE crafting_recipe_items (
|
|
recipe_id INTEGER NOT NULL,
|
|
item_id INTEGER NOT NULL,
|
|
amount INTEGER NOT NULL,
|
|
PRIMARY KEY (recipe_id, item_id),
|
|
FOREIGN KEY (recipe_id) REFERENCES crafting_recipes(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (item_id) REFERENCES items(id)
|
|
);
|
|
|
|
CREATE INDEX idx_crafting_recipe_items_item ON crafting_recipe_items(item_id);
|