Merge branch 'refactor-schema'

merge-requests/15/head
James Miller 2019-08-06 15:41:50 -05:00
commit 130b6e3e8a
9 changed files with 87 additions and 64 deletions

View File

@ -1,9 +1,9 @@
-- -*- mode:sql sql-product:sqlite -*- -- -*- mode:sql sql-product:sqlite -*-
INSERT INTO sizes (size_id, short_name) VALUES INSERT INTO sizes (size_id, short_name, space_in_ft, reach_tall_ft, reach_long_ft) VALUES
(1, 'Tiny'), (1,'Tiny',4,0,0),
(2, 'Small'), (2,'Small',5,5,5),
(3, 'Medium'), (3,'Medium',5,5,5),
(4, 'Large'), (4,'Large',10,10,5),
(5, 'Huge'), (5,'Huge',15,15,10),
(6, 'Gargantuan'); (6,'Gargantuan',20,20,15);

View File

@ -3,6 +3,10 @@ del pf2.db
:: Loading schema :: Loading schema
sqlite3 pf2.db < schema/abilityscores.sql sqlite3 pf2.db < schema/abilityscores.sql
sqlite3 pf2.db < schema/langs.sql
sqlite3 pf2.db < schema/traits.sql
sqlite3 pf2.db < schema/feats.sql
sqlite3 pf2.db < schema/senses.sql
sqlite3 pf2.db < schema/ancestries.sql sqlite3 pf2.db < schema/ancestries.sql
:: Loading data :: Loading data

View File

@ -2,6 +2,16 @@ rm pf2.db
echo 'loading schema' echo 'loading schema'
echo 'schema/abilityscores.sql' echo 'schema/abilityscores.sql'
sqlite3 pf2.db < schema/abilityscores.sql sqlite3 pf2.db < schema/abilityscores.sql
echo 'schema/sizes.sql'
sqlite3 pf2.db < schema/sizes.sql
echo 'schema/langs.sql'
sqlite3 pf2.db < schema/langs.sql
echo 'schema/traits.sql'
sqlite3 pf2.db < schema/traits.sql
echo 'schema/feats.sql'
sqlite3 pf2.db < schema/feats.sql
echo 'schema/senses.sql'
sqlite3 pf2.db < schema/senses.sql
echo 'schema/ancestries.sql' echo 'schema/ancestries.sql'
sqlite3 pf2.db < schema/ancestries.sql sqlite3 pf2.db < schema/ancestries.sql
echo 'loading data' echo 'loading data'

View File

@ -1,16 +1,13 @@
-- -*- mode:sql sql-product:sqlite -*- -- -*- mode:sql sql-product:sqlite -*-
/* /*
TODO Need to decide on whether to do a massive feats table, or to split feats TODO Need to decide on whether to do a massive feats table, or to split feats
into separate tables for general feats, ancestry feats, background feats, etc... into separate tables for general feats, ancestry feats, background feats, etc...
I think one big feat table that has a feat type in it and then an ancestry_feat I think one big feat table that has a feat type in it and then an ancestry_feat
table that matches feats to ancestries, etc.. table that matches feats to ancestries, etc..
*/ */
CREATE TABLE ancestries ( CREATE TABLE ancestries (
ancestry_id INTEGER PRIMARY KEY, ancestry_id INTEGER PRIMARY KEY,
short_name TEXT NOT NULL UNIQUE, short_name TEXT NOT NULL UNIQUE,
@ -39,12 +36,6 @@ CREATE TABLE ancestries_flaws (
FOREIGN KEY (abilityscores_id) REFERENCES abilityscores(abilityscores_id) FOREIGN KEY (abilityscores_id) REFERENCES abilityscores(abilityscores_id)
); );
/* has partial data */
CREATE TABLE visions (
vision_id INTEGER PRIMARY KEY,
short_name TEXT NOT NULL UNIQUE,
description TEXT NOT NULL
);
/* Need to figure out how to model heritages that also have reactions / feats /* Need to figure out how to model heritages that also have reactions / feats
etc.. */ etc.. */
@ -65,22 +56,6 @@ CREATE TABLE ancestries_heritages (
FOREIGN KEY (heritage_id) REFERENCES heritages(heritage_id) FOREIGN KEY (heritage_id) REFERENCES heritages(heritage_id)
); );
/* TODO can the description var be UNIQUE? */
/* has partial data done */
CREATE TABLE traits (
trait_id INTEGER PRIMARY KEY,
-- short_name TEXT NOT NULL UNIQUE,
traittype INTEGER,
short_name TEXT NOT NULL,
description TEXT NOT NULL,
FOREIGN KEY (traittype) REFERENCES traittypes(traittypes_id)
);
CREATE TABLE traittypes (
traittype_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
/* TODO THIS TABLE IS LIKELY NOT NEEDED. THANKS WES! */ /* TODO THIS TABLE IS LIKELY NOT NEEDED. THANKS WES! */
CREATE TABLE heritages_traits ( CREATE TABLE heritages_traits (
@ -102,16 +77,6 @@ CREATE TABLE ancestries_traits (
FOREIGN KEY (trait_id) REFERENCES traits(trait_id) FOREIGN KEY (trait_id) REFERENCES traits(trait_id)
); );
CREATE TABLE sizes (
size_id INTEGER PRIMARY KEY,
short_name TEXT NOT NULL UNIQUE
);
CREATE TABLE langs (
lang_id INTEGER PRIMARY KEY,
short_name TEXT NOT NULL UNIQUE
);
CREATE TABLE ancestries_langs ( CREATE TABLE ancestries_langs (
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY,
ancestry_id INTEGER NOT NULL, ancestry_id INTEGER NOT NULL,
@ -119,7 +84,6 @@ CREATE TABLE ancestries_langs (
FOREIGN KEY (ancestry_id) REFERENCES ancestries(ancestry_id), FOREIGN KEY (ancestry_id) REFERENCES ancestries(ancestry_id),
FOREIGN KEY (lang_id) REFERENCES langs(lang_id)); FOREIGN KEY (lang_id) REFERENCES langs(lang_id));
CREATE TABLE ancestry_additionalangs ( CREATE TABLE ancestry_additionalangs (
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY,
ancestry_id INTEGER NOT NULL, ancestry_id INTEGER NOT NULL,
@ -127,24 +91,3 @@ CREATE TABLE ancestry_additionalangs (
FOREIGN KEY (ancestry_id) REFERENCES ancestries(ancestry_id), FOREIGN KEY (ancestry_id) REFERENCES ancestries(ancestry_id),
FOREIGN KEY (lang_id) REFERENCES langs(lang_id) FOREIGN KEY (lang_id) REFERENCES langs(lang_id)
); );
/* Need to rethink how to model the various prerequisites */
CREATE TABLE feats (
feat_id INTEGER PRIMARY KEY,
short_name TEXT NOT NULL UNIQUE,
prereq_feats INTEGER,
prereq_ability_scores INTEGER,
prereq_proficiency_ranks INTEGER,
frequency TEXT,
triggers TEXT,
reqs TEXT
);
CREATE TABLE feats_traits (
id INTEGER PRIMARY KEY,
feat_id INTEGER NOT NULL,
trait_id INTEGER NOT NULL,
FOREIGN KEY (feat_id) REFERENCES feats(feat_id),
FOREIGN KEY (trait_id) REFERENCES traits(trait_id)
);

24
schema/feats.sql 100644
View File

@ -0,0 +1,24 @@
-- -*- mode:sql sql-product:sqlite -*-
/* MUST BE CALLED AFTER TRAITS TABLE IS FORMED */
/* Need to rethink how to model the various prerequisites */
CREATE TABLE feats (
feat_id INTEGER PRIMARY KEY,
short_name TEXT NOT NULL UNIQUE,
prereq_feats INTEGER,
prereq_ability_scores INTEGER,
prereq_proficiency_ranks INTEGER,
frequency TEXT,
triggers TEXT,
reqs TEXT
);
CREATE TABLE feats_traits (
id INTEGER PRIMARY KEY,
feat_id INTEGER NOT NULL,
trait_id INTEGER NOT NULL,
FOREIGN KEY (feat_id) REFERENCES feats(feat_id),
FOREIGN KEY (trait_id) REFERENCES traits(trait_id)
);

6
schema/langs.sql 100644
View File

@ -0,0 +1,6 @@
-- -*- mode:sql sql-product:sqlite -*-
CREATE TABLE langs (
lang_id INTEGER PRIMARY KEY,
short_name TEXT NOT NULL UNIQUE
);

View File

@ -0,0 +1,9 @@
-- -*- mode:sql sql-product:sqlite -*-
/* TODO change visions to a senses table */
CREATE TABLE visions (
vision_id INTEGER PRIMARY KEY,
short_name TEXT NOT NULL UNIQUE,
description TEXT NOT NULL
);

10
schema/sizes.sql 100644
View File

@ -0,0 +1,10 @@
-- -*- mode:sql sql-product:sqlite -*-
CREATE TABLE sizes (
size_id INTEGER PRIMARY KEY,
short_name TEXT NOT NULL UNIQUE,
space_in_ft INTEGER NOT NULL,
reach_tall_ft INTEGER NOT NULL,
reach_long_ft INTEGER NOT NULL
);

17
schema/traits.sql 100644
View File

@ -0,0 +1,17 @@
-- -*- mode:sql sql-product:sqlite -*-
CREATE TABLE traittypes (
traittype_id INTEGER PRIMARY KEY,
name TEXT NOT NULL
);
/* TODO can the description var be UNIQUE? */
/* has partial data done */
CREATE TABLE traits (
trait_id INTEGER PRIMARY KEY,
traittype INTEGER,
short_name TEXT NOT NULL,
description TEXT NOT NULL,
FOREIGN KEY (traittype) REFERENCES traittypes(traittypes_id)
);