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
|
# import utils.startup as startup
|
||||||
from app_config import APP_VERSION, PORT, SECRET, docs_url, redoc_url
|
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 (
|
from routes import (
|
||||||
backup_routes,
|
backup_routes,
|
||||||
debug_routes,
|
debug_routes,
|
||||||
|
@ -18,7 +20,6 @@ from routes.recipe import (
|
||||||
tag_routes,
|
tag_routes,
|
||||||
)
|
)
|
||||||
from routes.users import users
|
from routes.users import users
|
||||||
from services.settings_services import default_settings_init
|
|
||||||
from utils.logger import logger
|
from utils.logger import logger
|
||||||
|
|
||||||
app = FastAPI(
|
app = FastAPI(
|
||||||
|
@ -30,16 +31,14 @@ app = FastAPI(
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def data_base_first_run():
|
||||||
|
init_db()
|
||||||
|
|
||||||
|
|
||||||
def start_scheduler():
|
def start_scheduler():
|
||||||
import services.scheduler.scheduled_jobs
|
import services.scheduler.scheduled_jobs
|
||||||
|
|
||||||
|
|
||||||
def init_settings():
|
|
||||||
default_settings_init()
|
|
||||||
import services.theme_services
|
|
||||||
import services.users.users
|
|
||||||
|
|
||||||
|
|
||||||
def api_routers():
|
def api_routers():
|
||||||
# Authentication
|
# Authentication
|
||||||
app.include_router(users.router)
|
app.include_router(users.router)
|
||||||
|
@ -60,9 +59,11 @@ def api_routers():
|
||||||
app.include_router(debug_routes.router)
|
app.include_router(debug_routes.router)
|
||||||
|
|
||||||
|
|
||||||
|
if not sql_exists:
|
||||||
|
data_base_first_run()
|
||||||
|
|
||||||
api_routers()
|
api_routers()
|
||||||
start_scheduler()
|
start_scheduler()
|
||||||
init_settings()
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
logger.info("-----SYSTEM STARTUP-----")
|
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 db.db_setup import generate_session
|
||||||
from fastapi import APIRouter, Depends
|
from fastapi import APIRouter, Depends
|
||||||
from models.settings_models import SiteSettings
|
from models.settings_models import SiteSettings
|
||||||
from services.settings_services import default_settings_init
|
|
||||||
from sqlalchemy.orm.session import Session
|
from sqlalchemy.orm.session import Session
|
||||||
from utils.post_webhooks import post_webhooks
|
from utils.post_webhooks import post_webhooks
|
||||||
from utils.snackbar import SnackResponse
|
from utils.snackbar import SnackResponse
|
||||||
|
@ -17,8 +16,7 @@ def get_main_settings(session: Session = Depends(generate_session)):
|
||||||
try:
|
try:
|
||||||
data = db.settings.get(session, "main")
|
data = db.settings.get(session, "main")
|
||||||
except:
|
except:
|
||||||
default_settings_init(session)
|
return
|
||||||
data = db.settings.get(session, "main")
|
|
||||||
return data
|
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