diff --git a/comicverse.go b/comicverse.go index b15daef..35cdd44 100644 --- a/comicverse.go +++ b/comicverse.go @@ -151,6 +151,16 @@ func (app *app) setup() error { return fmt.Errorf("app: failed to start token repository: %w", err) } + projectRepository, err := repository.NewProject(app.ctx, app.db, app.logger.WithGroup("repository.project"), app.assert) + if err != nil { + return fmt.Errorf("app: failed to start project repository: %w", err) + } + + permissionRepository, err := repository.NewPermissions(app.ctx, app.db, app.logger.WithGroup("repository.permission"), app.assert) + if err != nil { + return fmt.Errorf("app: failed to start permission repository: %w", err) + } + userService := service.NewUser(userRepository, app.logger.WithGroup("service.user"), app.assert) tokenService := service.NewToken(service.TokenConfig{ PrivateKey: app.privateKey, @@ -159,10 +169,12 @@ func (app *app) setup() error { Logger: app.logger.WithGroup("service.token"), Assertions: app.assert, }) + projectService := service.NewProject(projectRepository, permissionRepository, app.logger.WithGroup("service.project"), app.assert) app.handler, err = router.New(router.Config{ - UserService: userService, - TokenService: tokenService, + UserService: userService, + TokenService: tokenService, + ProjectService: projectService, Templates: app.templates, DisableCache: app.developmentMode, diff --git a/router/router.go b/router/router.go index 80641f3..7dc8eb2 100644 --- a/router/router.go +++ b/router/router.go @@ -5,6 +5,7 @@ import ( "io/fs" "log/slog" "net/http" + "strings" "forge.capytal.company/capytalcode/project-comicverse/service" "forge.capytal.company/capytalcode/project-comicverse/templates" @@ -15,8 +16,9 @@ import ( ) type router struct { - userService *service.User - tokenService *service.Token + userService *service.User + tokenService *service.Token + projectService *service.Project templates templates.ITemplate assets fs.FS @@ -33,6 +35,9 @@ func New(cfg Config) (http.Handler, error) { if cfg.TokenService == nil { return nil, errors.New("token service is nil") } + if cfg.ProjectService == nil { + return nil, errors.New("project service is nil") + } if cfg.Templates == nil { return nil, errors.New("templates is nil") } @@ -47,8 +52,9 @@ func New(cfg Config) (http.Handler, error) { } r := &router{ - userService: cfg.UserService, - tokenService: cfg.TokenService, + userService: cfg.UserService, + tokenService: cfg.TokenService, + projectService: cfg.ProjectService, templates: cfg.Templates, assets: cfg.Assets, @@ -62,8 +68,9 @@ func New(cfg Config) (http.Handler, error) { } type Config struct { - UserService *service.User - TokenService *service.Token + UserService *service.User + TokenService *service.Token + ProjectService *service.Project Templates templates.ITemplate Assets fs.FS