refactor: introduce Wire dependency injection and interface-based architecture
- Add Google Wire for compile-time dependency injection - Replace concrete service types with interfaces across handlers - Remove global state (DB, cache) in favor of constructor injection - Split monolithic files into focused modules: - config: separate files for each config domain - dto: converters split by domain (user, post, message, group) - cache: separate metrics.go and redis_cache.go - Introduce unified apperrors package with string-based error codes - Add transaction support with context-aware repository methods - Upgrade golang.org/x/crypto from 0.17.0 to 0.26.0
This commit is contained in:
29
internal/wire/repository.go
Normal file
29
internal/wire/repository.go
Normal file
@@ -0,0 +1,29 @@
|
||||
package wire
|
||||
|
||||
import (
|
||||
"carrot_bbs/internal/repository"
|
||||
|
||||
"github.com/google/wire"
|
||||
)
|
||||
|
||||
// RepositorySet Repository 层 Provider Set
|
||||
var RepositorySet = wire.NewSet(
|
||||
repository.NewUserRepository,
|
||||
repository.NewPostRepository,
|
||||
repository.NewCommentRepository,
|
||||
repository.NewMessageRepository,
|
||||
repository.NewNotificationRepository,
|
||||
repository.NewPushRecordRepository,
|
||||
repository.NewDeviceTokenRepository,
|
||||
repository.NewSystemNotificationRepository,
|
||||
repository.NewGroupRepository,
|
||||
repository.NewStickerRepository,
|
||||
repository.NewVoteRepository,
|
||||
repository.NewScheduleRepository,
|
||||
)
|
||||
|
||||
// Note: 以下 Repository 返回接口类型而非指针,需要单独处理
|
||||
// - ScheduleRepository (repository.ScheduleRepository)
|
||||
// - StickerRepository (repository.StickerRepository)
|
||||
// - GroupRepository (repository.GroupRepository)
|
||||
// 这些已经在各自的 New* 函数中正确返回接口类型,Wire 可以自动处理
|
||||
Reference in New Issue
Block a user