From 7e75fdb75839786445224fa6d29b64fbfadf9c56 Mon Sep 17 00:00:00 2001 From: Joel Wetzell Date: Wed, 18 Mar 2026 12:53:50 -0500 Subject: [PATCH] shift Get method to only key/value modules add Set method to redis.client --- internal/common/module.go | 5 +++++ internal/module/http-server.go | 4 ---- internal/module/midi-input.go | 9 --------- internal/module/midi-output.go | 9 --------- internal/module/mqtt-client.go | 4 ---- internal/module/nats-client.go | 4 ---- internal/module/nats-server.go | 4 ---- internal/module/psn-client.go | 11 ----------- internal/module/redis-client.go | 28 ++++++++++++++-------------- internal/module/serial-client.go | 9 --------- internal/module/sip-call-server.go | 4 ---- internal/module/sip-dtmf-server.go | 4 ---- internal/module/tcp-client.go | 17 ----------------- internal/module/tcp-server.go | 11 ----------- internal/module/test/module_test.go | 4 ---- internal/module/time-interval.go | 9 --------- internal/module/time-timer.go | 9 --------- internal/module/udp-client.go | 17 ----------------- internal/module/udp-multicast.go | 11 ----------- internal/module/udp-server.go | 11 ----------- 20 files changed, 19 insertions(+), 165 deletions(-) diff --git a/internal/common/module.go b/internal/common/module.go index 7737317..bc65811 100644 --- a/internal/common/module.go +++ b/internal/common/module.go @@ -11,3 +11,8 @@ type Module interface { Stop() Output(context.Context, any) error } + +type KeyValueModule interface { + Get(key string) (any, error) + Set(key string, value any) error +} diff --git a/internal/module/http-server.go b/internal/module/http-server.go index 51c3c8d..75c20ba 100644 --- a/internal/module/http-server.go +++ b/internal/module/http-server.go @@ -205,7 +205,3 @@ func (hs *HTTPServer) Output(ctx context.Context, payload any) error { func (hs *HTTPServer) Stop() { hs.cancel() } - -func (hs *HTTPServer) Get(key string) (any, error) { - return nil, errors.New("http.server does not support Get") -} diff --git a/internal/module/midi-input.go b/internal/module/midi-input.go index beda65c..d0d9a8f 100644 --- a/internal/module/midi-input.go +++ b/internal/module/midi-input.go @@ -89,12 +89,3 @@ func (mi *MIDIInput) Output(ctx context.Context, payload any) error { func (mi *MIDIInput) Stop() { mi.cancel() } - -func (mi *MIDIInput) Get(key string) (any, error) { - switch key { - case "port": - return mi.Port, nil - default: - return nil, errors.New("midi.input key not found") - } -} diff --git a/internal/module/midi-output.go b/internal/module/midi-output.go index 0e8d3d7..242521d 100644 --- a/internal/module/midi-output.go +++ b/internal/module/midi-output.go @@ -96,12 +96,3 @@ func (mo *MIDIOutput) Output(ctx context.Context, payload any) error { func (mo *MIDIOutput) Stop() { mo.cancel() } - -func (mo *MIDIOutput) Get(key string) (any, error) { - switch key { - case "port": - return mo.Port, nil - default: - return nil, errors.New("midi.output key not found") - } -} diff --git a/internal/module/mqtt-client.go b/internal/module/mqtt-client.go index 553c8fc..7d373a1 100644 --- a/internal/module/mqtt-client.go +++ b/internal/module/mqtt-client.go @@ -125,7 +125,3 @@ func (mc *MQTTClient) Output(ctx context.Context, payload any) error { func (mc *MQTTClient) Stop() { mc.cancel() } - -func (mc *MQTTClient) Get(key string) (any, error) { - return nil, errors.New("mqtt.client does not support Get") -} diff --git a/internal/module/nats-client.go b/internal/module/nats-client.go index a5c50b2..3d38367 100644 --- a/internal/module/nats-client.go +++ b/internal/module/nats-client.go @@ -116,7 +116,3 @@ func (nc *NATSClient) Output(ctx context.Context, payload any) error { func (nc *NATSClient) Stop() { nc.cancel() } - -func (nc *NATSClient) Get(key string) (any, error) { - return nil, errors.New("nats.client does not support Get") -} diff --git a/internal/module/nats-server.go b/internal/module/nats-server.go index ad015bf..5fb0896 100644 --- a/internal/module/nats-server.go +++ b/internal/module/nats-server.go @@ -112,7 +112,3 @@ func (ns *NATSServer) Stop() { ns.server.Shutdown() } } - -func (ns *NATSServer) Get(key string) (any, error) { - return nil, errors.New("nats.server does not support Get") -} diff --git a/internal/module/psn-client.go b/internal/module/psn-client.go index eb6b283..4e374de 100644 --- a/internal/module/psn-client.go +++ b/internal/module/psn-client.go @@ -112,14 +112,3 @@ func (pc *PSNClient) Output(ctx context.Context, payload any) error { func (pc *PSNClient) Stop() { pc.cancel() } - -func (pc *PSNClient) Get(key string) (any, error) { - switch key { - case "trackers": - return pc.decoder.Trackers, nil - case "name": - return pc.decoder.SystemName, nil - default: - return nil, errors.New("psn.client key not found") - } -} diff --git a/internal/module/redis-client.go b/internal/module/redis-client.go index dc79ff3..1e1071c 100644 --- a/internal/module/redis-client.go +++ b/internal/module/redis-client.go @@ -89,20 +89,20 @@ func (rc *RedisClient) Stop() { } func (rc *RedisClient) Get(key string) (any, error) { - - switch key { - case "host": - return rc.Host, nil - case "port": - return rc.Port, nil - default: - if rc.client != nil { - val, err := rc.client.Get(rc.ctx, key).Result() - if err != nil { - return nil, err - } - return val, nil + if rc.client != nil { + val, err := rc.client.Get(rc.ctx, key).Result() + if err != nil { + return nil, err } - return nil, errors.New("redis.client key not found") + return val, nil } + return nil, errors.New("redis.client not setup") +} + +func (rc *RedisClient) Set(key string, value any) error { + if rc.client != nil { + status := rc.client.Set(rc.ctx, key, value, 0) + return status.Err() + } + return errors.New("redis.client not setup") } diff --git a/internal/module/serial-client.go b/internal/module/serial-client.go index 14b3277..6eb37be 100644 --- a/internal/module/serial-client.go +++ b/internal/module/serial-client.go @@ -169,12 +169,3 @@ func (sc *SerialClient) Output(ctx context.Context, payload any) error { func (sc *SerialClient) Stop() { sc.cancel() } - -func (sc *SerialClient) Get(key string) (any, error) { - switch key { - case "port": - return sc.Port, nil - default: - return nil, errors.New("serial.client key not found") - } -} diff --git a/internal/module/sip-call-server.go b/internal/module/sip-call-server.go index 2ec6784..1b9ea1d 100644 --- a/internal/module/sip-call-server.go +++ b/internal/module/sip-call-server.go @@ -221,7 +221,3 @@ func (scs *SIPCallServer) Output(ctx context.Context, payload any) error { func (scs *SIPCallServer) Stop() { scs.cancel() } - -func (scs *SIPCallServer) Get(key string) (any, error) { - return nil, errors.New("sip.call.server does not support Get") -} diff --git a/internal/module/sip-dtmf-server.go b/internal/module/sip-dtmf-server.go index 44e8969..41d6b2d 100644 --- a/internal/module/sip-dtmf-server.go +++ b/internal/module/sip-dtmf-server.go @@ -249,7 +249,3 @@ func (sds *SIPDTMFServer) Output(ctx context.Context, payload any) error { func (sds *SIPDTMFServer) Stop() { sds.cancel() } - -func (sds *SIPDTMFServer) Get(key string) (any, error) { - return nil, errors.New("sip.dtmf.server does not support Get") -} diff --git a/internal/module/tcp-client.go b/internal/module/tcp-client.go index f2e29ee..03c5e0e 100644 --- a/internal/module/tcp-client.go +++ b/internal/module/tcp-client.go @@ -163,20 +163,3 @@ func (tc *TCPClient) Output(ctx context.Context, payload any) error { func (tc *TCPClient) Stop() { tc.cancel() } - -func (tc *TCPClient) Get(key string) (any, error) { - switch key { - case "host": - host, err := tc.config.Params.GetString("host") - if err != nil { - return nil, fmt.Errorf("net.tcp.client host error: %w", err) - } - return host, nil - case "ip": - return tc.Addr.IP.String(), nil - case "port": - return tc.Addr.Port, nil - default: - return nil, errors.New("net.tcp.client key not found") - } -} diff --git a/internal/module/tcp-server.go b/internal/module/tcp-server.go index 98166ce..362df96 100644 --- a/internal/module/tcp-server.go +++ b/internal/module/tcp-server.go @@ -232,14 +232,3 @@ func (ts *TCPServer) Stop() { ts.cancel() ts.wg.Wait() } - -func (ts *TCPServer) Get(key string) (any, error) { - switch key { - case "ip": - return ts.Addr.IP.String(), nil - case "port": - return ts.Addr.Port, nil - default: - return nil, errors.New("net.tcp.server key not found") - } -} diff --git a/internal/module/test/module_test.go b/internal/module/test/module_test.go index a9bfe13..98e5f43 100644 --- a/internal/module/test/module_test.go +++ b/internal/module/test/module_test.go @@ -31,10 +31,6 @@ func (m *TestModule) Id() string { return "test" } -func (m *TestModule) Get(key string) (any, error) { - return nil, nil -} - func TestModuleBadRegistrationNoType(t *testing.T) { defer func() { if r := recover(); r == nil { diff --git a/internal/module/time-interval.go b/internal/module/time-interval.go index 151d1b6..c26f517 100644 --- a/internal/module/time-interval.go +++ b/internal/module/time-interval.go @@ -82,12 +82,3 @@ func (i *TimeInterval) Output(ctx context.Context, payload any) error { func (i *TimeInterval) Stop() { i.cancel() } - -func (i *TimeInterval) Get(key string) (any, error) { - switch key { - case "duration": - return i.Duration, nil - default: - return nil, errors.New("time.interval key not found") - } -} diff --git a/internal/module/time-timer.go b/internal/module/time-timer.go index 274fa8a..d624e60 100644 --- a/internal/module/time-timer.go +++ b/internal/module/time-timer.go @@ -81,12 +81,3 @@ func (t *TimeTimer) Output(ctx context.Context, payload any) error { func (t *TimeTimer) Stop() { t.cancel() } - -func (t *TimeTimer) Get(key string) (any, error) { - switch key { - case "duration": - return t.Duration, nil - default: - return nil, errors.New("time.timer key not found") - } -} diff --git a/internal/module/udp-client.go b/internal/module/udp-client.go index 5e65863..99f75be 100644 --- a/internal/module/udp-client.go +++ b/internal/module/udp-client.go @@ -106,20 +106,3 @@ func (uc *UDPClient) Output(ctx context.Context, payload any) error { func (uc *UDPClient) Stop() { uc.cancel() } - -func (uc *UDPClient) Get(key string) (any, error) { - switch key { - case "host": - host, err := uc.config.Params.GetString("host") - if err != nil { - return nil, fmt.Errorf("net.udp.client host error: %w", err) - } - return host, nil - case "ip": - return uc.Addr.IP.String(), nil - case "port": - return uc.Addr.Port, nil - default: - return nil, errors.New("net.udp.client key not found") - } -} diff --git a/internal/module/udp-multicast.go b/internal/module/udp-multicast.go index 67850fa..11d0845 100644 --- a/internal/module/udp-multicast.go +++ b/internal/module/udp-multicast.go @@ -124,14 +124,3 @@ func (um *UDPMulticast) Output(ctx context.Context, payload any) error { func (um *UDPMulticast) Stop() { um.cancel() } - -func (um *UDPMulticast) Get(key string) (any, error) { - switch key { - case "ip": - return um.Addr.IP.String(), nil - case "port": - return um.Addr.Port, nil - default: - return nil, errors.New("net.udp.multicast key not found") - } -} diff --git a/internal/module/udp-server.go b/internal/module/udp-server.go index 74ee355..35888f3 100644 --- a/internal/module/udp-server.go +++ b/internal/module/udp-server.go @@ -123,14 +123,3 @@ func (us *UDPServer) Output(ctx context.Context, payload any) error { func (us *UDPServer) Stop() { us.cancel() } - -func (us *UDPServer) Get(key string) (any, error) { - switch key { - case "ip": - return us.Addr.IP.String(), nil - case "port": - return us.Addr.Port, nil - default: - return nil, errors.New("net.udp.server key not found") - } -}