feat: 初始化工程
This commit is contained in:
46
service/like_service.py
Normal file
46
service/like_service.py
Normal 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
|
||||
Reference in New Issue
Block a user