learnhouse/apps/api/src/routers/install/install.py

82 lines
1.9 KiB
Python

from fastapi import APIRouter, Depends, Request
from src.db.install import InstallRead
from src.core.events.database import get_db_session
from src.db.organizations import OrganizationCreate
from src.db.users import UserCreate
from src.services.install.install import (
create_install_instance,
get_latest_install_instance,
install_create_organization,
install_create_organization_user,
install_default_elements,
update_install_instance,
)
router = APIRouter()
@router.post("/start")
async def api_create_install_instance(
request: Request,
data: dict,
db_session=Depends(get_db_session),
) -> InstallRead:
# create install
install = await create_install_instance(request, data, db_session)
return install
@router.get("/latest")
async def api_get_latest_install_instance(
request: Request, db_session=Depends(get_db_session)
) -> InstallRead:
# get latest created install
install = await get_latest_install_instance(request, db_session=db_session)
return install
@router.post("/default_elements")
async def api_install_def_elements(
db_session=Depends(get_db_session),
):
elements = install_default_elements(db_session)
return elements
@router.post("/org")
async def api_install_org(
org: OrganizationCreate,
db_session=Depends(get_db_session),
):
organization = install_create_organization(org, db_session)
return organization
@router.post("/user")
async def api_install_user(
data: UserCreate,
org_slug: str,
db_session=Depends(get_db_session),
):
user = install_create_organization_user(data, org_slug, db_session)
return user
@router.post("/update")
async def api_update_install_instance(
request: Request,
data: dict,
step: int,
db_session=Depends(get_db_session),
) -> InstallRead:
# get latest created install
install = await update_install_instance(request, data, step, db_session)
return install