优化结构

This commit is contained in:
Yvan
2026-08-25 00:20:29 +08:00
parent 969afee284
commit ee179d6b34
49 changed files with 289 additions and 591 deletions
-129
View File
@@ -77,93 +77,6 @@ func (r *ResourceRegistry) Replace(resources Resources) {
r.mu.Unlock()
}
func (r *ResourceRegistry) Logger() *slog.Logger { return r.Snapshot().Logger }
func (r *ResourceRegistry) SetLogger(logger *slog.Logger) {
r.update(func(resources *Resources) { resources.Logger = logger })
}
func (r *ResourceRegistry) DB() *gorm.DB { return r.Snapshot().DB }
func (r *ResourceRegistry) SetDB(db *gorm.DB) {
r.update(func(resources *Resources) { resources.DB = db })
}
// NamedDB returns a configured secondary database by alias. An empty alias
// resolves to the primary database.
func (r *ResourceRegistry) NamedDB(name string) *gorm.DB {
if name == "" {
return r.DB()
}
return r.Snapshot().NamedDBs[name]
}
// SetNamedDBs replaces the complete secondary-database alias set.
func (r *ResourceRegistry) SetNamedDBs(databases map[string]*gorm.DB) {
r.update(func(resources *Resources) { resources.NamedDBs = cloneDBMap(databases) })
}
func (r *ResourceRegistry) Redis() redis.UniversalClient { return r.Snapshot().Redis }
func (r *ResourceRegistry) SetRedis(client redis.UniversalClient) {
r.update(func(resources *Resources) { resources.Redis = client })
}
// NamedRedis returns a configured secondary Redis client by alias. An empty
// alias resolves to the primary Redis client.
func (r *ResourceRegistry) NamedRedis(name string) redis.UniversalClient {
if name == "" {
return r.Redis()
}
return r.Snapshot().NamedRedis[name]
}
// SetNamedRedis replaces the complete secondary-Redis alias set.
func (r *ResourceRegistry) SetNamedRedis(clients map[string]redis.UniversalClient) {
r.update(func(resources *Resources) { resources.NamedRedis = cloneRedisMap(clients) })
}
func (r *ResourceRegistry) Mongo() *mongo.Client { return r.Snapshot().Mongo }
func (r *ResourceRegistry) SetMongo(client *mongo.Client) {
r.update(func(resources *Resources) { resources.Mongo = client })
}
func (r *ResourceRegistry) Storage() FileStorage { return r.Snapshot().Storage }
func (r *ResourceRegistry) SetStorage(storage FileStorage) {
r.update(func(resources *Resources) { resources.Storage = storage })
}
func (r *ResourceRegistry) MQ() platformmq.Registry { return r.Snapshot().MQ }
func (r *ResourceRegistry) SetMQ(registry platformmq.Registry) {
r.update(func(resources *Resources) { resources.MQ = registry })
}
func (r *ResourceRegistry) WebSocket() platformws.Hub { return r.Snapshot().WebSocket }
func (r *ResourceRegistry) SetWebSocket(hub platformws.Hub) {
r.update(func(resources *Resources) { resources.WebSocket = hub })
}
func (r *ResourceRegistry) Scheduler() Scheduler { return r.Snapshot().Scheduler }
func (r *ResourceRegistry) SetScheduler(scheduler Scheduler) {
r.update(func(resources *Resources) { resources.Scheduler = scheduler })
}
func (r *ResourceRegistry) update(change func(*Resources)) {
if r == nil || change == nil {
return
}
r.mu.Lock()
resources := cloneResources(r.resources)
change(&resources)
r.resources = normalizeResources(resources)
r.mu.Unlock()
}
func normalizeResources(resources Resources) Resources {
if resources.Logger == nil {
resources.Logger = slog.Default()
@@ -248,45 +161,3 @@ func Install(resources Resources) *ResourceRegistry {
func DefaultRegistry() *ResourceRegistry { return defaultResources }
func ResourceSnapshot() Resources { return defaultResources.Snapshot() }
func ReplaceResources(resources Resources) { defaultResources.Replace(resources) }
func Logger() *slog.Logger { return defaultResources.Logger() }
func SetLogger(logger *slog.Logger) { defaultResources.SetLogger(logger) }
func DB() *gorm.DB { return defaultResources.DB() }
func SetDB(db *gorm.DB) { defaultResources.SetDB(db) }
func NamedDB(name string) *gorm.DB { return defaultResources.NamedDB(name) }
func SetNamedDBs(databases map[string]*gorm.DB) { defaultResources.SetNamedDBs(databases) }
func Redis() redis.UniversalClient { return defaultResources.Redis() }
func SetRedis(client redis.UniversalClient) { defaultResources.SetRedis(client) }
func NamedRedis(name string) redis.UniversalClient { return defaultResources.NamedRedis(name) }
func SetNamedRedis(clients map[string]redis.UniversalClient) { defaultResources.SetNamedRedis(clients) }
func Mongo() *mongo.Client { return defaultResources.Mongo() }
func SetMongo(client *mongo.Client) { defaultResources.SetMongo(client) }
func Storage() FileStorage { return defaultResources.Storage() }
func SetStorage(storage FileStorage) { defaultResources.SetStorage(storage) }
func MQ() platformmq.Registry { return defaultResources.MQ() }
func SetMQ(registry platformmq.Registry) { defaultResources.SetMQ(registry) }
func WebSocket() platformws.Hub { return defaultResources.WebSocket() }
func SetWebSocket(hub platformws.Hub) { defaultResources.SetWebSocket(hub) }
func TaskScheduler() Scheduler { return defaultResources.Scheduler() }
func SetTaskScheduler(scheduler Scheduler) { defaultResources.SetScheduler(scheduler) }