diff options
Diffstat (limited to 'kittystore/storm/schema/__init__.py')
-rw-r--r-- | kittystore/storm/schema/__init__.py | 39 |
1 files changed, 36 insertions, 3 deletions
diff --git a/kittystore/storm/schema/__init__.py b/kittystore/storm/schema/__init__.py index 5f5deab..6dc2f4c 100644 --- a/kittystore/storm/schema/__init__.py +++ b/kittystore/storm/schema/__init__.py @@ -14,7 +14,13 @@ CREATES = { list_name VARCHAR(255) NOT NULL, thread_id VARCHAR(255) NOT NULL, date_active DATETIME NOT NULL, - PRIMARY KEY (list_name, thread_id) + category_id INTEGER, + PRIMARY KEY (list_name, thread_id), + FOREIGN KEY (category_id) REFERENCES category(id) + );""", """ + CREATE TABLE "category" ( + id INTEGER NOT NULL PRIMARY KEY, + name VARCHAR(255) NOT NULL );""", """ CREATE TABLE "email" ( list_name VARCHAR(255) NOT NULL, @@ -63,6 +69,7 @@ CREATES = { 'CREATE INDEX "ix_email_thread_id" ON "email" (thread_id);', 'CREATE INDEX "ix_email_thread_order" ON "email" (thread_order);', 'CREATE INDEX "ix_thread_date_active" ON "thread" (date_active);', + 'CREATE UNIQUE INDEX "ix_category_name" ON "category" (name);', ], "postgres": [ """ @@ -76,8 +83,25 @@ CREATES = { list_name VARCHAR(255) NOT NULL, thread_id VARCHAR(255) NOT NULL, date_active TIMESTAMP WITHOUT TIME ZONE NOT NULL, - PRIMARY KEY (list_name, thread_id) + category_id INTEGER, + PRIMARY KEY (list_name, thread_id), + FOREIGN KEY (category_id) REFERENCES category(id) + );""", """ + CREATE TABLE "category" ( + id INTEGER NOT NULL, + name VARCHAR(255) NOT NULL, + PRIMARY KEY (id) );""", """ + CREATE SEQUENCE category_id_seq + START WITH 1 + INCREMENT BY 1 + NO MAXVALUE + NO MINVALUE + CACHE 1 + ;""", + "ALTER SEQUENCE category_id_seq OWNED BY category.id;", + "ALTER TABLE ONLY category ALTER COLUMN id SET DEFAULT nextval('category_id_seq'::regclass);", + """ CREATE TABLE "email" ( list_name VARCHAR(255) NOT NULL, message_id VARCHAR(255) NOT NULL, @@ -125,6 +149,7 @@ CREATES = { 'CREATE INDEX "ix_email_thread_id" ON "email" USING btree (thread_id);', 'CREATE INDEX "ix_email_thread_order" ON "email" USING btree (thread_order);', 'CREATE INDEX "ix_thread_date_active" ON "thread" USING btree (date_active);', + 'CREATE UNIQUE INDEX "ix_category_name" ON "category" USING btree (name);', ], "mysql": [ """ @@ -138,7 +163,14 @@ CREATES = { list_name VARCHAR(255) NOT NULL, thread_id VARCHAR(255) NOT NULL, date_active DATETIME NOT NULL, - PRIMARY KEY (list_name, thread_id) + category_id INTEGER, + PRIMARY KEY (list_name, thread_id), + FOREIGN KEY (category_id) REFERENCES category(id) + );""", """ + CREATE TABLE `category` ( + id INTEGER NOT NULL AUTO_INCREMENT, + name VARCHAR(255) NOT NULL, + PRIMARY KEY (id) );""", """ CREATE TABLE `email` ( list_name VARCHAR(255) NOT NULL, @@ -187,6 +219,7 @@ CREATES = { 'CREATE INDEX `ix_email_thread_id` ON `email` (thread_id);', 'CREATE INDEX `ix_email_thread_order` ON `email` (thread_order);', 'CREATE INDEX `ix_thread_date_active` ON `thread` (date_active);', + 'CREATE UNIQUE INDEX `ix_category_name` ON `category` (name);', ], } |