- 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
30 lines
921 B
Go
30 lines
921 B
Go
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 可以自动处理
|