in dao/feature_view_featuredb_dao.go [1277:1310]
func (d *FeatureViewFeatureDBDao) createSnapshot() (string, int64, error) {
req, err := http.NewRequest("POST", fmt.Sprintf("%s/api/v1/tables/%s/%s/%s/snapshots",
d.featureDBClient.GetCurrentAddress(false), d.database, d.schema, d.table), bytes.NewReader(nil))
if err != nil {
return "", 0, err
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", d.featureDBClient.Token)
req.Header.Set("Auth", d.signature)
response, err := d.featureDBClient.Client.Do(req)
if err != nil {
return "", 0, err
}
defer response.Body.Close()
if response.StatusCode != http.StatusOK {
body, _ := io.ReadAll(response.Body)
return "", 0, fmt.Errorf("status code: %d, response body: %s", response.StatusCode, string(body))
}
resonseBody := struct {
RequestId string `json:"request_id,omitempty"`
Code string `json:"code"`
Message string `json:"message,omitempty"`
Data map[string]any `json:"data,omitempty"`
}{}
decoder := json.NewDecoder(response.Body)
decoder.UseNumber()
if err := decoder.Decode(&resonseBody); err != nil {
return "", 0, err
}
return resonseBody.Data["snapshot_id"].(string), utils.ToInt64(resonseBody.Data["ts"], 0), nil
}