Fix 502 after update: safe startup, single DB init, healthcheck

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-06 22:58:09 +03:00
parent 82fdb60f5e
commit 5353c82066
10 changed files with 107 additions and 52 deletions
+42 -23
View File
@@ -12,20 +12,22 @@ def ensure_schema():
tables = inspector.get_table_names()
if "photos" in tables:
columns = {col["name"] for col in inspector.get_columns("photos")}
if "user_id" not in columns:
db.session.execute(
text("ALTER TABLE photos ADD COLUMN user_id INTEGER REFERENCES users(id)")
db.session.execute(
text(
"ALTER TABLE photos ADD COLUMN IF NOT EXISTS "
"user_id INTEGER REFERENCES users(id)"
)
db.session.commit()
)
db.session.commit()
if "users" in tables and "user_groups" in tables:
columns = {col["name"] for col in inspector.get_columns("users")}
if "group_id" not in columns:
db.session.execute(
text("ALTER TABLE users ADD COLUMN group_id INTEGER REFERENCES user_groups(id)")
db.session.execute(
text(
"ALTER TABLE users ADD COLUMN IF NOT EXISTS "
"group_id INTEGER REFERENCES user_groups(id)"
)
db.session.commit()
)
db.session.commit()
def ensure_default_group(app):
@@ -65,17 +67,19 @@ def ensure_group_limit_columns():
if "user_groups" not in inspector.get_table_names():
return
columns = {col["name"] for col in inspector.get_columns("user_groups")}
if "max_folders" not in columns:
db.session.execute(
text("ALTER TABLE user_groups ADD COLUMN max_folders INTEGER NOT NULL DEFAULT 10")
db.session.execute(
text(
"ALTER TABLE user_groups ADD COLUMN IF NOT EXISTS "
"max_folders INTEGER NOT NULL DEFAULT 10"
)
db.session.commit()
if "max_photos" not in columns:
db.session.execute(
text("ALTER TABLE user_groups ADD COLUMN max_photos INTEGER NOT NULL DEFAULT 500")
)
db.session.execute(
text(
"ALTER TABLE user_groups ADD COLUMN IF NOT EXISTS "
"max_photos INTEGER NOT NULL DEFAULT 500"
)
db.session.commit()
)
db.session.commit()
def ensure_site_settings(app):
@@ -91,10 +95,25 @@ def ensure_photo_storage_column():
inspector = inspect(db.engine)
if "photos" not in inspector.get_table_names():
return
columns = {col["name"] for col in inspector.get_columns("photos")}
if "storage_backend" not in columns:
db.session.execute(text("ALTER TABLE photos ADD COLUMN storage_backend VARCHAR(20) DEFAULT 'local'"))
db.session.commit()
db.session.execute(
text(
"ALTER TABLE photos ADD COLUMN IF NOT EXISTS "
"storage_backend VARCHAR(20) DEFAULT 'local'"
)
)
db.session.commit()
def run_database_setup(app):
ensure_schema()
ensure_default_group(app)
ensure_group_limit_columns()
from app.folders import ensure_folder_schema
ensure_folder_schema()
ensure_site_settings(app)
ensure_photo_storage_column()
create_first_admin(app)
def slugify(name):