37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
|
|
from sqlalchemy.orm import Session
|
|
from app.models.owner import Owner
|
|
from app.schemas.owner import OwnerCreate, OwnerUpdate
|
|
|
|
class OwnerRepository:
|
|
def __init__(self, db: Session):
|
|
self.db = db
|
|
|
|
def get(self, owner_id: int) -> Owner:
|
|
return self.db.query(Owner).filter(Owner.id == owner_id).first()
|
|
|
|
def get_all(self, skip: int = 0, limit: int = 100) -> list[Owner]:
|
|
return self.db.query(Owner).offset(skip).limit(limit).all()
|
|
|
|
def create(self, owner: OwnerCreate) -> Owner:
|
|
db_owner = Owner(**owner.dict())
|
|
self.db.add(db_owner)
|
|
self.db.commit()
|
|
self.db.refresh(db_owner)
|
|
return db_owner
|
|
|
|
def update(self, owner_id: int, owner: OwnerUpdate) -> Owner:
|
|
db_owner = self.get(owner_id)
|
|
if db_owner:
|
|
for key, value in owner.dict().items():
|
|
setattr(db_owner, key, value)
|
|
self.db.commit()
|
|
self.db.refresh(db_owner)
|
|
return db_owner
|
|
|
|
def delete(self, owner_id: int) -> Owner:
|
|
db_owner = self.get(owner_id)
|
|
if db_owner:
|
|
self.db.delete(db_owner)
|
|
self.db.commit()
|
|
return db_owner |