summaryrefslogtreecommitdiff
path: root/internal/resources/resources.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-07-04 20:48:55 +0300
committerPaul Buetow <paul@buetow.org>2026-07-04 20:48:55 +0300
commit6a3cae2f434e84d926eee88db0e9ab26767380e7 (patch)
tree0e040460834130dd695b75f7e8013c4ae5bcc6cb /internal/resources/resources.go
parent702f05865895e36c6e5e490886a641873d8adc4e (diff)
Fix import cycle, add repository logic and resource tests
Diffstat (limited to 'internal/resources/resources.go')
-rw-r--r--internal/resources/resources.go45
1 files changed, 45 insertions, 0 deletions
diff --git a/internal/resources/resources.go b/internal/resources/resources.go
new file mode 100644
index 0000000..495b26d
--- /dev/null
+++ b/internal/resources/resources.go
@@ -0,0 +1,45 @@
+package resources
+
+import (
+ "fmt"
+ "log"
+ "sync"
+
+ "codeberg.org/snonux/gonf/internal/resource"
+)
+
+var (
+ registry resources
+ once sync.Once
+ mu sync.Mutex
+)
+
+func Init() {
+ once.Do(func() {
+ registry = new()
+ })
+}
+
+type resources struct {
+ registered map[string]resource.Resource
+}
+
+func new() resources {
+ return resources{
+ registered: make(map[string]resource.Resource),
+ }
+}
+
+func Register(res resource.Resource) error {
+ mu.Lock()
+ defer mu.Unlock()
+
+ if _, exists := registry.registered[res.ID()]; exists {
+ return fmt.Errorf("resource %v already registered", res)
+ }
+
+ registry.registered[res.ID()] = res
+ log.Printf("Registered resource %v\n", res)
+
+ return nil
+}