Files
portabase/backend/main.py
T

49 lines
1.4 KiB
Python
Raw Normal View History

2024-10-19 15:55:51 +02:00
import os
2024-10-27 11:51:53 +01:00
from contextlib import asynccontextmanager
2024-10-19 15:55:51 +02:00
from fastapi import FastAPI
2024-10-27 15:56:43 +01:00
from sqlalchemy.orm import Session
2024-10-27 11:51:53 +01:00
from starlette.middleware.trustedhost import TrustedHostMiddleware
2024-10-27 15:56:43 +01:00
from apps.users.roles import Role
from apps.users.schemas import UserCreate, User, AdminUserCreate
from database import BaseModel, engine, SessionLocal
2024-10-27 11:51:53 +01:00
from middleware.db_connection import DatabaseSessionMiddleware
2024-10-19 15:55:51 +02:00
from routes.main import api_router
2024-10-27 11:51:53 +01:00
from settings import config
2024-10-19 15:55:51 +02:00
2024-10-27 11:51:53 +01:00
2024-10-27 15:56:43 +01:00
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)
2024-10-27 11:51:53 +01:00
@asynccontextmanager
async def lifespan(app: FastAPI):
print("Initialising database...")
BaseModel.metadata.create_all(bind=engine)
print("Database initialised!")
2024-10-27 15:56:43 +01:00
# Initialize default users
db = SessionLocal()
try:
init_default_users(db)
finally:
db.close()
2024-10-27 11:51:53 +01:00
yield
print("App shutdown!")
middlewares = []
app = FastAPI(lifespan=lifespan, middleware=middlewares)
app.add_middleware(DatabaseSessionMiddleware)
app.add_middleware(TrustedHostMiddleware, allowed_hosts=config.ALLOWED_HOSTS)
2024-10-19 15:55:51 +02:00
app.include_router(api_router)
2024-10-27 15:56:43 +01:00