jde-server/core/storages/office_storage.py

35 lines
1.6 KiB
Python

from fastapi.exceptions import HTTPException
from .base_storage import BaseStorage
from core.models.office.db import JdeOfficeLocalDB
from core.models.office.requests import UpdateOfficeRequest
class OfficeStorage(BaseStorage):
def get_by_id(self, idx: int) -> JdeOfficeLocalDB:
row = self.get_by('office', code=idx)
if row is None:
raise HTTPException(status_code=404, detail='Office not found')
office = JdeOfficeLocalDB(code=str(row[0]), features=row[1], contact_person_id=row[2], person_count=row[3],
rating=row[4])
return office
def list_all_offices(self):
rows = self.list_by('office')
return [
JdeOfficeLocalDB(code=str(row[0]),
features=row[1],
contact_person_id=row[2],
person_count=row[3],
rating=row[4])
for row in rows]
def update_office(self, data: UpdateOfficeRequest):
try:
self.get_by_id(data.code)
sql = f"update office set features = %s, contact_person_id = %s, person_count = %s, rating = %s where code = %s"
self.db.execute(sql, (data.features, data.contact_person_id, data.person_count, data.rating, data.code))
except HTTPException as _:
sql = f"insert into office (code, features, contact_person_id, person_count, rating) values (%s, %s, %s, %s, %s)"
self.db.execute(sql, (data.code, data.features, data.contact_person_id, data.person_count, data.rating))