diff --git a/config.yaml b/config.yaml index 63feaf9..7df4903 100644 --- a/config.yaml +++ b/config.yaml @@ -13,11 +13,15 @@ modules: port: 8000 routes: - input: http + id: http-to-osc processors: - - type: osc.message.create + - id: create-osc + type: osc.message.create params: address: "{{.Payload.URL.Path}}" - - type: osc.message.encode - - type: module.output + - id: encode-osc + type: osc.message.encode + - id: output-osc + type: module.output params: module: udp diff --git a/internal/config/processor.go b/internal/config/processor.go index ea75310..b95c423 100644 --- a/internal/config/processor.go +++ b/internal/config/processor.go @@ -1,6 +1,7 @@ package config type ProcessorConfig struct { + Id string `json:"id"` Type string `json:"type"` Params Params `json:"params,omitempty"` } diff --git a/internal/config/route.go b/internal/config/route.go index 66b9f6c..a95156c 100644 --- a/internal/config/route.go +++ b/internal/config/route.go @@ -1,6 +1,7 @@ package config type RouteConfig struct { + Id string `json:"id"` Input string `json:"input"` Processors []ProcessorConfig `json:"processors"` } diff --git a/internal/route/route.go b/internal/route/route.go index 98cf55b..74ec960 100644 --- a/internal/route/route.go +++ b/internal/route/route.go @@ -10,6 +10,7 @@ import ( ) type Route struct { + id string input string processors []processor.Processor } @@ -32,7 +33,11 @@ func NewRoute(config config.RouteConfig) (*Route, error) { } } - return &Route{input: config.Input, processors: processors}, nil + return &Route{id: config.Id, input: config.Input, processors: processors}, nil +} + +func (r *Route) Id() string { + return r.id } func (r *Route) Input() string { diff --git a/internal/schema/processors.go b/internal/schema/processors.go index 54a30bd..7251a91 100644 --- a/internal/schema/processors.go +++ b/internal/schema/processors.go @@ -24,11 +24,15 @@ func GetProcessorsSchema() *jsonschema.Schema { ID: proc.Type, Type: "object", Properties: map[string]*jsonschema.Schema{ + "id": { + Type: "string", + MinLength: new(1), + }, "type": { Const: jsonschema.Ptr[any](proc.Type), }, }, - Required: []string{"type"}, + Required: []string{"id", "type"}, AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}}, } if proc.Title != "" { diff --git a/internal/schema/routes.go b/internal/schema/routes.go index b5ef404..5033722 100644 --- a/internal/schema/routes.go +++ b/internal/schema/routes.go @@ -15,6 +15,10 @@ var RoutesConfigSchema = jsonschema.Schema{ Items: &jsonschema.Schema{ Type: "object", Properties: map[string]*jsonschema.Schema{ + "id": { + Type: "string", + MinLength: new(1), + }, "input": { Type: "string", MinLength: new(1), @@ -23,7 +27,7 @@ var RoutesConfigSchema = jsonschema.Schema{ Ref: "https://showbridge.io/processors.schema.json", }, }, - Required: []string{"input"}, + Required: []string{"id", "input"}, AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}}, }, Default: json.RawMessage(`[]`),