package platform import ( "sync" "git.nakama.town/fmartingr/butterrobot/internal/model" ) var ( // platforms holds all registered chat platforms platforms = make(map[string]model.Platform) // platformsMu protects the platforms map platformsMu sync.RWMutex ) // Register registers a platform with the given ID func Register(id string, platform model.Platform) { platformsMu.Lock() defer platformsMu.Unlock() platforms[id] = platform } // Get returns a platform by ID func Get(id string) (model.Platform, error) { platformsMu.RLock() defer platformsMu.RUnlock() platform, exists := platforms[id] if !exists { return nil, model.ErrPlatformNotFound } return platform, nil } // GetAvailablePlatforms returns all registered platforms func GetAvailablePlatforms() map[string]model.Platform { platformsMu.RLock() defer platformsMu.RUnlock() // Create a copy to avoid race conditions result := make(map[string]model.Platform, len(platforms)) for id, platform := range platforms { result[id] = platform } return result }