| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- from datetime import datetime
- from sqlalchemy import select
- from sqlalchemy.orm import Session
- from app.db.models import ModelDefinition
- class ModelDefinitionRepository:
- def __init__(self, db: Session) -> None:
- self.db = db
- def create(self, entity: ModelDefinition) -> ModelDefinition:
- self.db.add(entity)
- self.db.commit()
- self.db.refresh(entity)
- return entity
- def list_all(self) -> list[ModelDefinition]:
- stmt = select(ModelDefinition).order_by(
- ModelDefinition.status.asc(),
- ModelDefinition.name.asc(),
- )
- return list(self.db.scalars(stmt))
- def get_by_id(self, model_id: str) -> ModelDefinition | None:
- return self.db.get(ModelDefinition, model_id)
- def get_by_code(self, code: str) -> ModelDefinition | None:
- stmt = select(ModelDefinition).where(ModelDefinition.code == code).limit(1)
- return self.db.scalar(stmt)
- def get_active_for_request(self, model: str) -> ModelDefinition | None:
- stmt = (
- select(ModelDefinition)
- .where(ModelDefinition.status == "active")
- .where(
- (ModelDefinition.code == model)
- | (ModelDefinition.model_name == model)
- )
- .limit(1)
- )
- return self.db.scalar(stmt)
- def update(self, entity: ModelDefinition) -> ModelDefinition:
- entity.updated_time = datetime.utcnow()
- self.db.commit()
- self.db.refresh(entity)
- return entity
- def delete(self, entity: ModelDefinition) -> None:
- self.db.delete(entity)
- self.db.commit()
|