79 lines
1.9 KiB
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
|
|
}
|