fincas.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. from datetime import datetime
  2. from typing import List
  3. from sqlalchemy.orm import Session
  4. from sqlalchemy.sql.sqltypes import Boolean
  5. from cruds.finca_company import get_finca_company_by_company_id
  6. from cruds.utils import order_fincas
  7. from models.company import Company
  8. from models.fincas import Finca as FincaModel
  9. from schemas.fincas import Finca as FincaSchema
  10. def get_fincas(db: Session, skip: int = 0, limit: int = 100) -> List[FincaModel]:
  11. return order_fincas(db.query(FincaModel).offset(skip).limit(limit).all())
  12. def get_fincas_filter_company(db: Session, company_id: int) -> List[FincaModel]:
  13. fincas_company = get_finca_company_by_company_id(db, company_id)
  14. station_codes = [f.finca_station_code for f in fincas_company]
  15. return order_fincas(
  16. db.query(FincaModel).filter(FincaModel.station_code.in_(station_codes)).all()
  17. )
  18. def get_finca_by_station_code(db: Session, station_code: str) -> FincaModel:
  19. return db.query(FincaModel).filter(FincaModel.station_code == station_code).first()
  20. def get_finca_by_title(db: Session, title: str) -> FincaModel:
  21. return db.query(FincaModel).filter(FincaModel.title == title).first()
  22. def create_finca(db: Session, finca: FincaSchema) -> FincaModel:
  23. db_finca = FincaModel(
  24. station_code=finca.station_code,
  25. title=finca.title,
  26. last_synced=finca.last_synced or datetime.now(),
  27. )
  28. db.add(db_finca)
  29. db.commit()
  30. db.refresh(db_finca)
  31. return db_finca
  32. def delete_finca(db: Session, station_code: str) -> Boolean:
  33. finca = db.query(FincaModel).filter(FincaModel.station_code == station_code).first()
  34. db.delete(finca)
  35. db.commit()
  36. return True
  37. def update_finca_title(db: Session, station_code: str, new_title: str) -> FincaModel:
  38. finca = db.query(FincaModel).filter(FincaModel.station_code == station_code).first()
  39. finca.title = new_title
  40. db.commit()
  41. db.refresh(finca)
  42. return finca