87 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 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
 | |
| }
 |