plugai_updsrv/pkg/dal/dao/privilege.go

79 lines
1.9 KiB
Go

package dao
import (
"github.com/civet148/log"
"github.com/civet148/sqlca/v2"
"intent-system/pkg/dal/models"
)
type PrivilegeDAO struct {
db *sqlca.Engine
}
func NewPrivilegeDAO(db *sqlca.Engine) *PrivilegeDAO {
return &PrivilegeDAO{
db: db,
}
}
func (dao *PrivilegeDAO) Insert(dos *models.PrivilegeDO) (id int64, err error) {
if id, err = dao.db.Model(&dos).Table(models.TableNamePrivilege).Insert(); err != nil {
log.Errorf(err.Error())
return
}
return
}
func (dao *PrivilegeDAO) Upsert(do *models.PrivilegeDO, columns ...string) (lastId int64, err error) {
_, err = dao.db.Model(&do).
Table(models.TableNamePrivilege).
Select(models.PRIVILEGE_COLUMN_ID).
Eq(models.PRIVILEGE_COLUMN_NAME, do.Name).
Eq(models.PRIVILEGE_COLUMN_LABEL, do.Label).
Query()
if err != nil {
return 0, log.Errorf(err.Error())
}
if do.Id == 0 {
if lastId, err = dao.db.Model(&do).Table(models.TableNamePrivilege).Insert(); err != nil {
return 0, log.Errorf(err.Error())
}
} else {
if lastId, err = dao.db.Model(&do).Table(models.TableNamePrivilege).Select(columns...).Update(); err != nil {
return 0, log.Errorf(err.Error())
}
}
return lastId, nil
}
func (dao *PrivilegeDAO) IsTableEmpty() (bool, error) {
var count int64
if _, err := dao.db.Model(&count).Table(models.TableNamePrivilege).Count(models.PRIVILEGE_COLUMN_ID).Query(); err != nil {
return false, log.Errorf(err.Error())
}
if count == 0 {
return true, nil
}
return false, nil
}
func (dao *PrivilegeDAO) QueryPrivileges() (privileges models.TreePrivilege) {
var err error
var dos []*models.PrivilegeDO
_, err = dao.db.Model(&dos).Table(models.TableNamePrivilege).Query()
if err != nil {
log.Errorf(err.Error())
return nil
}
for _, do := range dos {
privileges = append(privileges, models.Privilege{
Label: do.Label,
Name: do.Name,
Path: do.Path,
Children: do.Children,
})
}
return
}