diff options
| author | Paul Buetow <paul@buetow.org> | 2026-07-04 20:48:55 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-07-04 20:48:55 +0300 |
| commit | 6a3cae2f434e84d926eee88db0e9ab26767380e7 (patch) | |
| tree | 0e040460834130dd695b75f7e8013c4ae5bcc6cb /internal/resources/resources.go | |
| parent | 702f05865895e36c6e5e490886a641873d8adc4e (diff) | |
Fix import cycle, add repository logic and resource tests
Diffstat (limited to 'internal/resources/resources.go')
| -rw-r--r-- | internal/resources/resources.go | 45 |
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 +} |
