Initial Commit
This commit is contained in:
83
cmd/api/api.go
Normal file
83
cmd/api/api.go
Normal file
@@ -0,0 +1,83 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"sap-cds-search/cmd/database/table"
|
||||
"time"
|
||||
)
|
||||
|
||||
type CDSViewFieldJSON struct {
|
||||
Fields []table.CDSViewField `json:"fields"`
|
||||
}
|
||||
|
||||
func GetCDSViewField(CDSViewTechnicalName string) error {
|
||||
var json CDSViewFieldJSON
|
||||
path := "https://api.sap.com/odata/1.0/catalog.svc/CdsViewsContent.CdsViews('" + CDSViewTechnicalName + "')/$value"
|
||||
fmt.Println("Getting: ", CDSViewTechnicalName)
|
||||
err := RequestJSON(path, &json)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, field := range json.Fields {
|
||||
field.CDSViewTechnicalName = CDSViewTechnicalName
|
||||
|
||||
err := table.InsertOrReplaceCDSViewField(field)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
continue
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetCDSViewFields() {
|
||||
|
||||
cdsViews, _ := table.QueryAllCDSViewTechnicalNames()
|
||||
|
||||
for _, cdsView := range *cdsViews {
|
||||
var json CDSViewFieldJSON
|
||||
path := "https://api.sap.com/odata/1.0/catalog.svc/CdsViewsContent.CdsViews('" + cdsView + "')/$value"
|
||||
fmt.Println("Getting: ", cdsView)
|
||||
err := RequestJSON(path, &json)
|
||||
if err != nil {
|
||||
fmt.Println(cdsView, err)
|
||||
continue
|
||||
}
|
||||
for _, field := range json.Fields {
|
||||
field.CDSViewTechnicalName = cdsView
|
||||
|
||||
err := table.InsertOrReplaceCDSViewField(field)
|
||||
if err != nil {
|
||||
fmt.Println(field.CDSViewTechnicalName, field.FieldName, err)
|
||||
}
|
||||
}
|
||||
time.Sleep(200 * time.Millisecond)
|
||||
}
|
||||
}
|
||||
|
||||
func RequestJSON(url string, v any) error {
|
||||
response, err := http.Get(url)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
responseData, err := io.ReadAll(response.Body)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(responseData) == 0 {
|
||||
return errors.New("empty response")
|
||||
}
|
||||
|
||||
err = json.Unmarshal(responseData, v)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user