Sticker pack ownership

This commit is contained in:
2025-02-23 12:02:55 +08:00
parent cfd1735aee
commit 1dae405232
6 changed files with 120 additions and 29 deletions

View File

@ -1,7 +1,9 @@
package services
import (
"errors"
"fmt"
"gorm.io/gorm"
"git.solsynth.dev/hypernet/paperclip/pkg/internal/database"
"git.solsynth.dev/hypernet/paperclip/pkg/internal/models"
@ -71,3 +73,36 @@ func DeleteSticker(sticker models.Sticker) (models.Sticker, error) {
}
return sticker, nil
}
func AddStickerPack(user uint, pack models.StickerPack) (models.StickerPackOwnership, error) {
var ownership models.StickerPackOwnership
if err := database.C.
Where("account_id = ?", user).
First(&ownership).Error; err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
return ownership, fmt.Errorf("unable to get current ownership: %v", err)
} else if err == nil {
return ownership, fmt.Errorf("you already own this pack")
}
ownership = models.StickerPackOwnership{
AccountID: user,
PackID: pack.ID,
}
err := database.C.Save(&ownership).Error
return ownership, err
}
func RemoveStickerPack(user uint, pack models.StickerPack) (models.StickerPackOwnership, error) {
var ownership models.StickerPackOwnership
if err := database.C.
Where("account_id = ? AND pack_id = ?", user, pack.ID).
First(&ownership).Error; err != nil {
return ownership, fmt.Errorf("unable to get current ownership: %v", err)
}
err := database.C.Delete(&ownership).Error
return ownership, err
}