2025-04-18 17:17:23 +08:00

78 lines
1.8 KiB
Go

package repo
import (
"admin/apps/game/domain/entity"
"admin/apps/game/model"
"admin/internal/errcode"
"gorm.io/gorm"
)
type IProjectRepo interface {
List(pageNo, pageLen int) ([]*entity.Project, error)
Create(et *entity.Project) error
Edit(et *entity.Project) error
Delete(id int) error
}
func NewProjectRepo(db *gorm.DB) IProjectRepo {
return newProjectRepoImpl(db)
}
type projectRepoImpl struct {
db *gorm.DB
}
func newProjectRepoImpl(db *gorm.DB) *projectRepoImpl {
return &projectRepoImpl{db: db}
}
func (repo *projectRepoImpl) List(pageNo, pageLen int) ([]*entity.Project, error) {
list := make([]*model.Project, 0)
err := repo.db.Find(&list).Error
if err != nil {
return nil, errcode.New(errcode.DBError, "find project error:%v", err)
}
// debug
list = append(list, &model.Project{
ID: 123,
Name: "神魔大陆",
Desc: "神魔大陆服务器",
ApiAddr: "http://192.168.1.1:8081",
})
entityList := make([]*entity.Project, 0, len(list))
for _, Project := range list {
entityList = append(entityList, entity.FromProjectPo(Project))
}
return entityList, nil
}
func (repo *projectRepoImpl) Create(et *entity.Project) error {
po := et.ToPo()
err := repo.db.Create(po).Error
if err != nil {
return errcode.New(errcode.DBError, "create obj:%+v error:%v", et, err)
}
et.Id = po.ID
return nil
}
func (repo *projectRepoImpl) Edit(et *entity.Project) error {
po := et.ToPo()
err := repo.db.Where("id=?", et.Id).Updates(po).Error
if err != nil {
return errcode.New(errcode.DBError, "edit obj:%+v error:%v", et, err)
}
return nil
}
func (repo *projectRepoImpl) Delete(id int) error {
err := repo.db.Where("id=?", id).Unscoped().Delete(&model.Project{}).Error
if err != nil {
return errcode.New(errcode.DBError, "delete obj:%+v error:%v", id, err)
}
return nil
}