oc-catalog/controllers/workspace.go

152 lines
3.6 KiB
Go

package controllers
import (
"cloud.o-forge.io/core/oc-catalog/models"
beego "github.com/beego/beego/v2/server/web"
)
type WorkspaceController struct {
beego.Controller
}
// @Title Add model to workspace
// @Description Insert a resource in the workspace
// @Param id query string true "ID of a resource"
// @Param rtype query string true "Type of resource"
// @Success 200 {string} login success
// @Failure 403 Authentication issue
// @Failure 400 {string} Other error
// // @Security jwtAPIToken
// @router / [post]
func (u *WorkspaceController) AddModel(id, rtype string) {
// token := u.Ctx.Input.GetData("jwtAPIToken").(string)
// //TODO: Implement as swagger security definition (api key?)
// username, err := GetUsernameFromToken(token)
// if err != nil {
// u.Data["json"] = "No valid token"
// u.Ctx.Output.Status = 403
// u.ServeJSON()
// return
// }
var err error
username := "asd"
w := models.GetWorkspace(username)
if w == nil {
w, err = models.NewWorkspace(username)
if err != nil {
u.Data["json"] = err.Error()
u.Ctx.Output.Status = 400
u.ServeJSON()
return
}
}
// w.NewResource(id, rtype)
if err := models.AddResource(username, id, rtype); err != nil {
u.Data["json"] = err.Error()
u.Ctx.Output.Status = 400
u.ServeJSON()
return
}
}
// @Title Get workspace
// @Description Get workspace elements based on user_id token
// @Success 200 {object} models.Workspace
// @Failure 403 Authentication issue
// // @Security jwtAPIToken
// @router /list [get]
func (u *WorkspaceController) ListWorkspace() {
// token := u.Ctx.Input.GetData("jwtAPIToken").(string)
// //TODO: Implement as swagger security definition (api key?)
// username, err := GetUsernameFromToken(token)
// if err != nil {
// u.Data["json"] = "No valid token"
// u.Ctx.Output.Status = 403
// u.ServeJSON()
// return
// }
username := "asd"
ws := models.GetWorkspace(username)
// if ws == nil {
// u.Ctx.Output.Status = 503
// return
// }
u.Data["json"] = ws
u.ServeJSON()
}
// @Title Get full workspace
// @Description Get full workspace elements based on user_id token
// @Success 200 {object} models.WorkspaceModel
// @Failure 403 Authentication issue
// // @Security jwtAPIToken
// @router /list_model [get]
func (u *WorkspaceController) ListWorkspaceModel() {
// token := u.Ctx.Input.GetData("jwtAPIToken").(string)
// //TODO: Implement as swagger security definition (api key?)
// username, err := GetUsernameFromToken(token)
// if err != nil {
// u.Data["json"] = "No valid token"
// u.Ctx.Output.Status = 403
// u.ServeJSON()
// return
// }
username := "asd"
val, err := models.ListFullWorkspace(username)
if err != nil {
u.Ctx.Output.Status = 503
return
}
u.Data["json"] = val
u.ServeJSON()
}
// @Title Delete element from user workspace
// @Description Remove a resource from the workspace
// @Param id query string true "ID of a resource"
// @Param rtype query string true "Type of resource"
// @Success 200 {string} Removed succeful
// @Failure 403 Authentication issue
// @Failure 400 {string} Other error
// // @Security jwtAPIToken
// @router / [delete]
func (u *WorkspaceController) DeleteElement(id, rtype string) {
// token := u.Ctx.Input.GetData("jwtAPIToken").(string)
// //TODO: Implement as swagger security definition (api key?)
// username, err := GetUsernameFromToken(token)
// if err != nil {
// u.Data["json"] = "No valid token"
// u.Ctx.Output.Status = 403
// u.ServeJSON()
// return
// }
username := "asd"
if err := models.RemoveResource(username, id, rtype); err != nil {
u.Data["json"] = err.Error()
u.Ctx.Output.Status = 400
u.ServeJSON()
return
}
}