feat: 初始化工程

This commit is contained in:
2026-09-06 16:07:00 +08:00
commit 30b5bf2aa1
36 changed files with 1166 additions and 0 deletions

46
service/like_service.py Normal file
View File

@@ -0,0 +1,46 @@
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