in datasource/featuredb/fdbserverpb/fdbserver.go [14:71]
func BatchWriteBloomKV(project *domain.Project, featureView domain.FeatureView, request *BatchWriteKVReqeust) error {
fdbClient, err := featuredb.GetFeatureDBClient()
if err != nil {
return err
}
requestData, err := proto.Marshal(request)
if err != nil {
return err
}
req, err := http.NewRequest("POST", fmt.Sprintf("%s/api/v1/tables/%s/%s/%s/bloom_write",
fdbClient.GetCurrentAddress(false), project.InstanceId, project.ProjectName, featureView.GetName()), bytes.NewReader(requestData))
if err != nil {
return err
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", fdbClient.Token)
req.Header.Set("Auth", project.Signature)
response, err := fdbClient.Client.Do(req)
if err != nil {
req, err = http.NewRequest("POST", fmt.Sprintf("%s/api/v1/tables/%s/%s/%s/bloom_write",
fdbClient.GetCurrentAddress(true), project.InstanceId, project.ProjectName, featureView.GetName()), bytes.NewReader(requestData))
if err != nil {
return err
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", fdbClient.Token)
req.Header.Set("Auth", project.Signature)
response, err = fdbClient.Client.Do(req)
if err != nil {
return err
}
}
defer response.Body.Close()
responseData, err := io.ReadAll(response.Body)
if err != nil {
return err
}
if response.StatusCode != 200 {
return fmt.Errorf("status code: %d, response body: %s", response.StatusCode, string(responseData))
}
responseBody := &BatchWriteKVResponse{}
if err := proto.Unmarshal(responseData, responseBody); err != nil {
return err
}
if len(responseBody.ErrorMessages) > 0 {
return fmt.Errorf("error messages: %s", responseBody.ErrorMessages)
}
return nil
}