func NewModel()

in domain/model.go [22:63]


func NewModel(model *api.Model, p *Project) *Model {
	m := &Model{
		Model:                  model,
		project:                p,
		featureViewMap:         make(map[string]FeatureView),
		featureEntityMap:       make(map[string]*FeatureEntity),
		featureNamesMap:        make(map[string][]string),
		aliasNamesMap:          make(map[string]map[string]string),
		featureEntityJoinIdMap: make(map[string]map[string]FeatureView),
	}

	for _, feature := range m.Features {
		featureView := m.project.GetFeatureView(feature.FeatureViewName)

		featureEntity := m.project.GetFeatureEntity(featureView.GetFeatureEntityName())
		m.featureViewMap[feature.FeatureViewName] = featureView
		m.featureEntityMap[featureView.GetFeatureEntityName()] = featureEntity
		m.featureNamesMap[feature.FeatureViewName] = append(m.featureNamesMap[feature.FeatureViewName], featureView.Offline2Online(feature.Name))

		if feature.AliasName != "" {
			aliasMap, ok := m.aliasNamesMap[feature.FeatureViewName]
			if !ok {
				aliasMap = make(map[string]string)
			}
			aliasMap[feature.Name] = feature.AliasName
			m.aliasNamesMap[feature.FeatureViewName] = aliasMap
		}
		featureViewMap, ok := m.featureEntityJoinIdMap[featureEntity.FeatureEntityJoinid]
		if !ok {
			featureViewMap = make(map[string]FeatureView)
		}
		featureViewMap[feature.FeatureViewName] = featureView
		m.featureEntityJoinIdMap[featureEntity.FeatureEntityJoinid] = featureViewMap

	}
	for joinid := range m.featureEntityJoinIdMap {
		m.featureEntityJoinIdList = append(m.featureEntityJoinIdList, joinid)
	}

	//fmt.Println(m)
	return m
}