bugfix
parent
601a0128b0
commit
4da6db5c49
|
@ -1,4 +1,4 @@
|
|||
from fastapi import APIRouter, Depends
|
||||
from fastapi import APIRouter, Depends, Path
|
||||
|
||||
from core.models.office.requests import UpdateOfficeRequest
|
||||
from core.models.office.responses import JdeOfficeDetailResponse
|
||||
|
@ -13,6 +13,15 @@ async def list_offices(offices: list[JdeOfficeDetailResponse] = Depends(services
|
|||
return offices
|
||||
|
||||
|
||||
@router.get('/{office_id}')
|
||||
async def get_office_by_id(office_id: str = Path()) -> JdeOfficeDetailResponse | None:
|
||||
data = await services.list_offices_service()
|
||||
try:
|
||||
return [x for x in data if x.code == office_id][0]
|
||||
except IndexError:
|
||||
return None
|
||||
|
||||
|
||||
@router.post('/')
|
||||
async def update_office(data: UpdateOfficeRequest):
|
||||
await services.update_office(data)
|
||||
|
|
|
@ -10,8 +10,8 @@ router = APIRouter(prefix='/profiles')
|
|||
# todo implement this handlers in services and storages. Then use fastapi.Depends()
|
||||
|
||||
@router.post('/')
|
||||
async def create_profile():
|
||||
pass
|
||||
async def create_profile(data: CreateOrUpdateProfileRequest):
|
||||
return profile_storage.create_profile(data)
|
||||
|
||||
|
||||
@router.get('/')
|
||||
|
@ -31,4 +31,4 @@ async def delete_profile(profile_id: int = Path()):
|
|||
|
||||
@router.put('/')
|
||||
async def update_profile(data: CreateOrUpdateProfileRequest):
|
||||
profile_storage.create_or_update_profile(data=data)
|
||||
profile_storage.update_profile(data=data)
|
||||
|
|
|
@ -10,7 +10,7 @@ class UpdateOfficeRequest(BaseModel):
|
|||
|
||||
|
||||
class CreateOrUpdateProfileRequest(BaseModel):
|
||||
id: int | None
|
||||
id: int | None = None
|
||||
full_name: str
|
||||
phone: str | None
|
||||
email: str | None
|
||||
phone: str
|
||||
email: str
|
||||
|
|
|
@ -8,7 +8,7 @@ class ProfileResponse(ProfileDB):
|
|||
|
||||
class ExtendedResponse(BaseModel):
|
||||
features: str | None = None
|
||||
contact_person: ProfileResponse | None = None
|
||||
contact_person_id: int | None = None
|
||||
person_count: int | None = None
|
||||
rating: int | None = None
|
||||
|
||||
|
|
|
@ -25,6 +25,18 @@ class ProfileStorage(BaseStorage):
|
|||
sql = f"insert into profile (full_name, phone, email) values (%s, %s, %s)"
|
||||
self.db.execute(sql, (data.full_name, data.phone, data.email))
|
||||
|
||||
def update_profile(self, data: CreateOrUpdateProfileRequest):
|
||||
self.get_by_id(data.id)
|
||||
sql = f"update profile set full_name = %s, phone = %s, email = %s where id = %s"
|
||||
self.db.execute(sql, (data.full_name, data.phone, data.email, data.id))
|
||||
|
||||
def create_profile(self, data: CreateOrUpdateProfileRequest):
|
||||
sql = f"insert into profile (full_name, phone, email) values (%s, %s, %s)"
|
||||
self.db.execute(sql, (data.full_name, data.phone, data.email))
|
||||
row = self.get_by('profile', email=data.email)
|
||||
return ProfileDB(id=row[0], full_name=row[1], phone=row[2], email=row[3])
|
||||
|
||||
|
||||
def list_all_profiles(self):
|
||||
rows = self.list_by('profile')
|
||||
return [ProfileDB(id=row[0], full_name=row[1], phone=row[2], email=row[3]) for row in rows]
|
||||
|
|
Loading…
Reference in New Issue