create db again
This commit is contained in:
parent
496ebff888
commit
9ecf102c01
1 changed files with 177 additions and 12 deletions
189
oml/setup.py
189
oml/setup.py
|
@ -4,28 +4,193 @@
|
||||||
import os
|
import os
|
||||||
|
|
||||||
import settings
|
import settings
|
||||||
from db import session
|
import db
|
||||||
|
|
||||||
from user.models import List, User
|
from user.models import List, User
|
||||||
|
|
||||||
|
def run_sql(sql):
|
||||||
|
with db.session() as session:
|
||||||
|
session.connection().execute(sql)
|
||||||
|
session.commit()
|
||||||
|
|
||||||
def create_db():
|
def create_db():
|
||||||
if not os.path.exists(settings.db_path):
|
if not os.path.exists(settings.db_path):
|
||||||
print 'create db'
|
sql = '''
|
||||||
session.connection().execute("PRAGMA journal_mode=WAL")
|
CREATE TABLE item (
|
||||||
session.commit()
|
created DATETIME,
|
||||||
|
modified DATETIME,
|
||||||
|
id VARCHAR(32) NOT NULL,
|
||||||
|
info BLOB,
|
||||||
|
meta BLOB,
|
||||||
|
added DATETIME,
|
||||||
|
accessed DATETIME,
|
||||||
|
timesaccessed INTEGER,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
);
|
||||||
|
CREATE TABLE changelog (
|
||||||
|
id INTEGER NOT NULL,
|
||||||
|
created DATETIME,
|
||||||
|
timestamp BIGINT,
|
||||||
|
user_id VARCHAR(43),
|
||||||
|
revision BIGINT,
|
||||||
|
data TEXT,
|
||||||
|
sig VARCHAR(96),
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
);
|
||||||
|
CREATE TABLE user (
|
||||||
|
created DATETIME,
|
||||||
|
modified DATETIME,
|
||||||
|
id VARCHAR(43) NOT NULL,
|
||||||
|
info BLOB,
|
||||||
|
nickname VARCHAR(256),
|
||||||
|
pending VARCHAR(64),
|
||||||
|
queued BOOLEAN,
|
||||||
|
peered BOOLEAN,
|
||||||
|
online BOOLEAN,
|
||||||
|
PRIMARY KEY (id),
|
||||||
|
UNIQUE (nickname),
|
||||||
|
CHECK (queued IN (0, 1)),
|
||||||
|
CHECK (peered IN (0, 1)),
|
||||||
|
CHECK (online IN (0, 1))
|
||||||
|
);
|
||||||
|
CREATE TABLE metadata (
|
||||||
|
created DATETIME,
|
||||||
|
modified DATETIME,
|
||||||
|
id INTEGER NOT NULL,
|
||||||
|
"key" VARCHAR(256),
|
||||||
|
value VARCHAR(256),
|
||||||
|
data BLOB,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
);
|
||||||
|
CREATE TABLE person (
|
||||||
|
name VARCHAR(1024) NOT NULL,
|
||||||
|
sortname VARCHAR,
|
||||||
|
numberofnames INTEGER,
|
||||||
|
PRIMARY KEY (name)
|
||||||
|
);
|
||||||
|
CREATE TABLE transfer (
|
||||||
|
item_id VARCHAR(32) NOT NULL,
|
||||||
|
added DATETIME,
|
||||||
|
progress FLOAT,
|
||||||
|
PRIMARY KEY (item_id),
|
||||||
|
FOREIGN KEY(item_id) REFERENCES item (id)
|
||||||
|
);
|
||||||
|
CREATE TABLE find (
|
||||||
|
id INTEGER NOT NULL,
|
||||||
|
item_id VARCHAR(32),
|
||||||
|
"key" VARCHAR(200),
|
||||||
|
value TEXT,
|
||||||
|
findvalue TEXT,
|
||||||
|
PRIMARY KEY (id),
|
||||||
|
FOREIGN KEY(item_id) REFERENCES item (id)
|
||||||
|
);
|
||||||
|
CREATE INDEX ix_find_key ON find ("key");
|
||||||
|
CREATE TABLE list (
|
||||||
|
id INTEGER NOT NULL,
|
||||||
|
name VARCHAR,
|
||||||
|
index_ INTEGER,
|
||||||
|
type VARCHAR(64),
|
||||||
|
"query" BLOB,
|
||||||
|
user_id VARCHAR(43),
|
||||||
|
PRIMARY KEY (id),
|
||||||
|
FOREIGN KEY(user_id) REFERENCES user (id)
|
||||||
|
);
|
||||||
|
CREATE TABLE useritem (
|
||||||
|
user_id VARCHAR(43),
|
||||||
|
item_id VARCHAR(32),
|
||||||
|
FOREIGN KEY(item_id) REFERENCES item (id),
|
||||||
|
FOREIGN KEY(user_id) REFERENCES user (id)
|
||||||
|
);
|
||||||
|
CREATE TABLE sort (
|
||||||
|
item_id VARCHAR(32) NOT NULL,
|
||||||
|
title VARCHAR(1000),
|
||||||
|
author VARCHAR(1000),
|
||||||
|
publisher VARCHAR(1000),
|
||||||
|
place VARCHAR(1000),
|
||||||
|
country VARCHAR(1000),
|
||||||
|
date VARCHAR(1000),
|
||||||
|
language VARCHAR(1000),
|
||||||
|
pages BIGINT,
|
||||||
|
classification VARCHAR(1000),
|
||||||
|
extension VARCHAR(1000),
|
||||||
|
size BIGINT,
|
||||||
|
created DATETIME,
|
||||||
|
added DATETIME,
|
||||||
|
modified DATETIME,
|
||||||
|
accessed DATETIME,
|
||||||
|
timesaccessed BIGINT,
|
||||||
|
mediastate VARCHAR(1000),
|
||||||
|
transferadded DATETIME,
|
||||||
|
transferprogress FLOAT,
|
||||||
|
id VARCHAR(1000),
|
||||||
|
isbn VARCHAR(1000),
|
||||||
|
asin VARCHAR(1000),
|
||||||
|
lccn VARCHAR(1000),
|
||||||
|
olid VARCHAR(1000),
|
||||||
|
oclc VARCHAR(1000),
|
||||||
|
random BIGINT,
|
||||||
|
PRIMARY KEY (item_id),
|
||||||
|
FOREIGN KEY(item_id) REFERENCES item (id)
|
||||||
|
);
|
||||||
|
CREATE INDEX ix_sort_accessed ON sort (accessed);
|
||||||
|
CREATE INDEX ix_sort_added ON sort (added);
|
||||||
|
CREATE INDEX ix_sort_asin ON sort (asin);
|
||||||
|
CREATE INDEX ix_sort_author ON sort (author);
|
||||||
|
CREATE INDEX ix_sort_classification ON sort (classification);
|
||||||
|
CREATE INDEX ix_sort_country ON sort (country);
|
||||||
|
CREATE INDEX ix_sort_created ON sort (created);
|
||||||
|
CREATE INDEX ix_sort_date ON sort (date);
|
||||||
|
CREATE INDEX ix_sort_extension ON sort (extension);
|
||||||
|
CREATE INDEX ix_sort_id ON sort (id);
|
||||||
|
CREATE INDEX ix_sort_isbn ON sort (isbn);
|
||||||
|
CREATE INDEX ix_sort_language ON sort (language);
|
||||||
|
CREATE INDEX ix_sort_lccn ON sort (lccn);
|
||||||
|
CREATE INDEX ix_sort_mediastate ON sort (mediastate);
|
||||||
|
CREATE INDEX ix_sort_modified ON sort (modified);
|
||||||
|
CREATE INDEX ix_sort_oclc ON sort (oclc);
|
||||||
|
CREATE INDEX ix_sort_olid ON sort (olid);
|
||||||
|
CREATE INDEX ix_sort_pages ON sort (pages);
|
||||||
|
CREATE INDEX ix_sort_place ON sort (place);
|
||||||
|
CREATE INDEX ix_sort_publisher ON sort (publisher);
|
||||||
|
CREATE INDEX ix_sort_random ON sort (random);
|
||||||
|
CREATE INDEX ix_sort_size ON sort (size);
|
||||||
|
CREATE INDEX ix_sort_timesaccessed ON sort (timesaccessed);
|
||||||
|
CREATE INDEX ix_sort_title ON sort (title);
|
||||||
|
CREATE INDEX ix_sort_transferadded ON sort (transferadded);
|
||||||
|
CREATE INDEX ix_sort_transferprogress ON sort (transferprogress);
|
||||||
|
CREATE TABLE file (
|
||||||
|
created DATETIME,
|
||||||
|
modified DATETIME,
|
||||||
|
sha1 VARCHAR(32) NOT NULL,
|
||||||
|
path VARCHAR(2048),
|
||||||
|
info BLOB,
|
||||||
|
item_id VARCHAR(32),
|
||||||
|
PRIMARY KEY (sha1),
|
||||||
|
FOREIGN KEY(item_id) REFERENCES item (id)
|
||||||
|
);
|
||||||
|
CREATE TABLE listitem (
|
||||||
|
list_id INTEGER,
|
||||||
|
item_id VARCHAR(32),
|
||||||
|
FOREIGN KEY(item_id) REFERENCES item (id),
|
||||||
|
FOREIGN KEY(list_id) REFERENCES list (id)
|
||||||
|
);
|
||||||
|
PRAGMA journal_mode=WAL
|
||||||
|
'''
|
||||||
|
for statement in sql.split(';'):
|
||||||
|
run_sql(statement)
|
||||||
upgrade_db('0')
|
upgrade_db('0')
|
||||||
|
|
||||||
def upgrade_db(old):
|
def upgrade_db(old):
|
||||||
if old <= '20140527-120-3cb9819':
|
if old <= '20140527-120-3cb9819':
|
||||||
create_index('ix_find_findvalue', 'find', ['findvalue'], unique=False)
|
run_sql('CREATE INDEX ix_find_findvalue ON find (findvalue)')
|
||||||
|
|
||||||
def create_default_lists(user_id=None):
|
def create_default_lists(user_id=None):
|
||||||
user_id = user_id or settings.USER_ID
|
with db.session():
|
||||||
user = User.get_or_create(user_id)
|
user_id = user_id or settings.USER_ID
|
||||||
user.update_name()
|
user = User.get_or_create(user_id)
|
||||||
for list in settings.config['lists']:
|
user.update_name()
|
||||||
l = List.get(user_id, list['title'])
|
for list in settings.config['lists']:
|
||||||
if not l:
|
l = List.get(user_id, list['title'])
|
||||||
l = List.create(user_id, list['title'], list.get('query'))
|
if not l:
|
||||||
|
l = List.create(user_id, list['title'], list.get('query'))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue