mirror of
https://github.com/Portabase/portabase.git
synced 2026-07-14 11:16:13 +02:00
49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
import os
|
|
from contextlib import asynccontextmanager
|
|
from fastapi import FastAPI
|
|
from sqlalchemy.orm import Session
|
|
from starlette.middleware.trustedhost import TrustedHostMiddleware
|
|
|
|
from apps.users.roles import Role
|
|
from apps.users.schemas import UserCreate, User, AdminUserCreate
|
|
from database import BaseModel, engine, SessionLocal
|
|
from middleware.db_connection import DatabaseSessionMiddleware
|
|
from routes.main import api_router
|
|
from settings import config
|
|
|
|
|
|
def init_default_users(db: Session):
|
|
from apps.users import crud
|
|
print("Initializing default users...")
|
|
if not crud.get_user_by_email(db, "admin@portabase.com"):
|
|
print("Creating admin user...")
|
|
user = AdminUserCreate(email="admin@portabase.com", password="password", role=Role.ADMIN)
|
|
crud.create_admin_user(db, user)
|
|
|
|
|
|
@asynccontextmanager
|
|
async def lifespan(app: FastAPI):
|
|
print("Initialising database...")
|
|
BaseModel.metadata.create_all(bind=engine)
|
|
print("Database initialised!")
|
|
# Initialize default users
|
|
db = SessionLocal()
|
|
try:
|
|
init_default_users(db)
|
|
finally:
|
|
db.close()
|
|
|
|
yield
|
|
print("App shutdown!")
|
|
|
|
|
|
middlewares = []
|
|
|
|
app = FastAPI(lifespan=lifespan, middleware=middlewares)
|
|
|
|
app.add_middleware(DatabaseSessionMiddleware)
|
|
app.add_middleware(TrustedHostMiddleware, allowed_hosts=config.ALLOWED_HOSTS)
|
|
|
|
app.include_router(api_router)
|
|
|