from fastapi import APIRouter, Depends, status from fastapi.responses import JSONResponse from ..config import CRYPT_CONTEXT, DB from ..db import Certificate, DistinguishedName, User, UserCapability router = APIRouter(prefix="/install") async def is_installed(): return DB.table_exists(User) @router.get("/check_installed", responses={ status.HTTP_200_OK: { "model": bool, }, }) async def check_installed(is_installed: bool = Depends(is_installed)): return is_installed @router.get("/create_db", responses={ status.HTTP_200_OK: { "description": "Database created", "content": None, }, status.HTTP_400_BAD_REQUEST: { "description": "Could not create Database", "content": None, } }) async def create_db(is_installed: bool = Depends(is_installed)): if is_installed: return JSONResponse( status_code=status.HTTP_400_BAD_REQUEST, ) DB.create_tables([Certificate, DistinguishedName, User, UserCapability]) admin = User.create(name="admin", password=CRYPT_CONTEXT.hash("secret")) UserCapability.create(user=admin, capability="admin") User.create(name="johndoe", password=CRYPT_CONTEXT.hash("secret")) DB.close()