1
0
Fork 0
forked from 0x2E/fusion
fusion/server/group.go
Michael Lynch d6194e3fc7 Delete mockgen mocks
The project has several mockgen mocks and a build step that auto-updates them on each build, but they appear to be unused, so this PR deletes them.
2024-12-27 04:08:04 -05:00

76 lines
1.6 KiB
Go

package server
import (
"context"
"errors"
"net/http"
"github.com/0x2e/fusion/model"
"github.com/0x2e/fusion/repo"
)
type GroupRepo interface {
All() ([]*model.Group, error)
Create(group *model.Group) error
Update(id uint, group *model.Group) error
Delete(id uint) error
}
type Group struct {
repo GroupRepo
}
func NewGroup(repo GroupRepo) *Group {
return &Group{
repo: repo,
}
}
func (g Group) All(ctx context.Context) (*RespGroupAll, error) {
data, err := g.repo.All()
if err != nil {
return nil, err
}
groups := make([]*GroupForm, 0, len(data))
for _, v := range data {
groups = append(groups, &GroupForm{
ID: v.ID,
Name: v.Name,
})
}
return &RespGroupAll{
Groups: groups,
}, nil
}
func (g Group) Create(ctx context.Context, req *ReqGroupCreate) (*RespGroupCreate, error) {
newGroup := &model.Group{
Name: req.Name,
}
err := g.repo.Create(newGroup)
if err != nil {
if errors.Is(err, repo.ErrDuplicatedKey) {
err = NewBizError(err, http.StatusBadRequest, "name is not allowed to be the same as other groups")
}
return nil, err
}
return &RespGroupCreate{ID: newGroup.ID}, nil
}
func (g Group) Update(ctx context.Context, req *ReqGroupUpdate) error {
err := g.repo.Update(req.ID, &model.Group{
Name: req.Name,
})
if errors.Is(err, repo.ErrDuplicatedKey) {
err = NewBizError(err, http.StatusBadRequest, "name is not allowed to be the same as other groups")
}
return err
}
func (g Group) Delete(ctx context.Context, req *ReqGroupDelete) error {
if req.ID == 1 {
return errors.New("cannot delete the default group")
}
return g.repo.Delete(req.ID)
}