from __future__ import annotations from sqlalchemy import select from sqlalchemy.orm import Session from app.models.app_metadata import AppMetadata class AppMetadataRepository: def __init__(self, db: Session) -> None: self.db = db def add(self, item: AppMetadata) -> AppMetadata: self.db.add(item) self.db.commit() self.db.refresh(item) return item def update(self, item: AppMetadata) -> AppMetadata: self.db.add(item) self.db.commit() self.db.refresh(item) return item def get_by_app_env(self, app_code: str, env: str) -> AppMetadata | None: statement = select(AppMetadata).where(AppMetadata.app_code == app_code).where(AppMetadata.env == env) return self.db.execute(statement).scalar_one_or_none() def list_all(self) -> list[AppMetadata]: statement = select(AppMetadata).order_by(AppMetadata.app_code.asc(), AppMetadata.env.asc()) return list(self.db.execute(statement).scalars())