Refactor Database to its own folder
This commit is contained in:
+2
-2
@@ -2,8 +2,8 @@ from fastapi import FastAPI
|
|||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
from routes import admin_router, score_router, user_router, card_router, movie_router
|
from routes import admin_router, score_router, user_router, card_router, movie_router
|
||||||
|
|
||||||
from models import *
|
|
||||||
from lib.database import init_db
|
from lib.database.database import init_db
|
||||||
|
|
||||||
|
|
||||||
origins = [
|
origins = [
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
from contextlib import contextmanager
|
||||||
|
import duckdb
|
||||||
|
import bcrypt
|
||||||
|
from rich import print
|
||||||
|
|
||||||
|
|
||||||
|
from lib import settings
|
||||||
|
from models.user import UserIn, UserOut
|
||||||
|
|
||||||
|
|
||||||
|
@contextmanager
|
||||||
|
def get_db():
|
||||||
|
try:
|
||||||
|
conn = duckdb.connect(database=settings.db_url)
|
||||||
|
yield conn
|
||||||
|
finally:
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
|
||||||
|
def db_run(sql):
|
||||||
|
with get_db() as conn:
|
||||||
|
conn.execute(sql)
|
||||||
|
|
||||||
|
|
||||||
|
def init_db():
|
||||||
|
if settings.db_url.exists():
|
||||||
|
# TODO: Development feature. Remove this in production
|
||||||
|
from os import unlink
|
||||||
|
|
||||||
|
unlink(settings.db_url)
|
||||||
|
# return
|
||||||
|
sql = ""
|
||||||
|
with open("lib/database/database.sql") as f:
|
||||||
|
sql = f.read()
|
||||||
|
|
||||||
|
db_run(sql)
|
||||||
|
|
||||||
|
# Initialize default user
|
||||||
|
|
||||||
|
hashed_password = bcrypt.hashpw("password".encode("utf-8"), bcrypt.gensalt())
|
||||||
|
|
||||||
|
sql = f"INSERT INTO users (username, password, is_admin) VALUES ('admin', '{hashed_password.decode('utf-8')}', true)"
|
||||||
|
db_run(sql)
|
||||||
|
|
||||||
|
sql = f"INSERT INTO users (username, password, is_admin) VALUES ('test', '{hashed_password.decode('utf-8')}', false)"
|
||||||
|
db_run(sql)
|
||||||
@@ -1,49 +1,5 @@
|
|||||||
from contextlib import contextmanager
|
|
||||||
import duckdb
|
|
||||||
import bcrypt
|
|
||||||
from rich import print
|
|
||||||
|
|
||||||
|
|
||||||
from lib import settings
|
|
||||||
from models.user import UserIn, UserOut
|
from models.user import UserIn, UserOut
|
||||||
|
from lib.database.database import get_db
|
||||||
|
|
||||||
@contextmanager
|
|
||||||
def get_db():
|
|
||||||
try:
|
|
||||||
conn = duckdb.connect(database=settings.db_url)
|
|
||||||
yield conn
|
|
||||||
finally:
|
|
||||||
conn.close()
|
|
||||||
|
|
||||||
|
|
||||||
def db_run(sql):
|
|
||||||
with get_db() as conn:
|
|
||||||
conn.execute(sql)
|
|
||||||
|
|
||||||
|
|
||||||
def init_db():
|
|
||||||
if settings.db_url.exists():
|
|
||||||
# TODO: Development feature. Remove this in production
|
|
||||||
from os import unlink
|
|
||||||
|
|
||||||
unlink(settings.db_url)
|
|
||||||
# return
|
|
||||||
sql = ""
|
|
||||||
with open("lib/database.sql") as f:
|
|
||||||
sql = f.read()
|
|
||||||
|
|
||||||
db_run(sql)
|
|
||||||
|
|
||||||
# Initialize default user
|
|
||||||
|
|
||||||
hashed_password = bcrypt.hashpw("password".encode("utf-8"), bcrypt.gensalt())
|
|
||||||
|
|
||||||
sql = f"INSERT INTO users (username, password, is_admin) VALUES ('admin', '{hashed_password.decode('utf-8')}', true)"
|
|
||||||
db_run(sql)
|
|
||||||
|
|
||||||
sql = f"INSERT INTO users (username, password, is_admin) VALUES ('test', '{hashed_password.decode('utf-8')}', false)"
|
|
||||||
db_run(sql)
|
|
||||||
|
|
||||||
|
|
||||||
def get_user_by_username(username) -> UserIn | None:
|
def get_user_by_username(username) -> UserIn | None:
|
||||||
+1
-1
@@ -3,7 +3,7 @@ import bcrypt
|
|||||||
|
|
||||||
from models.user import UserIn, UserOut, UserCredentials
|
from models.user import UserIn, UserOut, UserCredentials
|
||||||
from models.general import Message
|
from models.general import Message
|
||||||
from lib.database import get_all_users, get_user_by_username
|
from lib.database.user import get_all_users, get_user_by_username
|
||||||
|
|
||||||
|
|
||||||
router = APIRouter(
|
router = APIRouter(
|
||||||
|
|||||||
Reference in New Issue
Block a user