34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
"""客户评级数据访问(每客户一行)。
|
||
|
||
本层只 flush 不 commit —— 事务边界由 services 层控制。
|
||
"""
|
||
|
||
from sqlalchemy import select
|
||
from sqlalchemy.orm import Session
|
||
|
||
from app.models import CustomerRating
|
||
|
||
# ==================== 读取 ====================
|
||
|
||
|
||
def get_by_customer_id(session: Session, customer_id: int) -> CustomerRating | None:
|
||
"""查某客户的当前评级(uk_customer_ratings_customer_id 保证至多一行)。"""
|
||
stmt = select(CustomerRating).where(CustomerRating.customer_id == customer_id)
|
||
return session.execute(stmt).scalar_one_or_none()
|
||
|
||
|
||
# ==================== 写入 ====================
|
||
|
||
|
||
def create(session: Session, rating: CustomerRating) -> CustomerRating:
|
||
"""新增评级行。只 flush 以取得自增 id。"""
|
||
session.add(rating)
|
||
session.flush()
|
||
return rating
|
||
|
||
|
||
def delete(session: Session, rating: CustomerRating) -> None:
|
||
"""删除评级行(客户物理删除前的联动清理,调用方先校验业务引用)。"""
|
||
session.delete(rating)
|
||
session.flush()
|