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