48 lines
1.6 KiB
Go
Executable File
48 lines
1.6 KiB
Go
Executable File
package main
|
|
|
|
import (
|
|
"actatempus_backend/internal/application/repository"
|
|
"actatempus_backend/internal/application/services"
|
|
"actatempus_backend/internal/infrastructure/config"
|
|
"actatempus_backend/internal/infrastructure/data"
|
|
"actatempus_backend/internal/interfaces/http"
|
|
"fmt"
|
|
"log"
|
|
)
|
|
|
|
func main() {
|
|
// Lese die Konfiguration ein
|
|
cfg, err := config.LoadConfig(".")
|
|
if err != nil {
|
|
log.Fatalf("could not load config: %v", err)
|
|
}
|
|
|
|
database, err := data.NewPrismaDatabase()
|
|
|
|
if err != nil {
|
|
log.Fatalf("could not initialize database: %v", err)
|
|
}
|
|
|
|
// Initialize repositories
|
|
userRepo := repository.NewUserRepository(database.Users())
|
|
projectRepo := repository.NewProjectRepository(database.Projects())
|
|
projectTaskRepo := repository.NewProjectTaskRepository(database.ProjectTasks())
|
|
timeEntryRepo := repository.NewTimeEntryRepository(database.TimeEntries())
|
|
authRepo := repository.NewInMemoryAuthRepositoryImpl("secret")
|
|
|
|
// Initialize services
|
|
userService := services.NewUserService(authRepo, userRepo)
|
|
projectService := services.NewProjectService(authRepo, projectRepo)
|
|
projectTaskService := services.NewProjectTaskService(authRepo, projectTaskRepo)
|
|
timeEntryService := services.NewTimeEntryService(authRepo, timeEntryRepo)
|
|
authService := services.NewAuthService(authRepo, userRepo)
|
|
|
|
// Initialize and start the server
|
|
server := http.NewServer(cfg, userService, projectService, projectTaskService, timeEntryService, authService)
|
|
|
|
fmt.Println("Starting ActaTempus server on port 8080...")
|
|
if err := server.Start(); err != nil {
|
|
log.Fatalf("server failed to start: %v", err)
|
|
}
|
|
}
|