feat: 加入了一些边界检查

This commit is contained in:
Leon
2025-12-16 18:52:09 +08:00
parent b9fe48a328
commit 2786530c54
2 changed files with 30 additions and 6 deletions

View File

@@ -3,10 +3,10 @@ package video
import "time"
type Like struct {
ID uint `gorm:"primaryKey"`
VideoID uint `gorm:"index;not null"`
AccountID uint `gorm:"index;not null"`
CreatedAt time.Time
ID uint `gorm:"primaryKey" json:"id"`
VideoID uint `gorm:"uniqueIndex:idx_like_video_account;not null" json:"video_id"`
AccountID uint `gorm:"uniqueIndex:idx_like_video_account;not null" json:"account_id"`
CreatedAt time.Time `json:"created_at"`
}
type LikeRequest struct {

View File

@@ -16,7 +16,19 @@ func NewLikeService(repo *LikeRepository, videoRepo *VideoRepository) *LikeServi
}
func (s *LikeService) Like(ctx context.Context, like *Like) error {
if isLiked, err := s.IsLiked(ctx, like.VideoID, like.AccountID); err == nil && isLiked {
exists, err := s.VideoRepo.IsExist(ctx, like.VideoID)
if err != nil {
return err
}
if !exists {
return errors.New("video not found")
}
isLiked, err := s.IsLiked(ctx, like.VideoID, like.AccountID)
if err != nil {
return err
}
if isLiked {
return errors.New("user has liked this video")
}
like.CreatedAt = time.Now()
@@ -34,7 +46,19 @@ func (s *LikeService) Like(ctx context.Context, like *Like) error {
}
func (s *LikeService) Unlike(ctx context.Context, like *Like) error {
if isLiked, err := s.IsLiked(ctx, like.VideoID, like.AccountID); err == nil && !isLiked {
exists, err := s.VideoRepo.IsExist(ctx, like.VideoID)
if err != nil {
return err
}
if !exists {
return errors.New("video not found")
}
isLiked, err := s.IsLiked(ctx, like.VideoID, like.AccountID)
if err != nil {
return err
}
if !isLiked {
return errors.New("user has not liked this video")
}
if err := s.repo.Unlike(ctx, like); err != nil {