func NewProject()

in domain/project.go [20:78]


func NewProject(p *api.Project, isInitClient bool) *Project {
	project := Project{
		Project:          p,
		FeatureViewMap:   make(map[string]FeatureView),
		FeatureEntityMap: make(map[string]*FeatureEntity),
		ModelMap:         make(map[string]*Model),
	}

	switch p.OnlineDatasourceType {
	case constants.Datasource_Type_Hologres:
		onlineStore := &HologresOnlineStore{
			Datasource: p.OnlineDataSource,
		}
		if isInitClient {
			dsn := onlineStore.Datasource.GenerateDSN(constants.Datasource_Type_Hologres)
			hologres.RegisterHologres(onlineStore.Name, dsn)
		}
		project.OnlineStore = onlineStore
	case constants.Datasource_Type_IGraph:
		onlineStore := &IGraphOnlineStore{
			Datasource: p.OnlineDataSource,
		}

		if isInitClient {
			if p.OnlineDataSource.TestMode {
				client := igraph.NewGraphClient(p.OnlineDataSource.PublicAddress, p.OnlineDataSource.User, p.OnlineDataSource.Pwd)
				igraph.RegisterGraphClient(onlineStore.Name, client)
			} else {
				client := igraph.NewGraphClient(p.OnlineDataSource.VpcAddress, p.OnlineDataSource.User, p.OnlineDataSource.Pwd)
				igraph.RegisterGraphClient(onlineStore.Name, client)
			}
		}
		project.OnlineStore = onlineStore
	case constants.Datasource_Type_TableStore:
		onlineStore := &TableStoreOnlineStore{
			Datasource: p.OnlineDataSource,
		}

		if isInitClient {
			client := onlineStore.Datasource.NewTableStoreClient()
			tablestore.RegisterTableStoreClient(onlineStore.Name, client)
		}
		project.OnlineStore = onlineStore
	case constants.Datasource_Type_FeatureDB:
		onlineStore := &FeatureDBOnlineStore{
			Datasource: p.OnlineDataSource,
		}

		project.OnlineStore = onlineStore
	default:
		panic("not support onlinestore type")
	}

	if p.FeatureDBAddress != "" && p.FeatureDBToken != "" {
		featuredb.InitFeatureDBClient(p.FeatureDBAddress, p.FeatureDBToken, p.FeatureDBVpcAddress)
	}

	return &project
}