Files
amb_rag/backend/app/repositories/plan_repo.py
T
2026-09-01 13:00:36 +08:00

33 lines
1007 B
Python

"""Plan 套餐 Repository。"""
from sqlalchemy import select
from sqlalchemy.orm import Session
from app.models.plan import Plan
class PlanRepository:
def __init__(self, session: Session) -> None:
self._session = session
def get_by_id(self, plan_id: str) -> Plan | None:
return self._session.get(Plan, plan_id)
def get_by_code(self, code: str) -> Plan | None:
stmt = select(Plan).where(Plan.code == code)
return self._session.scalars(stmt).first()
def get_or_create_free(self) -> Plan:
"""获取 free plan,不存在则创建(seed 逻辑)。"""
plan = self.get_by_code("free")
if plan is None:
plan = Plan(
code="free",
name="免费版",
storage_quota=104_857_600, # 100 MB
max_file_size=20_971_520, # 20 MB
is_active=True,
)
self._session.add(plan)
self._session.flush()
return plan