mirror of
https://github.com/hay-kot/mealie.git
synced 2025-08-22 14:33:33 -07:00
refactor/database init on startup
This commit is contained in:
parent
838ca2a6f8
commit
25c1350458
7 changed files with 74 additions and 94 deletions
|
@ -3,6 +3,8 @@ from fastapi import FastAPI
|
|||
|
||||
# import utils.startup as startup
|
||||
from app_config import APP_VERSION, PORT, SECRET, docs_url, redoc_url
|
||||
from db.db_setup import sql_exists
|
||||
from db.init_db import init_db
|
||||
from routes import (
|
||||
backup_routes,
|
||||
debug_routes,
|
||||
|
@ -18,7 +20,6 @@ from routes.recipe import (
|
|||
tag_routes,
|
||||
)
|
||||
from routes.users import users
|
||||
from services.settings_services import default_settings_init
|
||||
from utils.logger import logger
|
||||
|
||||
app = FastAPI(
|
||||
|
@ -30,16 +31,14 @@ app = FastAPI(
|
|||
)
|
||||
|
||||
|
||||
def data_base_first_run():
|
||||
init_db()
|
||||
|
||||
|
||||
def start_scheduler():
|
||||
import services.scheduler.scheduled_jobs
|
||||
|
||||
|
||||
def init_settings():
|
||||
default_settings_init()
|
||||
import services.theme_services
|
||||
import services.users.users
|
||||
|
||||
|
||||
def api_routers():
|
||||
# Authentication
|
||||
app.include_router(users.router)
|
||||
|
@ -60,9 +59,11 @@ def api_routers():
|
|||
app.include_router(debug_routes.router)
|
||||
|
||||
|
||||
if not sql_exists:
|
||||
data_base_first_run()
|
||||
|
||||
api_routers()
|
||||
start_scheduler()
|
||||
init_settings()
|
||||
|
||||
if __name__ == "__main__":
|
||||
logger.info("-----SYSTEM STARTUP-----")
|
||||
|
|
64
mealie/db/init_db.py
Normal file
64
mealie/db/init_db.py
Normal file
|
@ -0,0 +1,64 @@
|
|||
from fastapi.logger import logger
|
||||
from models.settings_models import SiteSettings, Webhooks
|
||||
from sqlalchemy.orm import Session
|
||||
from sqlalchemy.orm.session import Session
|
||||
from utils.logger import logger
|
||||
|
||||
from db.database import db
|
||||
from db.db_setup import create_session
|
||||
|
||||
|
||||
def init_db(db: Session = None) -> None:
|
||||
if not db:
|
||||
db = create_session()
|
||||
|
||||
default_settings_init(db)
|
||||
default_theme_init(db)
|
||||
default_user_init(db)
|
||||
|
||||
db.close()
|
||||
|
||||
|
||||
def default_theme_init(session: Session):
|
||||
default_theme = {
|
||||
"name": "default",
|
||||
"colors": {
|
||||
"primary": "#E58325",
|
||||
"accent": "#00457A",
|
||||
"secondary": "#973542",
|
||||
"success": "#5AB1BB",
|
||||
"info": "#4990BA",
|
||||
"warning": "#FF4081",
|
||||
"error": "#EF5350",
|
||||
},
|
||||
}
|
||||
|
||||
try:
|
||||
db.themes.create(session, default_theme)
|
||||
logger.info("Generating default theme...")
|
||||
except:
|
||||
logger.info("Default Theme Exists.. skipping generation")
|
||||
|
||||
|
||||
def default_settings_init(session: Session):
|
||||
try:
|
||||
webhooks = Webhooks()
|
||||
default_entry = SiteSettings(name="main", webhooks=webhooks)
|
||||
document = db.settings.create(session, default_entry.dict())
|
||||
logger.info(f"Created Site Settings: \n {document}")
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
def default_user_init(session: Session):
|
||||
default_user = {
|
||||
"full_name": "Change Me",
|
||||
"email": "changeme@email.com",
|
||||
"password": "MyPassword",
|
||||
"family": "public",
|
||||
"is_superuser": True,
|
||||
}
|
||||
|
||||
logger.info("Generating Default User")
|
||||
db.users.create(session, default_user)
|
||||
|
|
@ -2,7 +2,6 @@ from db.database import db
|
|||
from db.db_setup import generate_session
|
||||
from fastapi import APIRouter, Depends
|
||||
from models.settings_models import SiteSettings
|
||||
from services.settings_services import default_settings_init
|
||||
from sqlalchemy.orm.session import Session
|
||||
from utils.post_webhooks import post_webhooks
|
||||
from utils.snackbar import SnackResponse
|
||||
|
@ -17,8 +16,7 @@ def get_main_settings(session: Session = Depends(generate_session)):
|
|||
try:
|
||||
data = db.settings.get(session, "main")
|
||||
except:
|
||||
default_settings_init(session)
|
||||
data = db.settings.get(session, "main")
|
||||
return
|
||||
return data
|
||||
|
||||
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
from db.database import db
|
||||
from db.db_setup import create_session
|
||||
from models.settings_models import SiteSettings, Webhooks
|
||||
from sqlalchemy.orm.session import Session
|
||||
from utils.logger import logger
|
||||
|
||||
|
||||
def default_settings_init(session: Session = None):
|
||||
if session == None:
|
||||
session = create_session()
|
||||
try:
|
||||
webhooks = Webhooks()
|
||||
default_entry = SiteSettings(name="main", webhooks=webhooks)
|
||||
document = db.settings.create(session, default_entry.dict())
|
||||
logger.info(f"Created Site Settings: \n {document}")
|
||||
except:
|
||||
pass
|
|
@ -1,28 +0,0 @@
|
|||
from db.database import db
|
||||
from db.db_setup import create_session, sql_exists
|
||||
from utils.logger import logger
|
||||
|
||||
|
||||
def default_theme_init():
|
||||
default_theme = {
|
||||
"name": "default",
|
||||
"colors": {
|
||||
"primary": "#E58325",
|
||||
"accent": "#00457A",
|
||||
"secondary": "#973542",
|
||||
"success": "#5AB1BB",
|
||||
"info": "#4990BA",
|
||||
"warning": "#FF4081",
|
||||
"error": "#EF5350",
|
||||
},
|
||||
}
|
||||
session = create_session()
|
||||
try:
|
||||
db.themes.create(session, default_theme)
|
||||
logger.info("Generating default theme...")
|
||||
except:
|
||||
logger.info("Default Theme Exists.. skipping generation")
|
||||
|
||||
|
||||
if not sql_exists:
|
||||
default_theme_init()
|
|
@ -1,25 +0,0 @@
|
|||
from db.database import db
|
||||
from db.db_setup import create_session, sql_exists
|
||||
from fastapi.logger import logger
|
||||
|
||||
|
||||
def init_super_user():
|
||||
session = create_session()
|
||||
|
||||
default_user = {
|
||||
"full_name": "Change Me",
|
||||
"email": "changeme@email.com",
|
||||
"password": "MyPassword",
|
||||
"family": "public",
|
||||
"is_superuser": True,
|
||||
}
|
||||
|
||||
logger.info("Generating Default User")
|
||||
|
||||
db.users.create(session, default_user)
|
||||
|
||||
session.close()
|
||||
|
||||
|
||||
if not sql_exists:
|
||||
init_super_user()
|
|
@ -1,13 +0,0 @@
|
|||
from pathlib import Path
|
||||
|
||||
from services.settings_services import default_theme_init
|
||||
|
||||
CWD = Path(__file__).parent
|
||||
|
||||
|
||||
def post_start():
|
||||
default_theme_init()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
pass
|
Loading…
Add table
Add a link
Reference in a new issue