sqlx
This commit is contained in:
86
internal/erpserver/repository/system/rolemenu/role_menu.go
Normal file
86
internal/erpserver/repository/system/rolemenu/role_menu.go
Normal file
@@ -0,0 +1,86 @@
|
||||
package rolemenu
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"management/internal/erpserver/model/system"
|
||||
"management/internal/erpserver/repository"
|
||||
"management/internal/pkg/sqldb"
|
||||
|
||||
"github.com/drhin/logger"
|
||||
)
|
||||
|
||||
type store struct {
|
||||
db *repository.Store
|
||||
log *logger.Logger
|
||||
}
|
||||
|
||||
func NewStore(db *repository.Store, log *logger.Logger) system.RoleMenuRepository {
|
||||
return &store{
|
||||
db: db,
|
||||
log: log,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *store) Create(ctx context.Context, obj []*system.RoleMenu) error {
|
||||
if len(obj) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
//goland:noinspection ALL
|
||||
const q = `
|
||||
INSERT INTO sys_role_menu (
|
||||
role_id, menu_id
|
||||
) VALUES (
|
||||
:role_id, :menu_id
|
||||
);`
|
||||
|
||||
return sqldb.NamedExecContext(ctx, s.log, s.db.DB(ctx), q, obj)
|
||||
}
|
||||
|
||||
func (s *store) DeleteByRoleID(ctx context.Context, roleID int32) error {
|
||||
//goland:noinspection ALL
|
||||
const q = `
|
||||
DELETE FROM
|
||||
sys_role_menu
|
||||
WHERE
|
||||
role_id = :role_id;`
|
||||
|
||||
data := map[string]any{
|
||||
"role_id": roleID,
|
||||
}
|
||||
|
||||
return sqldb.NamedExecContext(ctx, s.log, s.db.DB(ctx), q, data)
|
||||
}
|
||||
|
||||
func (s *store) ListByRoleID(ctx context.Context, roleID int32) ([]*system.RoleMenu, error) {
|
||||
//goland:noinspection ALL
|
||||
const q = `
|
||||
SELECT
|
||||
role_id, menu_id
|
||||
FROM
|
||||
sys_role_menu
|
||||
WHERE
|
||||
role_id = :role_id;`
|
||||
|
||||
data := map[string]any{
|
||||
"role_id": roleID,
|
||||
}
|
||||
|
||||
var roleMenus []system.RoleMenu
|
||||
err := sqldb.NamedQuerySlice(ctx, s.log, s.db.DB(ctx), q, data, &roleMenus)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("select role menu by role id: %w", err)
|
||||
}
|
||||
|
||||
return toPointer(roleMenus), nil
|
||||
}
|
||||
|
||||
func toPointer(data []system.RoleMenu) []*system.RoleMenu {
|
||||
var res []*system.RoleMenu
|
||||
for _, v := range data {
|
||||
res = append(res, &v)
|
||||
}
|
||||
return res
|
||||
}
|
||||
Reference in New Issue
Block a user