package controllers import ( "cloud.o-forge.io/core/oc-catalog/models" beego "github.com/beego/beego/v2/server/web" "github.com/go-playground/validator/v10" ) // All operations related to the rType data type DataController struct { beego.Controller } var validate *validator.Validate func init() { validate = validator.New() } // @Title Get data by ID // @Description Find rType data based on ID // @Param ID path string true "The ID of the data resource" // @Success 200 {object} models.DataModel // @Failure 403 ID is empty // @router /:ID [get] func (o *DataController) GetOneData(ID string) { if ID != "" { ob, err := models.GetOneData(ID) if err != nil { o.Ctx.Output.SetStatus(500) } else { o.Data["json"] = ob } } else { o.Ctx.Output.SetStatus(403) } o.ServeJSON() } // @Title Get multiple data by IDs // @Description Return Data object if found in the DB. Not found IDs will be ignored // @Param IDs path []string true "List of data IDs" // @Success 200 {object} []models.DataModel // @Failure 403 IDs are empty // @router /multi/:IDs [get] func (o *DataController) GetMultipleData(IDs []string) { if len(IDs) != 0 { ob, err := models.GetMultipleData(IDs) if err != nil { o.Ctx.Output.SetStatus(500) } else { o.Data["json"] = ob } } else { o.Ctx.Output.SetStatus(403) } o.ServeJSON() } // @Title Create Data // @Description Submit data object // @Param body body models.DataNEWModel true "The object content" // @Success 200 {string} ID // @Failure 403 Missing body or fields // @router / [post] func (o *DataController) PostData(body models.DataNEWModel) { err := validate.Struct(body) // validationErrors := err.(validator.ValidationErrors) if err != nil { o.Ctx.Output.Status = 403 o.ServeJSON() return } ID, err := models.PostOneData(body) if err != nil { o.Ctx.Output.SetStatus(500) return } o.Data["json"] = map[string]string{"ID": ID} o.ServeJSON() }