feat: Update repositories to use specific create and update types for Activity and User

This commit is contained in:
Jean Jacques Avril 2025-03-10 07:31:37 +00:00
parent 17cb4505be
commit f567d086ec
3 changed files with 16 additions and 16 deletions

View File

@ -9,7 +9,7 @@ import (
type ActivityRepository interface {
Get(ctx context.Context, id ulid.ULID) (*entities.Activity, error)
Create(ctx context.Context, activity *entities.Activity) error
Update(ctx context.Context, activity *entities.Activity) error
Create(ctx context.Context, activity *entities.ActivityCreate) error
Update(ctx context.Context, activity *entities.ActivityUpdate) error
Delete(ctx context.Context, id ulid.ULID) error
}

View File

@ -9,8 +9,8 @@ import (
type UserRepository interface {
Get(ctx context.Context, id ulid.ULID) (*entities.User, error)
Create(ctx context.Context, user *entities.User) error
Update(ctx context.Context, user *entities.User) error
Create(ctx context.Context, user *entities.UserCreate) error
Update(ctx context.Context, user *entities.UserUpdate) error
Delete(ctx context.Context, id ulid.ULID) error
GetByUsername(ctx context.Context, username string) (*entities.User, error)
}

View File

@ -4,7 +4,7 @@ import (
"database/sql"
"fmt"
"github.com/timetracker/backend/internal/domain/repositories"
"github.com/timetracker/backend/internal/domain/persistence"
"github.com/timetracker/backend/internal/infrastructure/persistence/db/ds"
"gorm.io/driver/postgres"
"gorm.io/gorm"
@ -20,17 +20,17 @@ type DatabaseConfig struct {
SSLMode string
}
// DatasourceContainer enthält alle Repository-Instanzen
// DatasourceContainer enthält alle Datasource-Instanzen
type DatasourceContainer struct {
ActivityDatasource repositories.ActivityRepository
CompanyDatasource repositories.CompanyRepository
CustomerDatasource repositories.CustomerRepository
ProjectDatasource repositories.ProjectRepository
TimeEntryDatasource repositories.TimeEntryRepository
UserDatasource repositories.UserRepository
ActivityDatasource persistence.ActivityDatasource
CompanyDatasource persistence.CompanyDatasource
CustomerDatasource persistence.CustomerDatasource
ProjectDatasource persistence.ProjectDatasource
TimeEntryDatasource persistence.TimeEntryDatasource
UserDatasource persistence.UserDatasource
}
// NewDatasourceContainer erstellt und initialisiert alle Repository-Instanzen
// NewDatasourceContainer erstellt und initialisiert alle Datasource-Instanzen
func NewDatasourceContainer(config DatabaseConfig) (*DatasourceContainer, error) {
// Erstelle DSN (Data Source Name) für die Datenbankverbindung
dsn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=%s",
@ -54,7 +54,7 @@ func NewDatasourceContainer(config DatabaseConfig) (*DatasourceContainer, error)
return nil, fmt.Errorf("fehler beim Initialisieren von GORM: %w", err)
}
// Erstelle alle Repository-Instanzen
// Erstelle alle Datasource-Instanzen
return &DatasourceContainer{
ActivityDatasource: ds.NewActivityDatasource(gormDB),
CompanyDatasource: ds.NewCompanyDatasource(gormDB),
@ -88,9 +88,9 @@ func (r *DatasourceContainer) getGormDB() (*gorm.DB, error) {
// Hier müsste angepasst werden, wie Sie Zugriff auf die GORM-DB bekommen
// Beispiel (müsste angepasst werden):
// activityDS, ok := r.ActivityRepository.(*ds.ActivityDatasource)
// activityDS, ok := r.ActivityDatasource.(*ds.ActivityDatasource)
// if !ok {
// return nil, fmt.Errorf("Konnte GORM-DB nicht aus ActivityRepository extrahieren")
// return nil, fmt.Errorf("Konnte GORM-DB nicht aus ActivityDatasource extrahieren")
// }
// return activityDS.GetDB(), nil