| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- from __future__ import annotations
- from sqlalchemy import distinct, select
- from supply_infra.db.models.oss_log import OssLog
- from supply_infra.db.repositories.base import BaseRepository
- class OssLogRepository(BaseRepository[OssLog]):
- model = OssLog
- def create(
- self,
- *,
- log_name: str,
- agent_name: str | None,
- oss_path: str,
- ) -> OssLog:
- entity = OssLog(
- log_name=log_name,
- agent_name=agent_name,
- oss_path=oss_path,
- is_delete=0,
- )
- return self.add(entity)
- def list_by_agent_name(self, agent_name: str) -> list[OssLog]:
- """按 agent_name 查未删除记录,create_time 倒序。"""
- stmt = (
- select(OssLog)
- .where(
- OssLog.agent_name == agent_name,
- OssLog.is_delete == 0,
- )
- .order_by(OssLog.create_time.desc(), OssLog.id.desc())
- )
- return list(self.session.scalars(stmt).all())
- def list_all(self) -> list[OssLog]:
- """查询全部未删除记录,create_time 倒序。"""
- stmt = (
- select(OssLog)
- .where(OssLog.is_delete == 0)
- .order_by(OssLog.create_time.desc(), OssLog.id.desc())
- )
- return list(self.session.scalars(stmt).all())
- def list_agent_names(self) -> list[str]:
- """返回有日志记录的 Agent 名称。"""
- stmt = (
- select(distinct(OssLog.agent_name))
- .where(
- OssLog.is_delete == 0,
- OssLog.agent_name.is_not(None),
- OssLog.agent_name != "",
- )
- .order_by(OssLog.agent_name)
- )
- return [name for name in self.session.scalars(stmt).all() if name]
|