Files
family-service/service/like_service.py
2026-09-06 16:07:00 +08:00

47 lines
1.1 KiB
Python

from sqlalchemy import select
from sqlalchemy.orm import Session
from models.family import Likes
from schemas.like import LikeCreate
from service.record_service import get_record_by_id
def get_like(db: Session, record_id: int, user_id: int) -> Likes | None:
result = db.execute(
select(Likes).where(Likes.record_id == record_id, Likes.user_id == user_id)
)
return result.scalar_one_or_none()
def create_like(db: Session, like_dto: LikeCreate) -> bool:
exist = get_like(db, like_dto.record_id, like_dto.user_id)
if exist:
return False
like = Likes(**like_dto.model_dump())
db.add(like)
record = get_record_by_id(db, like_dto.record_id)
if record:
record.like_count = (record.like_count or 0) + 1
db.commit()
return True
def delete_like(db: Session, record_id: int, user_id: int) -> bool:
like = get_like(db, record_id, user_id)
if not like:
return False
db.delete(like)
record = get_record_by_id(db, record_id)
if record and record.like_count and record.like_count > 0:
record.like_count -= 1
db.commit()
return True