78 lines
1.8 KiB
Go
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
|
|
}
|