152 lines
3.6 KiB
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
|
||
|
}
|
||
|
}
|