47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
from sqlalchemy.orm import Session
|
|
from typing import List, Optional
|
|
from app.io8ref.Azzu.models import Azzu
|
|
from app.io8ref.Azzu.schemas import AzzuCreate, AzzuUpdate
|
|
|
|
class AzzuService:
|
|
def Savedata(self, db: Session, data: dict) -> Azzu:
|
|
"""Saves a new Azzu record."""
|
|
# Filter out id if present
|
|
data_dict = {k: v for k, v in data.items() if k != "id" and hasattr(Azzu, k)}
|
|
obj = Azzu(**data_dict)
|
|
db.add(obj)
|
|
db.commit()
|
|
db.refresh(obj)
|
|
return obj
|
|
|
|
def getdetails(self, db: Session) -> List[Azzu]:
|
|
"""Returns all Azzu records."""
|
|
return db.query(Azzu).all()
|
|
|
|
def getdetailsbyId(self, db: Session, id_val: int) -> Optional[Azzu]:
|
|
"""Returns an Azzu record by ID."""
|
|
return db.query(Azzu).filter(Azzu.id == id_val).first()
|
|
|
|
def update(self, db: Session, data: dict, id_val: int) -> Optional[Azzu]:
|
|
"""Updates an Azzu record by ID."""
|
|
obj = self.getdetailsbyId(db, id_val)
|
|
if not obj:
|
|
return None
|
|
for key, value in data.items():
|
|
if key != "id" and hasattr(obj, key):
|
|
setattr(obj, key, value)
|
|
db.commit()
|
|
db.refresh(obj)
|
|
return obj
|
|
|
|
def delete_by_id(self, db: Session, id_val: int) -> bool:
|
|
"""Deletes an Azzu record by ID."""
|
|
obj = self.getdetailsbyId(db, id_val)
|
|
if obj:
|
|
db.delete(obj)
|
|
db.commit()
|
|
return True
|
|
return False
|
|
|
|
Service = AzzuService()
|