diff --git a/controllers/workflow.go b/controllers/workflow.go index d6e35f5..764b1f3 100644 --- a/controllers/workflow.go +++ b/controllers/workflow.go @@ -6,6 +6,7 @@ import ( "fmt" oclib "cloud.o-forge.io/core/oc-lib" + "cloud.o-forge.io/core/oc-lib/models/workflow" "cloud.o-forge.io/core/oc-lib/tools" beego "github.com/beego/beego/v2/server/web" ) @@ -55,7 +56,7 @@ func (o *WorkflowController) Search() { // @Success 200 {object} models.workflow // @router /:id [put] func (o *WorkflowController) Put() { - // user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) + user, _, _ := oclib.ExtractTokenInfo(*o.Ctx.Request) // store and return Id or post with UUID var res map[string]interface{} id := o.Ctx.Input.Param(":id") @@ -66,7 +67,9 @@ func (o *WorkflowController) Put() { o.Ctx.Input.Param("is_remote") // data := oclib.NewRequest(oclib.LibDataEnum(oclib.WORKFLOW), user, peerID, groups, caller).UpdateOne(res, id) data := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.WORKFLOW), caller).UpdateOne(res, id) - + if wf := data.ToWorkflow(); wf != nil { + EmitNATS(user, tools.CREATE_RESOURCE, wf) + } o.Data["json"] = data o.ServeJSON() } @@ -145,7 +148,11 @@ func (o *WorkflowController) Delete() { id := o.Ctx.Input.Param(":id") caller := tools.NewHTTPCaller(paths) // create a new HTTP caller caller.Disabled = oclib.IsQueryParamsEquals(o.Ctx.Input, "is_remote", true) - o.Data["json"] = oclib.NewRequest(oclib.LibDataEnum(oclib.WORKFLOW), user, peerID, groups, caller).DeleteOne(id) + data := oclib.NewRequest(oclib.LibDataEnum(oclib.WORKFLOW), user, peerID, groups, caller).DeleteOne(id) + if wf := data.ToWorkflow(); wf != nil { + EmitNATS(user, tools.REMOVE_RESOURCE, wf) + } + o.Data["json"] = data o.ServeJSON() } @@ -206,3 +213,14 @@ func (o *WorkflowController) Check() { } o.ServeJSON() } + +func EmitNATS(user string, method tools.NATSMethod, wf *workflow.Workflow) { + if b, err := json.Marshal(wf); err == nil { + tools.NewNATSCaller().SetNATSPub(method, tools.NATSResponse{ + FromApp: "oc-catalog", + Datatype: tools.WORKFLOW, + Method: int(method), + Payload: b, + }) + } +} diff --git a/go.mod b/go.mod index 1e62fd3..6400337 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module oc-workflow go 1.24.6 require ( - cloud.o-forge.io/core/oc-lib v0.0.0-20260219084344-9662ac6d678c + cloud.o-forge.io/core/oc-lib v0.0.0-20260223092355-12c506e9a7b1 github.com/beego/beego/v2 v2.3.7 github.com/nats-io/nats.go v1.41.2 github.com/smartystreets/goconvey v1.7.2 diff --git a/go.sum b/go.sum index 9afea40..e9dcb36 100644 --- a/go.sum +++ b/go.sum @@ -28,6 +28,10 @@ cloud.o-forge.io/core/oc-lib v0.0.0-20260218132556-0b41e2505e2f h1:OFuJhi23D/UNw cloud.o-forge.io/core/oc-lib v0.0.0-20260218132556-0b41e2505e2f/go.mod h1:jmyBwmsac/4V7XPL347qawF60JsBCDmNAMfn/ySXKYo= cloud.o-forge.io/core/oc-lib v0.0.0-20260219084344-9662ac6d678c h1:brsB6se+xMv386Vf6dSu3In2QZSH4EqgcAYkI4fNpJw= cloud.o-forge.io/core/oc-lib v0.0.0-20260219084344-9662ac6d678c/go.mod h1:jmyBwmsac/4V7XPL347qawF60JsBCDmNAMfn/ySXKYo= +cloud.o-forge.io/core/oc-lib v0.0.0-20260223083003-28713536358b h1:Tx8hvmJJvt8BYNQsKGYuyCVnQHG59dfyYGP0+NDNxVs= +cloud.o-forge.io/core/oc-lib v0.0.0-20260223083003-28713536358b/go.mod h1:jmyBwmsac/4V7XPL347qawF60JsBCDmNAMfn/ySXKYo= +cloud.o-forge.io/core/oc-lib v0.0.0-20260223092355-12c506e9a7b1 h1:LI96GUAlCBLbPxJlEovZCbgR+CdSl2Ua70jQ2A0VVrU= +cloud.o-forge.io/core/oc-lib v0.0.0-20260223092355-12c506e9a7b1/go.mod h1:jmyBwmsac/4V7XPL347qawF60JsBCDmNAMfn/ySXKYo= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/beego/beego/v2 v2.3.7 h1:z4btKtjU/rfp5BiYHkGD2QPjK9i1E9GH+I7vfhn6Agk= github.com/beego/beego/v2 v2.3.7/go.mod h1:5cqHsOHJIxkq44tBpRvtDe59GuVRVv/9/tyVDxd5ce4=