func NewFeatureStoreClient()

in featurestore/feature_store_client.go [127:174]


func NewFeatureStoreClient(regionId, accessKeyId, accessKeySecret, projectName string, opts ...ClientOption) (fsclient *FeatureStoreClient, err error) {
	defer func() {
		if r := recover(); r != nil {
			//err = fmt.Errorf("error: %v", r)
		}
	}()
	client := FeatureStoreClient{
		projectMap:           make(map[string]*domain.Project, 0),
		loopLoadData:         true,
		datasourceInitClient: true,
		hologresPort:         80,
		stopChan:             make(chan struct{}),
	}

	for _, opt := range opts {
		opt(&client)
	}

	cfg := api.NewConfiguration(regionId, accessKeyId, accessKeySecret, client.token, projectName)

	if client.testMode {
		cfg.SetDomain(fmt.Sprintf("paifeaturestore.%s.aliyuncs.com", regionId))
	}
	if client.domain != "" {
		cfg.SetDomain(client.domain)
	}

	apiClient, err := api.NewAPIClient(cfg)
	if err != nil {
		return nil, err
	}

	client.client = apiClient

	if err = client.Validate(); err != nil {
		return nil, err
	}

	if err = client.LoadProjectData(); err != nil {
		return nil, err
	}

	if client.loopLoadData {
		go client.loopLoadProjectData()
	}

	return &client, nil
}