query_set_detail_dto.go 1.2 KB
package dto

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

type QuerySetDetailDto struct {
	// 查询集合ID
	QuerySetId int `json:"querySetId"`
	// Schema:方案  SubProcess:子过程
	Type string `json:"type"`
	// 标识 分组:Group 子过程/方案:Set
	Flag string `json:"flag"`
	// 名称
	Name string `json:"name"`
	// 查询组件
	QueryComponents []*domain.QueryComponent `json:"queryComponents"`
	// 查询集绑定的表
	TableId int `json:"tableId"`
}

func (d *QuerySetDetailDto) Load(m *domain.QuerySet, mapTables map[int]*domain.Table) *QuerySetDetailDto {
	d.QuerySetId = m.QuerySetId
	d.Type = m.Type
	d.Flag = m.Flag
	d.Name = m.Name
	d.QueryComponents = m.QueryComponents
	if m.QuerySetInfo != nil {
		d.TableId = m.QuerySetInfo.BindTableId
	}
	for i, q := range d.QueryComponents {
		if q.MasterTable != nil && q.MasterTable.TableId != 0 {
			if t, ok := mapTables[q.MasterTable.TableId]; ok {
				d.QueryComponents[i].MasterTable = domain.NewQueryComponentTable(t)
			}
		}
		if d.QueryComponents[i].Aggregation != nil {
			d.QueryComponents[i].Aggregation.Aggregation.AllFields = d.QueryComponents[i].Aggregation.AggregationFields()
		}
	}
	return d
}