Fixed database issue.
This commit is contained in:
parent
9e99ad8b42
commit
6c6c7354c8
195
main.py
195
main.py
@ -39,83 +39,124 @@ db = AsyncDataSet(DB_PATH)
|
|||||||
|
|
||||||
async def init_db():
|
async def init_db():
|
||||||
# Users table
|
# Users table
|
||||||
await db.create_table("users", {
|
await db.query_raw("""
|
||||||
"id": "INTEGER PRIMARY KEY AUTOINCREMENT",
|
CREATE TABLE users (
|
||||||
"username": "TEXT NOT NULL",
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
"email": "TEXT NOT NULL",
|
username TEXT UNIQUE NOT NULL,
|
||||||
"password_hash": "TEXT NOT NULL",
|
email TEXT UNIQUE NOT NULL,
|
||||||
"score": "INTEGER DEFAULT 0",
|
password_hash TEXT NOT NULL,
|
||||||
"about": "TEXT DEFAULT ''",
|
score INTEGER DEFAULT 0,
|
||||||
"location": "TEXT DEFAULT ''",
|
about TEXT DEFAULT '',
|
||||||
"skills": "TEXT DEFAULT ''",
|
location TEXT DEFAULT '',
|
||||||
"github": "TEXT DEFAULT ''",
|
skills TEXT DEFAULT '',
|
||||||
"website": "TEXT DEFAULT ''",
|
github TEXT DEFAULT '',
|
||||||
"created_time": "INTEGER NOT NULL",
|
website TEXT DEFAULT '',
|
||||||
"avatar_b": "TEXT DEFAULT '7bc8a4'",
|
created_time INTEGER NOT NULL,
|
||||||
"avatar_i": "TEXT"
|
avatar_b TEXT DEFAULT '7bc8a4',
|
||||||
}, ["UNIQUE(username)", "UNIQUE(email)"])
|
avatar_i TEXT,
|
||||||
|
updated_at TEXT,
|
||||||
# Auth tokens table
|
uid TEXT,
|
||||||
await db.create_table("auth_tokens", {
|
created_at TEXT,
|
||||||
"id": "INTEGER PRIMARY KEY AUTOINCREMENT",
|
deleted_at TEXT
|
||||||
"user_id": "INTEGER NOT NULL",
|
);
|
||||||
"token_key": "TEXT NOT NULL",
|
""")
|
||||||
"expire_time": "INTEGER NOT NULL"
|
await db.query_raw("""
|
||||||
}, ["UNIQUE(token_key)", "FOREIGN KEY (user_id) REFERENCES users (id)"])
|
CREATE TABLE auth_tokens (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
# Rants table
|
user_id INTEGER NOT NULL,
|
||||||
await db.create_table("rants", {
|
token_key TEXT UNIQUE NOT NULL,
|
||||||
"id": "INTEGER PRIMARY KEY AUTOINCREMENT",
|
expire_time INTEGER NOT NULL,
|
||||||
"user_id": "INTEGER NOT NULL",
|
uid TEXT,
|
||||||
"text": "TEXT NOT NULL",
|
created_at TEXT,
|
||||||
"score": "INTEGER DEFAULT 0",
|
updated_at TEXT,
|
||||||
"created_time": "INTEGER NOT NULL",
|
deleted_at TEXT,
|
||||||
"attached_image": "TEXT DEFAULT ''",
|
FOREIGN KEY (user_id) REFERENCES users (id)
|
||||||
"tags": "TEXT DEFAULT ''",
|
);
|
||||||
"edited": "INTEGER DEFAULT 0",
|
""")
|
||||||
"type": "INTEGER DEFAULT 1"
|
await db.query_raw("""
|
||||||
}, ["FOREIGN KEY (user_id) REFERENCES users (id)"])
|
CREATE TABLE rants (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
# Comments table
|
user_id INTEGER NOT NULL,
|
||||||
await db.create_table("comments", {
|
text TEXT NOT NULL,
|
||||||
"id": "INTEGER PRIMARY KEY AUTOINCREMENT",
|
score INTEGER DEFAULT 0,
|
||||||
"rant_id": "INTEGER NOT NULL",
|
created_time INTEGER NOT NULL,
|
||||||
"user_id": "INTEGER NOT NULL",
|
attached_image TEXT DEFAULT '',
|
||||||
"body": "TEXT NOT NULL",
|
tags TEXT DEFAULT '',
|
||||||
"score": "INTEGER DEFAULT 0",
|
edited BOOLEAN DEFAULT 0,
|
||||||
"created_time": "INTEGER NOT NULL",
|
type INTEGER DEFAULT 1,
|
||||||
"attached_image": "TEXT DEFAULT ''",
|
updated_at TEXT,
|
||||||
"edited": "INTEGER DEFAULT 0"
|
uid TEXT,
|
||||||
}, ["FOREIGN KEY (rant_id) REFERENCES rants (id)", "FOREIGN KEY (user_id) REFERENCES users (id)"])
|
created_at TEXT,
|
||||||
|
deleted_at TEXT,
|
||||||
# Votes table
|
FOREIGN KEY (user_id) REFERENCES users (id)
|
||||||
await db.create_table("votes", {
|
);
|
||||||
"id": "INTEGER PRIMARY KEY AUTOINCREMENT",
|
""")
|
||||||
"user_id": "INTEGER NOT NULL",
|
await db.query_raw("""
|
||||||
"target_id": "INTEGER NOT NULL",
|
CREATE TABLE comments (
|
||||||
"target_type": "TEXT NOT NULL",
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
"vote": "INTEGER NOT NULL",
|
rant_id INTEGER NOT NULL,
|
||||||
"reason": "INTEGER"
|
user_id INTEGER NOT NULL,
|
||||||
}, ["UNIQUE(user_id, target_id, target_type)", "FOREIGN KEY (user_id) REFERENCES users (id)"])
|
body TEXT NOT NULL,
|
||||||
|
score INTEGER DEFAULT 0,
|
||||||
# Favorites table
|
created_time INTEGER NOT NULL,
|
||||||
await db.create_table("favorites", {
|
attached_image TEXT DEFAULT '',
|
||||||
"id": "INTEGER PRIMARY KEY AUTOINCREMENT",
|
edited BOOLEAN DEFAULT 0,
|
||||||
"user_id": "INTEGER NOT NULL",
|
uid TEXT,
|
||||||
"rant_id": "INTEGER NOT NULL"
|
created_at TEXT,
|
||||||
}, ["UNIQUE(user_id, rant_id)", "FOREIGN KEY (user_id) REFERENCES users (id)", "FOREIGN KEY (rant_id) REFERENCES rants (id)"])
|
updated_at TEXT,
|
||||||
|
deleted_at TEXT,
|
||||||
# Notifications table
|
FOREIGN KEY (rant_id) REFERENCES rants (id),
|
||||||
await db.create_table("notifications", {
|
FOREIGN KEY (user_id) REFERENCES users (id)
|
||||||
"id": "INTEGER PRIMARY KEY AUTOINCREMENT",
|
);
|
||||||
"user_id": "INTEGER NOT NULL",
|
""")
|
||||||
"type": "TEXT NOT NULL",
|
await db.query_raw("""
|
||||||
"rant_id": "INTEGER",
|
CREATE TABLE votes (
|
||||||
"comment_id": "INTEGER",
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
"from_user_id": "INTEGER",
|
user_id INTEGER NOT NULL,
|
||||||
"created_time": "INTEGER NOT NULL",
|
target_id INTEGER NOT NULL,
|
||||||
"read": "INTEGER DEFAULT 0"
|
target_type TEXT NOT NULL,
|
||||||
}, ["FOREIGN KEY (user_id) REFERENCES users (id)"])
|
vote INTEGER NOT NULL,
|
||||||
|
reason INTEGER,
|
||||||
|
uid TEXT,
|
||||||
|
created_at TEXT,
|
||||||
|
updated_at TEXT,
|
||||||
|
deleted_at TEXT,
|
||||||
|
UNIQUE(user_id, target_id, target_type),
|
||||||
|
FOREIGN KEY (user_id) REFERENCES users (id)
|
||||||
|
);
|
||||||
|
""")
|
||||||
|
await db.query_raw("""
|
||||||
|
CREATE TABLE favorites (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
user_id INTEGER NOT NULL,
|
||||||
|
rant_id INTEGER NOT NULL,
|
||||||
|
uid TEXT,
|
||||||
|
created_at TEXT,
|
||||||
|
updated_at TEXT,
|
||||||
|
deleted_at TEXT,
|
||||||
|
UNIQUE(user_id, rant_id),
|
||||||
|
FOREIGN KEY (user_id) REFERENCES users (id),
|
||||||
|
FOREIGN KEY (rant_id) REFERENCES rants (id)
|
||||||
|
);
|
||||||
|
""")
|
||||||
|
await db.query_raw("""
|
||||||
|
CREATE TABLE notifications (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
user_id INTEGER NOT NULL,
|
||||||
|
type TEXT NOT NULL,
|
||||||
|
rant_id INTEGER,
|
||||||
|
comment_id INTEGER,
|
||||||
|
from_user_id INTEGER,
|
||||||
|
created_time INTEGER NOT NULL,
|
||||||
|
read BOOLEAN DEFAULT 0,
|
||||||
|
uid TEXT,
|
||||||
|
created_at TEXT,
|
||||||
|
updated_at TEXT,
|
||||||
|
deleted_at TEXT,
|
||||||
|
FOREIGN KEY (user_id) REFERENCES users (id)
|
||||||
|
);
|
||||||
|
""")
|
||||||
|
|
||||||
|
|
||||||
# Run init_db on startup
|
# Run init_db on startup
|
||||||
@app.on_event("startup")
|
@app.on_event("startup")
|
||||||
|
Loading…
Reference in New Issue
Block a user