diff --git a/controllers/purchase.go b/controllers/purchase.go new file mode 100755 index 0000000..341c8c3 --- /dev/null +++ b/controllers/purchase.go @@ -0,0 +1,72 @@ +package controllers + +import ( + "encoding/json" + + oclib "cloud.o-forge.io/core/oc-lib" + beego "github.com/beego/beego/v2/server/web" +) + +// Operations about compute +type PurchaseController struct { + beego.Controller +} + +var order_collection = oclib.LibDataEnum(oclib.ORDER) +var purchase_collection = oclib.LibDataEnum(oclib.PURCHASE_RESOURCE) + +// @Title Create +// @Description create compute +// @Param compute body json true "body for compute content (Json format)" +// @Success 200 {compute} models.compute +// @router / [post] +func (o *PurchaseController) Post() { + user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) + var res map[string]interface{} + json.Unmarshal(o.Ctx.Input.CopyBody(10000), &res) + stored := oclib.NewRequest(purchase_collection, user, peerID, groups, nil).StoreOne(res) + if stored.Err != "" { + o.Data["json"] = stored + o.ServeJSON() + return + } + o.ServeJSON() +} + +// @Title GetAll +// @Description find compute by id +// @Param is_draft query string false "draft wished" +// @Success 200 {compute} models.compute +// @router / [get] +func (o *PurchaseController) GetAll() { + user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) + isDraft := o.Ctx.Input.Query("is_draft") + o.Data["json"] = oclib.NewRequest(purchase_collection, user, peerID, groups, nil).LoadAll(isDraft == "true") + o.ServeJSON() +} + +// @Title Get +// @Description find compute by key word +// @Param search path string true "the search you want to get" +// @Param is_draft query string false "draft wished" +// @Success 200 {compute} models.compute +// @router /search/:search [get] +func (o *PurchaseController) Search() { + user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) + isDraft := o.Ctx.Input.Query("is_draft") + search := o.Ctx.Input.Param(":search") + o.Data["json"] = oclib.NewRequest(purchase_collection, user, peerID, groups, nil).Search(nil, search, isDraft == "true") + o.ServeJSON() +} + +// @Title Get +// @Description find compute by id +// @Param id path string true "the id you want to get" +// @Success 200 {compute} models.compute +// @router /:id [get] +func (o *PurchaseController) Get() { + user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) + id := o.Ctx.Input.Param(":id") + o.Data["json"] = oclib.NewRequest(purchase_collection, user, peerID, groups, nil).LoadOne(id) + o.ServeJSON() +} diff --git a/go.mod b/go.mod index 430f308..0728cf8 100755 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.22.0 toolchain go1.22.4 require ( - cloud.o-forge.io/core/oc-lib v0.0.0-20250219142942-5111c9c8bec7 + cloud.o-forge.io/core/oc-lib v0.0.0-20250624064953-2c8dcbe93d14 github.com/beego/beego/v2 v2.3.4 github.com/smartystreets/goconvey v1.7.2 ) diff --git a/go.sum b/go.sum index a36738b..1975a36 100755 --- a/go.sum +++ b/go.sum @@ -26,6 +26,24 @@ cloud.o-forge.io/core/oc-lib v0.0.0-20250219104152-3ecb0e9d960b h1:DhRqJdw2VePaY cloud.o-forge.io/core/oc-lib v0.0.0-20250219104152-3ecb0e9d960b/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE= cloud.o-forge.io/core/oc-lib v0.0.0-20250219142942-5111c9c8bec7 h1:fh6SzBPenzIxufIIzExtx4jEE4OhFposqn3EbHFr92Q= cloud.o-forge.io/core/oc-lib v0.0.0-20250219142942-5111c9c8bec7/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE= +cloud.o-forge.io/core/oc-lib v0.0.0-20250619061111-938f9f1326ff h1:CB4WNMeqOSJKOLi8pa5F2lpTRAFykueODRdjVJ5Ecfc= +cloud.o-forge.io/core/oc-lib v0.0.0-20250619061111-938f9f1326ff/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620055332-4c2ecd3f4179 h1:nNxQEozE9W6ZeZCwdhB8vR7sZJ4h1Y0ARxfX/aOGv4k= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620055332-4c2ecd3f4179/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620061052-d3cfe019e3a3 h1:rUmQoH3TBMq73A6gP9tWVbD7EyWeC9VI+YcXy2ITcso= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620061052-d3cfe019e3a3/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620063433-8d5ba6a5e4c9 h1:5kZUCjFSxRndgNX3qWcI9ygeJNdTSR8VqV2XqEbRKlY= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620063433-8d5ba6a5e4c9/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620072209-01af8237dbbd h1:YUd2qOfPO3wHiKfSf+uIt5+TyA9LTLuKsqVXGuusjA4= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620072209-01af8237dbbd/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620072755-8b38249df7f2 h1:prLu7mZOHK3wUTEtFul8wnsIaLIssZRRv2cJDue9LB4= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620072755-8b38249df7f2/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620085001-583ca2fbacd5 h1:FEBwueVOOWKYf0tJuE0EKNIbjxmTyCMgkT4qATYsfbo= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620085001-583ca2fbacd5/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620101113-e84d262f380b h1:wGDMS97ns+7QR0mQREF640PjG/2mUmEIB0qbxkDc/dg= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620101113-e84d262f380b/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250624064953-2c8dcbe93d14 h1:iCTrYc2+W2BFLOupRK1sD6sOgsK4NIs6WMC+4LiWCaY= +cloud.o-forge.io/core/oc-lib v0.0.0-20250624064953-2c8dcbe93d14/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/beego/beego/v2 v2.3.4 h1:HurQEOGIEhLlPFCTR6ZDuQkybrUl2Ag2i6CdVD2rGiI= github.com/beego/beego/v2 v2.3.4/go.mod h1:5cqHsOHJIxkq44tBpRvtDe59GuVRVv/9/tyVDxd5ce4= diff --git a/routers/router.go b/routers/router.go index c1cf181..b4cbc08 100755 --- a/routers/router.go +++ b/routers/router.go @@ -15,6 +15,11 @@ import ( func init() { ns := beego.NewNamespace("/oc/", + beego.NSNamespace("/purchase", + beego.NSInclude( + &controllers.PurchaseController{}, + ), + ), beego.NSNamespace("/resource", beego.NSInclude( &controllers.ResourceController{},