Files
portabase/backend/main.py
T
2024-10-27 15:56:43 +01:00

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)