"""基金业绩指标仓储。""" from __future__ import annotations from sqlalchemy import select from model.fund_performance import FundPerformance from repositories.base import BaseRepository class FundPerformanceRepo(BaseRepository): model = FundPerformance async def get_latest_for_product(self, product_id: int) -> FundPerformance | None: stmt = ( select(FundPerformance) .where(FundPerformance.product_id == product_id) .order_by( FundPerformance.calc_date.desc(), FundPerformance.id.desc(), ) .limit(1) ) return (await self.db.scalars(stmt)).first() async def list_for_product(self, product_id: int) -> list[FundPerformance]: stmt = ( select(FundPerformance) .where(FundPerformance.product_id == product_id) .order_by(FundPerformance.period.asc()) ) return list((await self.db.scalars(stmt)).all())