package entity

import (
	"context"
	"gorm.io/gorm"
	"yx-dataset-server/app/schema"
)

// GetRoleMenuDB 获取RoleMenu存储
func GetRoleMenuDB(ctx context.Context, defDB *gorm.DB) *gorm.DB {
	return getDBWithModel(ctx, defDB, RoleMenu{})
}

// SchemaRoleMenu RoleMenu对象
type SchemaRoleMenu schema.RoleMenu

// ToRoleMenu 转换为RoleMenu实体
func (a SchemaRoleMenu) ToRoleMenu() *RoleMenu {
	item := &RoleMenu{
		RecordID: a.RecordId,
		RoleId:   a.RoleId,
		MenuId:   a.MenuId,
	}
	return item
}

// ToSchemaRoleMenu 转换为RoleMenu对象
func (a RoleMenu) ToSchemaRoleMenu() *schema.RoleMenu {
	item := &schema.RoleMenu{
		RecordId: a.RecordID,
		RoleId:   a.RoleId,
		MenuId:   a.MenuId,
	}
	return item
}

// RoleMenu RoleMenu实体
type RoleMenu struct {
	gorm.Model
	RecordID string `gorm:"column:record_id;size:32;index;"`
	RoleId   string `gorm:"column:role_id;size:32;index;'"` // 角色id
	MenuId   string `gorm:"column:menu_id;size:32;index;"`  // 菜单Id

}

// RoleMenus RoleMenu列表
type RoleMenus []*RoleMenu

// ToSchemaRoleMenus 转换为RoleMenu对象列表
func (a RoleMenus) ToSchemaRoleMenus() []*schema.RoleMenu {
	list := make([]*schema.RoleMenu, len(a))
	for i, item := range a {
		list[i] = item.ToSchemaRoleMenu()
	}
	return list
}
