Initializable Firm
This commit is contained in:
@@ -1,22 +1,36 @@
|
||||
from fastapi import APIRouter, Depends
|
||||
|
||||
from firm.core.depends import get_logged_tenant_db_cursor, get_uninitialized_tenant_db_cursor
|
||||
from firm.current_firm import CurrentFirmModel, CurrentFirmSchemaRead, CurrentFirmSchemaCreate, CurrentFirmSchemaUpdate
|
||||
from firm.core.depends import get_authed_tenant_registry, get_uninitialized_registry
|
||||
from firm.current_firm import CurrentFirmModel, CurrentFirmSchemaRead, CurrentFirmSchemaCreate, CurrentFirmSchemaUpdate, Partner
|
||||
from firm.entity.models import Entity, Employee
|
||||
|
||||
current_firm_router = APIRouter()
|
||||
|
||||
@current_firm_router.get("/", response_model=CurrentFirmSchemaRead, response_description=f"Current Firm records retrieved")
|
||||
async def read(db=Depends(get_logged_tenant_db_cursor)) -> CurrentFirmSchemaRead:
|
||||
return CurrentFirmSchemaRead.from_model(**CurrentFirmModel.get(db))
|
||||
async def read(reg=Depends(get_authed_tenant_registry)) -> CurrentFirmSchemaRead:
|
||||
document = await CurrentFirmModel.get_current(reg.db)
|
||||
return CurrentFirmSchemaRead.from_model(document)
|
||||
|
||||
@current_firm_router.post("/", response_description=f"Current Firm added to the database")
|
||||
async def create(schema: CurrentFirmSchemaCreate, db=Depends(get_uninitialized_tenant_db_cursor)) -> CurrentFirmSchemaRead:
|
||||
await schema.validate_foreign_key(db)
|
||||
record = await CurrentFirmModel.create(db, schema)
|
||||
return CurrentFirmSchemaRead.from_model(record)
|
||||
async def create(schema: CurrentFirmSchemaCreate, reg=Depends(get_uninitialized_registry)) -> CurrentFirmSchemaRead:
|
||||
owner_entity = await Entity.create(reg.db, schema.owner)
|
||||
await Partner.create(reg.db, Partner(user_id=reg.user.id, entity_id=owner_entity.id))
|
||||
|
||||
corporation_schema = schema.corporation
|
||||
corporation_schema.entity_data.employees.append(Employee(entity_id=owner_entity.id, position=schema.position))
|
||||
corp = await Entity.create(reg.db, corporation_schema)
|
||||
|
||||
document = await CurrentFirmModel.create(reg.db, CurrentFirmModel(
|
||||
instance=reg.instance,
|
||||
firm=reg.firm,
|
||||
entity_id=corp.id,
|
||||
primary_color=schema.primary_color,
|
||||
secondary_color=schema.secondary_color,
|
||||
))
|
||||
return CurrentFirmSchemaRead.from_model(document)
|
||||
|
||||
@current_firm_router.put("/", response_description=f"Current Firm record updated")
|
||||
async def update(schema: CurrentFirmSchemaUpdate, db=Depends(get_logged_tenant_db_cursor)) -> CurrentFirmSchemaRead:
|
||||
record = await CurrentFirmModel.get(db)
|
||||
record = await CurrentFirmModel.update(db, record, schema)
|
||||
return CurrentFirmSchemaRead.from_model(record)
|
||||
async def update(schema: CurrentFirmSchemaUpdate, reg=Depends(get_authed_tenant_registry)) -> CurrentFirmSchemaRead:
|
||||
document = await CurrentFirmModel.get_current(reg.db)
|
||||
document = await CurrentFirmModel.update(reg.db, document, schema)
|
||||
return CurrentFirmSchemaRead.from_model(document)
|
||||
|
||||
Reference in New Issue
Block a user