tercul-backend/internal/data/sql/repositories.go
google-labs-jules[bot] a8dfb727a1 feat: Implement critical features and fix build
This commit addresses several high-priority tasks from the TASKS.md file, including:

- **Fix Background Job Panic:** Replaced `log.Fatalf` with `log.Printf` in the `asynq` server to prevent crashes.
- **Refactor API Server Setup:** Consolidated the GraphQL Playground and Prometheus metrics endpoints into the main API server.
- **Implement `DeleteUser` Mutation:** Implemented the `DeleteUser` resolver.
- **Implement `CreateContribution` Mutation:** Implemented the `CreateContribution` resolver and its required application service.

Additionally, this commit includes a major refactoring of the configuration management system to fix a broken build. The global `config.Cfg` variable has been removed and replaced with a dependency injection approach, where the configuration object is passed to all components that require it. This change has been applied across the entire codebase, including the test suite, to ensure a stable and testable application.
2025-10-05 18:29:18 +00:00

60 lines
2.0 KiB
Go

package sql
import (
"tercul/internal/app/analytics"
"tercul/internal/domain"
"tercul/internal/domain/auth"
"tercul/internal/domain/localization"
"tercul/internal/domain/work"
"tercul/internal/platform/config"
"gorm.io/gorm"
)
type Repositories struct {
Work work.WorkRepository
User domain.UserRepository
Author domain.AuthorRepository
Translation domain.TranslationRepository
Comment domain.CommentRepository
Like domain.LikeRepository
Bookmark domain.BookmarkRepository
Collection domain.CollectionRepository
Tag domain.TagRepository
Category domain.CategoryRepository
Book domain.BookRepository
Publisher domain.PublisherRepository
Source domain.SourceRepository
Copyright domain.CopyrightRepository
Monetization domain.MonetizationRepository
Contribution domain.ContributionRepository
Analytics analytics.Repository
Auth auth.AuthRepository
Localization localization.LocalizationRepository
}
// NewRepositories creates a new Repositories container
func NewRepositories(db *gorm.DB, cfg *config.Config) *Repositories {
return &Repositories{
Work: NewWorkRepository(db, cfg),
User: NewUserRepository(db, cfg),
Author: NewAuthorRepository(db, cfg),
Translation: NewTranslationRepository(db, cfg),
Comment: NewCommentRepository(db, cfg),
Like: NewLikeRepository(db, cfg),
Bookmark: NewBookmarkRepository(db, cfg),
Collection: NewCollectionRepository(db, cfg),
Tag: NewTagRepository(db, cfg),
Category: NewCategoryRepository(db, cfg),
Book: NewBookRepository(db, cfg),
Publisher: NewPublisherRepository(db, cfg),
Source: NewSourceRepository(db, cfg),
Copyright: NewCopyrightRepository(db, cfg),
Monetization: NewMonetizationRepository(db, cfg),
Contribution: NewContributionRepository(db, cfg),
Analytics: NewAnalyticsRepository(db, cfg),
Auth: NewAuthRepository(db, cfg),
Localization: NewLocalizationRepository(db, cfg),
}
}