if table "user" doesn't exist, db is created

multi-deployment
b3yond 2018-03-22 10:25:00 +01:00
parent a176f856d8
commit 390f4dc76e
1 changed files with 74 additions and 72 deletions

146
db.py
View File

@ -14,82 +14,84 @@ class DB(object):
dbfile = ':memory:' dbfile = ':memory:'
self.conn = sqlite3.connect(dbfile) self.conn = sqlite3.connect(dbfile)
self.cur = self.conn.cursor() self.cur = self.conn.cursor()
self.cur.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='user';")
if self.cur.fetchone()[0] != 'user':
self.create()
self.secret = urandom(32) self.secret = urandom(32)
self.create()
def create(self): def create(self):
# init db # init db
self.cur.executescript(''' self.cur.executescript('\
CREATE TABLE "user" ( CREATE TABLE "user" (\
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,\
`email` TEXT, `email` TEXT,\
`passhash` TEXT, `passhash` TEXT,\
`enabled` INTEGER DEFAULT 1 `enabled` INTEGER DEFAULT 1\
); );\
CREATE TABLE "twitter_request_tokens" ( CREATE TABLE "twitter_request_tokens" (\
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,\
`user_id` INTEGER, `user_id` INTEGER,\
`request_token` TEXT, `request_token` TEXT,\
FOREIGN KEY(`user_id`) REFERENCES `user` ( `id` ) FOREIGN KEY(`user_id`) REFERENCES `user` ( `id` )\
); );\
CREATE TABLE "twitter_accounts" ( CREATE TABLE "twitter_accounts" (\
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,\
`user_id` INTEGER, `user_id` INTEGER,\
`client_id` TEXT, `client_id` TEXT,\
`client_secret` TEXT, `client_secret` TEXT,\
FOREIGN KEY(`user_id`) REFERENCES `user` ( `id` ) FOREIGN KEY(`user_id`) REFERENCES `user` ( `id` )\
); );\
CREATE TABLE "trigger_good" ( CREATE TABLE "trigger_good" (\
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,\
`user_id` INTEGER, `user_id` INTEGER,\
`words` TEXT, `words` TEXT,\
FOREIGN KEY(`user_id`) REFERENCES `user` ( `id` ) FOREIGN KEY(`user_id`) REFERENCES `user` ( `id` )\
); );\
CREATE TABLE "trigger_bad" ( CREATE TABLE "trigger_bad" (\
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,\
`user_id` INTEGER, `user_id` INTEGER,\
`words` TEXT, `words` TEXT,\
FOREIGN KEY(`user_id`) REFERENCES `user` ( `id` ) FOREIGN KEY(`user_id`) REFERENCES `user` ( `id` )\
); );\
CREATE TABLE "mastodon_instances" ( CREATE TABLE "mastodon_instances" (\
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,\
`instance` TEXT, `instance` TEXT,\
`client_id` TEXT, `client_id` TEXT,\
`client_secret` TEXT `client_secret` TEXT\
); );\
CREATE TABLE "mastodon_accounts" ( CREATE TABLE "mastodon_accounts" (\
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,\
`user_id` INTEGER, `user_id` INTEGER,\
`access_token` TEXT, `access_token` TEXT,\
`instance_id` TEXT, `instance_id` TEXT,\
`active` INTEGER, `active` INTEGER,\
FOREIGN KEY(`user_id`) REFERENCES `user` ( `id` ), FOREIGN KEY(`user_id`) REFERENCES `user` ( `id` ),\
FOREIGN KEY(`instance_id`) REFERENCES `mastodon_instances` ( `id` ) FOREIGN KEY(`instance_id`) REFERENCES `mastodon_instances` ( `id` )\
); );\
CREATE TABLE "seen_toots" ( CREATE TABLE "seen_toots" (\
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,\
`user_id` INTEGER, `user_id` INTEGER,\
`mastodon_accounts_id` INTEGER, `mastodon_accounts_id` INTEGER,\
`toot_id` TEXT, `toot_id` TEXT,\
FOREIGN KEY(`user_id`) REFERENCES `user` ( `id` ), FOREIGN KEY(`user_id`) REFERENCES `user` ( `id` ),\
FOREIGN KEY(`mastodon_accounts_id`) REFERENCES `mastodon_accounts` ( `id` ) FOREIGN KEY(`mastodon_accounts_id`) REFERENCES `mastodon_accounts` ( `id` )\
); );\
CREATE TABLE "mail" ( CREATE TABLE "mail" (\
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,\
`user_id` INTEGER, `user_id` INTEGER,\
`email` TEXT, `email` TEXT,\
`active` INTEGER, `active` INTEGER,\
FOREIGN KEY(`user_id`) REFERENCES `user` ( `id` ) FOREIGN KEY(`user_id`) REFERENCES `user` ( `id` )\
); );\
CREATE TABLE "seen_tweets" ( CREATE TABLE "seen_tweets" (\
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,\
`user_id` INTEGER, `user_id` INTEGER,\
`twitter_accounts_id` INTEGER, `twitter_accounts_id` INTEGER,\
`tweet_id` TEXT, `tweet_id` TEXT,\
FOREIGN KEY(`user_id`) REFERENCES `user` ( `id` ) FOREIGN KEY(`user_id`) REFERENCES `user` ( `id` )\
FOREIGN KEY(`twitter_accounts_id`) REFERENCES `twitter_accounts` ( `id` ) FOREIGN KEY(`twitter_accounts_id`) REFERENCES `twitter_accounts` ( `id` )\
); );\
''') ')
def token(self, email, password): def token(self, email, password):
return jwt.encode({ return jwt.encode({