NATS default sending new scheduler
This commit is contained in:
		@@ -9,6 +9,7 @@ import (
 | 
			
		||||
	w "cloud.o-forge.io/core/oc-lib/models/workflow"
 | 
			
		||||
	tools "cloud.o-forge.io/core/oc-lib/tools"
 | 
			
		||||
	beego "github.com/beego/beego/v2/server/web"
 | 
			
		||||
	"github.com/nats-io/nats.go"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Operations about workflow
 | 
			
		||||
@@ -40,11 +41,44 @@ func (o *WorkflowController) Put() {
 | 
			
		||||
	id := o.Ctx.Input.Param(":id")
 | 
			
		||||
	json.Unmarshal(o.Ctx.Input.CopyBody(10000), &res)
 | 
			
		||||
	caller := tools.NewHTTPCaller("", "", "", oclib.GetPath(oclib.LibDataEnum(oclib.BOOKING))+"/oc/booking")
 | 
			
		||||
 | 
			
		||||
	o.Data["json"] = oclib.UpdateOne(oclib.LibDataEnum(oclib.WORKFLOW), res, id, caller)
 | 
			
		||||
	data := oclib.UpdateOne(oclib.LibDataEnum(oclib.WORKFLOW), res, id, caller)
 | 
			
		||||
	data.Err += o.SetNATSPub(res, data)
 | 
			
		||||
	o.Data["json"] = data
 | 
			
		||||
	o.ServeJSON()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (o *WorkflowController) SetNATSPub(res map[string]interface{}, data oclib.LibData) string {
 | 
			
		||||
	if sched, ok := res["schedule"]; ok && sched != nil && data.Code == 200 {
 | 
			
		||||
		workflow := data.ToWorkflow()
 | 
			
		||||
		if workflow != nil && workflow.Schedule != nil {
 | 
			
		||||
			// HERE NATS
 | 
			
		||||
			nc, err := nats.Connect(nats.DefaultURL)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return " -> Could not reach NATS server"
 | 
			
		||||
			}
 | 
			
		||||
			start := ""
 | 
			
		||||
			if workflow.Schedule.Start != nil {
 | 
			
		||||
				start = workflow.Schedule.Start.String()
 | 
			
		||||
			}
 | 
			
		||||
			end := ""
 | 
			
		||||
			if workflow.Schedule.End != nil {
 | 
			
		||||
				end = workflow.Schedule.End.String()
 | 
			
		||||
			}
 | 
			
		||||
			str_description, _ := json.Marshal(map[string]string{
 | 
			
		||||
				"workflow_id": workflow.UUID,
 | 
			
		||||
				"start_date":  start,
 | 
			
		||||
				"stop_date":   end,
 | 
			
		||||
			})
 | 
			
		||||
			err = nc.Publish("workflowsUpdate", str_description)
 | 
			
		||||
			time.Sleep(time.Second * 2)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return " -> " + err.Error()
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return ""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// @Title Create
 | 
			
		||||
// @Description create workflows
 | 
			
		||||
// @Param	data		body 	json	true		"body for data content (Json format)"
 | 
			
		||||
@@ -54,7 +88,9 @@ func (o *WorkflowController) Post() {
 | 
			
		||||
	var res map[string]interface{}
 | 
			
		||||
	json.Unmarshal(o.Ctx.Input.CopyBody(10000), &res)
 | 
			
		||||
	caller := tools.NewHTTPCaller("", "", "", oclib.GetPath(oclib.LibDataEnum(oclib.BOOKING))+"/oc/booking")
 | 
			
		||||
	o.Data["json"] = oclib.StoreOne(oclib.LibDataEnum(oclib.WORKFLOW), res, caller)
 | 
			
		||||
	data := oclib.StoreOne(oclib.LibDataEnum(oclib.WORKFLOW), res, caller)
 | 
			
		||||
	data.Err += o.SetNATSPub(res, data)
 | 
			
		||||
	o.Data["json"] = data
 | 
			
		||||
	o.ServeJSON()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user