segfault fix

This commit is contained in:
r8zavetr8v 2024-05-11 13:53:05 +03:00
parent 1f680142f0
commit d4430445a7
8 changed files with 64 additions and 20 deletions

View File

@ -5,7 +5,9 @@ import (
"github.com/emochka2007/block-accounting/internal/pkg/config" "github.com/emochka2007/block-accounting/internal/pkg/config"
"github.com/emochka2007/block-accounting/internal/usecase/interactors/jwt" "github.com/emochka2007/block-accounting/internal/usecase/interactors/jwt"
"github.com/emochka2007/block-accounting/internal/usecase/interactors/organizations"
"github.com/emochka2007/block-accounting/internal/usecase/interactors/users" "github.com/emochka2007/block-accounting/internal/usecase/interactors/users"
orepo "github.com/emochka2007/block-accounting/internal/usecase/repository/organizations"
urepo "github.com/emochka2007/block-accounting/internal/usecase/repository/users" urepo "github.com/emochka2007/block-accounting/internal/usecase/repository/users"
) )
@ -19,3 +21,10 @@ func provideUsersInteractor(
func provideJWTInteractor(c config.Config, usersInteractor users.UsersInteractor) jwt.JWTInteractor { func provideJWTInteractor(c config.Config, usersInteractor users.UsersInteractor) jwt.JWTInteractor {
return jwt.NewWardenJWT(c.Common.JWTSecret, usersInteractor) return jwt.NewWardenJWT(c.Common.JWTSecret, usersInteractor)
} }
func provideOrganizationsInteractor(
log *slog.Logger,
orgRepo orepo.Repository,
) organizations.OrganizationsInteractor {
return organizations.NewOrganizationsInteractor(log, orgRepo)
}

View File

@ -12,11 +12,13 @@ import (
"github.com/emochka2007/block-accounting/internal/pkg/config" "github.com/emochka2007/block-accounting/internal/pkg/config"
"github.com/emochka2007/block-accounting/internal/pkg/logger" "github.com/emochka2007/block-accounting/internal/pkg/logger"
"github.com/emochka2007/block-accounting/internal/usecase/interactors/jwt" "github.com/emochka2007/block-accounting/internal/usecase/interactors/jwt"
"github.com/emochka2007/block-accounting/internal/usecase/interactors/organizations"
"github.com/emochka2007/block-accounting/internal/usecase/interactors/users" "github.com/emochka2007/block-accounting/internal/usecase/interactors/users"
) )
var interfaceSet wire.ProviderSet = wire.NewSet( var interfaceSet wire.ProviderSet = wire.NewSet(
provideAuthController, provideAuthController,
provideOrganizationsCOntroller,
provideControllers, provideControllers,
provideAuthPresenter, provideAuthPresenter,
@ -65,13 +67,25 @@ func provideAuthController(
) )
} }
func provideOrganizationsCOntroller(
log *slog.Logger,
organizationsInteractor organizations.OrganizationsInteractor,
) controllers.OrganizationsController {
return controllers.NewOrganizationsController(
log.WithGroup("organizations-controller"),
organizationsInteractor,
)
}
func provideControllers( func provideControllers(
log *slog.Logger, log *slog.Logger,
authController controllers.AuthController, authController controllers.AuthController,
orgController controllers.OrganizationsController,
) *controllers.RootController { ) *controllers.RootController {
return &controllers.RootController{ return &controllers.RootController{
Ping: controllers.NewPingController(log.WithGroup("ping-controller")), Ping: controllers.NewPingController(log.WithGroup("ping-controller")),
Auth: authController, Auth: authController,
Organizations: orgController,
} }
} }

View File

@ -1,18 +1,16 @@
package factory package factory
import ( import (
"fmt" "database/sql"
"github.com/emochka2007/block-accounting/internal/pkg/config" "github.com/emochka2007/block-accounting/internal/usecase/repository/organizations"
"github.com/emochka2007/block-accounting/internal/usecase/repository"
"github.com/emochka2007/block-accounting/internal/usecase/repository/users" "github.com/emochka2007/block-accounting/internal/usecase/repository/users"
) )
func provideUsersRepository(c config.Config) (users.Repository, func(), error) { func provideUsersRepository(db *sql.DB) users.Repository {
db, close, err := repository.ProvideDatabaseConnection(c) return users.NewRepository(db)
if err != nil { }
return nil, func() {}, fmt.Errorf("error connect to database. %w", err)
} func provideOrganizationsRepository(db *sql.DB) organizations.Repository {
return organizations.NewRepository(db)
return users.NewRepository(db), close, nil
} }

View File

@ -6,14 +6,18 @@ package factory
import ( import (
"github.com/emochka2007/block-accounting/internal/pkg/config" "github.com/emochka2007/block-accounting/internal/pkg/config"
"github.com/emochka2007/block-accounting/internal/service" "github.com/emochka2007/block-accounting/internal/service"
"github.com/emochka2007/block-accounting/internal/usecase/repository"
"github.com/google/wire" "github.com/google/wire"
) )
func ProvideService(c config.Config) (service.Service, func(), error) { func ProvideService(c config.Config) (service.Service, func(), error) {
wire.Build( wire.Build(
repository.ProvideDatabaseConnection,
provideLogger, provideLogger,
provideUsersRepository, provideUsersRepository,
provideUsersInteractor, provideUsersInteractor,
provideOrganizationsRepository,
provideOrganizationsInteractor,
provideJWTInteractor, provideJWTInteractor,
interfaceSet, interfaceSet,
provideRestServer, provideRestServer,

View File

@ -9,21 +9,26 @@ package factory
import ( import (
"github.com/emochka2007/block-accounting/internal/pkg/config" "github.com/emochka2007/block-accounting/internal/pkg/config"
"github.com/emochka2007/block-accounting/internal/service" "github.com/emochka2007/block-accounting/internal/service"
"github.com/emochka2007/block-accounting/internal/usecase/repository"
) )
// Injectors from wire.go: // Injectors from wire.go:
func ProvideService(c config.Config) (service.Service, func(), error) { func ProvideService(c config.Config) (service.Service, func(), error) {
logger := provideLogger(c) logger := provideLogger(c)
repository, cleanup, err := provideUsersRepository(c) db, cleanup, err := repository.ProvideDatabaseConnection(c)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
usersInteractor := provideUsersInteractor(logger, repository) usersRepository := provideUsersRepository(db)
usersInteractor := provideUsersInteractor(logger, usersRepository)
jwtInteractor := provideJWTInteractor(c, usersInteractor) jwtInteractor := provideJWTInteractor(c, usersInteractor)
authPresenter := provideAuthPresenter(jwtInteractor) authPresenter := provideAuthPresenter(jwtInteractor)
authController := provideAuthController(logger, usersInteractor, authPresenter, jwtInteractor) authController := provideAuthController(logger, usersInteractor, authPresenter, jwtInteractor)
rootController := provideControllers(logger, authController) organizationsRepository := provideOrganizationsRepository(db)
organizationsInteractor := provideOrganizationsInteractor(logger, organizationsRepository)
organizationsController := provideOrganizationsCOntroller(logger, organizationsInteractor)
rootController := provideControllers(logger, authController, organizationsController)
server := provideRestServer(logger, rootController, c, jwtInteractor) server := provideRestServer(logger, rootController, c, jwtInteractor)
serviceService := service.NewService(logger, server) serviceService := service.NewService(logger, server)
return serviceService, func() { return serviceService, func() {

View File

@ -19,11 +19,25 @@ type organizationsController struct {
orgInteractor organizations.OrganizationsInteractor orgInteractor organizations.OrganizationsInteractor
} }
func NewOrganizationsController(
log *slog.Logger,
orgInteractor organizations.OrganizationsInteractor,
) OrganizationsController {
return &organizationsController{
log: log,
orgInteractor: orgInteractor,
}
}
func (c *organizationsController) NewOrganization(w http.ResponseWriter, r *http.Request) ([]byte, error) { func (c *organizationsController) NewOrganization(w http.ResponseWriter, r *http.Request) ([]byte, error) {
_, err := presenters.CreateRequest[domain.NewOrganizationRequest](r) _, err := presenters.CreateRequest[domain.NewOrganizationRequest](r)
if err != nil { if err != nil {
return nil, fmt.Errorf("error build request. %w", err) return nil, fmt.Errorf("error build request. %w", err)
} }
// todo call int.Create
// todo build response
return nil, nil return nil, nil
} }

View File

@ -9,11 +9,11 @@ type RootController struct {
func NewRootController( func NewRootController(
ping PingController, ping PingController,
auth AuthController, auth AuthController,
// organizations OrganizationsController, organizations OrganizationsController,
) *RootController { ) *RootController {
return &RootController{ return &RootController{
Ping: ping, Ping: ping,
Auth: auth, Auth: auth,
// Organizations: organizations, Organizations: organizations,
} }
} }

View File

@ -101,7 +101,7 @@ func (s *Server) buildRouter() {
r = r.With(s.withAuthorization) r = r.With(s.withAuthorization)
// r.Get("/", s.handle(s.controllers.Auth.Invite, "list_organizations")) // r.Get("/", s.handle(s.controllers.Auth.Invite, "list_organizations"))
// r.Post("/", s.handle(s.controllers.Organizations.NewOrganization, "new_organization")) r.Post("/", s.handle(s.controllers.Organizations.NewOrganization, "new_organization"))
r.Route("/{organization_id}", func(r chi.Router) { r.Route("/{organization_id}", func(r chi.Router) {
// r.Put("/", s.handle(s.controllers.Organizations.NewOrganization, "update_organization")) // r.Put("/", s.handle(s.controllers.Organizations.NewOrganization, "update_organization"))