mapping_rule_dto.go 1.2 KB
package dto

import "gitlab.fjmaimaimai.com/allied-creation/character-library-metadata-bastion/pkg/domain"

type MappingRuleDto struct {
	// 匹配规则ID
	MappingRuleId int `json:"mappingRuleId"`
	// 名称
	Name string `json:"name"`
	// 表Id
	TableId int `json:"tableId"`
	// 文件ID
	FileId int `json:"fileId"`
	// 主表列
	MainTableFields []*domain.Field `json:"mainTableFields,omitempty"`
	// 校验文件列
	VerifiedFileFields []*domain.Field `json:"verifiedFileFields,omitempty"`
	// 校验文件列
	MappingFields []*domain.MappingField `json:"mappingFields,omitempty"`
}

func (d *MappingRuleDto) Load(m *domain.MappingRule, detail bool) {
	d.MappingRuleId = m.MappingRuleId
	d.Name = m.Name
	d.TableId = m.TableId
	d.FileId = m.FileId
	if detail {
		d.MainTableFields = m.MainTableFields
		d.VerifiedFileFields = m.VerifiedFileFields
		d.MappingFields = m.MappingFields
	}
}

func (d *MappingRuleDto) LoadFromTableAndFile(m *domain.Table, f *domain.File, fm *domain.Table) {
	d.MappingRuleId = 0
	d.Name = m.Name
	d.TableId = m.TableId
	d.FileId = f.FileId
	d.MainTableFields = m.Fields(false)
	d.VerifiedFileFields = fm.Fields(false)
	d.MappingFields = domain.NewMappingFields(d.MainTableFields, d.VerifiedFileFields)
}