mirror of
https://github.com/wgh136/nysoure.git
synced 2025-09-27 12:17:24 +00:00
76 lines
1.7 KiB
Go
76 lines
1.7 KiB
Go
package service
|
|
|
|
import (
|
|
"github.com/gofiber/fiber/v3/log"
|
|
"nysoure/server/dao"
|
|
"nysoure/server/model"
|
|
)
|
|
|
|
func CreateTag(uid uint, name string) (*model.TagView, error) {
|
|
canUpload, err := checkUserCanUpload(uid)
|
|
if err != nil {
|
|
log.Error("Error checking user permissions:", err)
|
|
return nil, model.NewInternalServerError("Error checking user permissions")
|
|
}
|
|
if !canUpload {
|
|
return nil, model.NewUnAuthorizedError("User cannot create tags")
|
|
}
|
|
t, err := dao.CreateTag(name)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return t.ToView(), nil
|
|
}
|
|
|
|
func GetTag(id uint) (*model.TagView, error) {
|
|
t, err := dao.GetTagByID(id)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return t.ToView(), nil
|
|
}
|
|
|
|
func GetTagByName(name string) (*model.TagView, error) {
|
|
t, err := dao.GetTagByName(name)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return t.ToView(), nil
|
|
}
|
|
|
|
func SearchTag(name string) ([]model.TagView, error) {
|
|
tags, err := dao.SearchTag(name)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var tagViews []model.TagView
|
|
for _, t := range tags {
|
|
tagViews = append(tagViews, *t.ToView())
|
|
}
|
|
return tagViews, nil
|
|
}
|
|
|
|
func DeleteTag(id uint) error {
|
|
return dao.DeleteTag(id)
|
|
}
|
|
|
|
func SetTagDescription(uid uint, id uint, description string) (*model.TagView, error) {
|
|
canUpload, err := checkUserCanUpload(uid)
|
|
if err != nil {
|
|
log.Error("Error checking user permissions:", err)
|
|
return nil, model.NewInternalServerError("Error checking user permissions")
|
|
}
|
|
if !canUpload {
|
|
return nil, model.NewUnAuthorizedError("User cannot set tag description")
|
|
}
|
|
t, err := dao.GetTagByID(id)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
t.Description = description
|
|
if err := dao.SetTagDescription(id, description); err != nil {
|
|
return nil, err
|
|
}
|
|
return t.ToView(), nil
|
|
}
|