goploy/internal/model/role_permission.go
2023-05-12 10:11:38 +08:00

83 lines
1.9 KiB
Go

// Copyright 2022 The Goploy Authors. All rights reserved.
// Use of this source code is governed by a GPLv3-style
// license that can be found in the LICENSE file.
package model
import (
sq "github.com/Masterminds/squirrel"
)
const rolePermissionTable = "`role_permission`"
type RolePermission struct {
ID int64 `json:"id"`
RoleID int64 `json:"roleId"`
PermissionID int64 `json:"permissionId"`
InsertTime string `json:"insertTime,omitempty"`
UpdateTime string `json:"updateTime,omitempty"`
}
type RolePermissions []RolePermission
func (rp RolePermission) GetData() (RolePermission, error) {
var rolePermission RolePermission
err := sq.
Select("id, role_id, permission_id").
From(rolePermissionTable).
Where(sq.Eq{"role_id": rp.RoleID}).
RunWith(DB).
QueryRow().
Scan(&rolePermission.RoleID, &rolePermission.PermissionID)
return rolePermission, err
}
func (rp RolePermission) GetList() (RolePermissions, error) {
rows, err := sq.
Select("id, role_id, permission_id").
From(rolePermissionTable).
Where(sq.Eq{"role_id": rp.RoleID}).
OrderBy("id DESC").
RunWith(DB).
Query()
if err != nil {
return nil, err
}
rolePermissions := RolePermissions{}
for rows.Next() {
var rolePermission RolePermission
if err := rows.Scan(&rolePermission.ID, &rolePermission.RoleID, &rolePermission.PermissionID); err != nil {
return nil, err
}
rolePermissions = append(rolePermissions, rolePermission)
}
return rolePermissions, nil
}
func (rps RolePermissions) AddMany() error {
if len(rps) == 0 {
return nil
}
builder := sq.
Insert(rolePermissionTable).
Columns("role_id", "permission_id")
for _, row := range rps {
builder = builder.Values(row.RoleID, row.PermissionID)
}
_, err := builder.RunWith(DB).Exec()
return err
}
func (rp RolePermission) DeleteByRoleID() error {
_, err := sq.
Delete(rolePermissionTable).
Where(sq.Eq{"role_id": rp.RoleID}).
RunWith(DB).
Exec()
return err
}