PRAGMA foreign_keys = ON; CREATE TABLE users ( id integer primary key autoincrement, name varchar(32) not null ); CREATE TABLE resource( id integer primary key autoincrement, name varchar(32) not null unique ); CREATE TABLE staking_source( id integer primary key autoincrement, user_id int not null, address varchar(128) not null, created_at timestamp DEFAULT (current_timestamp), CONSTRAINT fk_user FOREIGN KEY(user_id) REFERENCES users(id) ); CREATE TABLE resource_well( id integer primary key autoincrement, source_id int not null, resource_id int not null, supply int not null, CONSTRAINT fk_rid FOREIGN KEY(resource_id) REFERENCES resource(id), CONSTRAINT fk_sid FOREIGN KEY(source_id) REFERENCES staking_source(id) ON DELETE CASCADE ); CREATE TABLE staking_event( id integer primary key autoincrement, well_id int not null, source_id int not null, inventory_item_id int not null, duration_in_mins int not null, created_at timestamp DEFAULT (current_timestamp), CONSTRAINT fk_sid FOREIGN KEY(source_id) REFERENCES staking_source(id) CONSTRAINT fk_wid FOREIGN KEY(well_id) REFERENCES resource_well(id) CONSTRAINT fk_iiid FOREIGN KEY(inventory_item_id) REFERENCES inventory_item(id) ); CREATE TABLE claim_event( id integer primary key autoincrement, claim_amount int not null, staking_event_id int not null, created_at timestamp DEFAULT (current_timestamp), CONSTRAINT fk_se_id FOREIGN KEY(staking_event_id) REFERENCES staking_event(id) ); CREATE TABLE upgrade_event( id integer primary key autoincrement, inventory_item_id int not null, created_at timestamp DEFAULT (current_timestamp), CONSTRAINT fk_iid FOREIGN KEY(inventory_item_id) REFERENCES inventory_item(id) ); CREATE TABLE store_item( id integer primary key autoincrement, name varchar(128) not null, currency int not null, price int not null, target_resource int not null, claim_amount int not null, CONSTRAINT fk_rid FOREIGN KEY(currency) REFERENCES resource(id) CONSTRAINT fk_targetid FOREIGN KEY(target_resource) REFERENCES resource(id) ); CREATE TABLE inventory_item( id integer primary key autoincrement, user_id int not null, store_item_id int not null, created_at timestamp DEFAULT (current_timestamp), CONSTRAINT fk_user FOREIGN KEY(user_id) REFERENCES users(id) CONSTRAINT fk_sitemid FOREIGN KEY(store_item_id) REFERENCES store_item(id) ); CREATE TABLE bank_account( id integer primary key autoincrement, user_id int not null, resource_id int not null, balance int not null default 0 CHECK (balance >= 0), CONSTRAINT fk_user FOREIGN KEY(user_id) REFERENCES users(id), CONSTRAINT fk_resource FOREIGN KEY(resource_id) REFERENCES resource(id) );