package model import ( "fmt" "sap-cds-search/cmd/database/table" "strings" "golang.org/x/text/cases" "golang.org/x/text/language" ) type CDSViewFieldModel struct { table.CDSViewField DataTypeTitle string FieldLengthOut string DescriptionOut string } type CDSViewModel struct { *table.CDSView StateTitle string Fields *[]CDSViewFieldModel } var englishCases = cases.Title(language.English) func GetCDSViewModel(TechnicalName string) (*CDSViewModel, error) { var model CDSViewModel cdsView, err := table.GetCDSView(TechnicalName) if err != nil { return nil, err } model.CDSView = cdsView model.StateTitle = englishCases.String(model.State) fields, err := table.GetCDSViewFields(TechnicalName) if err != nil { return nil, err } var fieldModel CDSViewFieldModel var fieldsModel []CDSViewFieldModel for _, field := range *fields { fieldModel.CDSViewField = field fieldModel.DataTypeTitle = englishCases.String(field.DataType) fieldModel.FieldLengthOut = strings.TrimLeft(field.FieldLength, "0") fieldModel.DescriptionOut = field.Description if fieldModel.DescriptionOut == "" { fieldModel.DescriptionOut = "-" } fieldsModel = append(fieldsModel, fieldModel) } model.Fields = &fieldsModel return &model, nil } func GetAllCDSViewModels() (*[]CDSViewModel, error) { cdsViewTechnicalNames, err := table.QueryAllCDSViewTechnicalNames() if err != nil { return nil, err } var cdsViewModels []CDSViewModel for _, cdsViewTechnicalName := range *cdsViewTechnicalNames { cdsViewModel, err := GetCDSViewModel(cdsViewTechnicalName) if err != nil { fmt.Println(err) continue } cdsViewModels = append(cdsViewModels, *cdsViewModel) } return &cdsViewModels, nil }