mirror of
https://github.com/emo2007/block-accounting.git
synced 2025-04-08 15:46:26 +00:00
segfault fix
This commit is contained in:
parent
1f680142f0
commit
d4430445a7
backend/internal
factory
interface/rest
@ -5,7 +5,9 @@ import (
|
||||
|
||||
"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/organizations"
|
||||
"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"
|
||||
)
|
||||
|
||||
@ -19,3 +21,10 @@ func provideUsersInteractor(
|
||||
func provideJWTInteractor(c config.Config, usersInteractor users.UsersInteractor) jwt.JWTInteractor {
|
||||
return jwt.NewWardenJWT(c.Common.JWTSecret, usersInteractor)
|
||||
}
|
||||
|
||||
func provideOrganizationsInteractor(
|
||||
log *slog.Logger,
|
||||
orgRepo orepo.Repository,
|
||||
) organizations.OrganizationsInteractor {
|
||||
return organizations.NewOrganizationsInteractor(log, orgRepo)
|
||||
}
|
||||
|
@ -12,11 +12,13 @@ import (
|
||||
"github.com/emochka2007/block-accounting/internal/pkg/config"
|
||||
"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/organizations"
|
||||
"github.com/emochka2007/block-accounting/internal/usecase/interactors/users"
|
||||
)
|
||||
|
||||
var interfaceSet wire.ProviderSet = wire.NewSet(
|
||||
provideAuthController,
|
||||
provideOrganizationsCOntroller,
|
||||
provideControllers,
|
||||
|
||||
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(
|
||||
log *slog.Logger,
|
||||
authController controllers.AuthController,
|
||||
orgController controllers.OrganizationsController,
|
||||
) *controllers.RootController {
|
||||
return &controllers.RootController{
|
||||
Ping: controllers.NewPingController(log.WithGroup("ping-controller")),
|
||||
Auth: authController,
|
||||
Ping: controllers.NewPingController(log.WithGroup("ping-controller")),
|
||||
Auth: authController,
|
||||
Organizations: orgController,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,18 +1,16 @@
|
||||
package factory
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"database/sql"
|
||||
|
||||
"github.com/emochka2007/block-accounting/internal/pkg/config"
|
||||
"github.com/emochka2007/block-accounting/internal/usecase/repository"
|
||||
"github.com/emochka2007/block-accounting/internal/usecase/repository/organizations"
|
||||
"github.com/emochka2007/block-accounting/internal/usecase/repository/users"
|
||||
)
|
||||
|
||||
func provideUsersRepository(c config.Config) (users.Repository, func(), error) {
|
||||
db, close, err := repository.ProvideDatabaseConnection(c)
|
||||
if err != nil {
|
||||
return nil, func() {}, fmt.Errorf("error connect to database. %w", err)
|
||||
}
|
||||
|
||||
return users.NewRepository(db), close, nil
|
||||
func provideUsersRepository(db *sql.DB) users.Repository {
|
||||
return users.NewRepository(db)
|
||||
}
|
||||
|
||||
func provideOrganizationsRepository(db *sql.DB) organizations.Repository {
|
||||
return organizations.NewRepository(db)
|
||||
}
|
||||
|
@ -6,14 +6,18 @@ package factory
|
||||
import (
|
||||
"github.com/emochka2007/block-accounting/internal/pkg/config"
|
||||
"github.com/emochka2007/block-accounting/internal/service"
|
||||
"github.com/emochka2007/block-accounting/internal/usecase/repository"
|
||||
"github.com/google/wire"
|
||||
)
|
||||
|
||||
func ProvideService(c config.Config) (service.Service, func(), error) {
|
||||
wire.Build(
|
||||
repository.ProvideDatabaseConnection,
|
||||
provideLogger,
|
||||
provideUsersRepository,
|
||||
provideUsersInteractor,
|
||||
provideOrganizationsRepository,
|
||||
provideOrganizationsInteractor,
|
||||
provideJWTInteractor,
|
||||
interfaceSet,
|
||||
provideRestServer,
|
||||
|
@ -9,21 +9,26 @@ package factory
|
||||
import (
|
||||
"github.com/emochka2007/block-accounting/internal/pkg/config"
|
||||
"github.com/emochka2007/block-accounting/internal/service"
|
||||
"github.com/emochka2007/block-accounting/internal/usecase/repository"
|
||||
)
|
||||
|
||||
// Injectors from wire.go:
|
||||
|
||||
func ProvideService(c config.Config) (service.Service, func(), error) {
|
||||
logger := provideLogger(c)
|
||||
repository, cleanup, err := provideUsersRepository(c)
|
||||
db, cleanup, err := repository.ProvideDatabaseConnection(c)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
usersInteractor := provideUsersInteractor(logger, repository)
|
||||
usersRepository := provideUsersRepository(db)
|
||||
usersInteractor := provideUsersInteractor(logger, usersRepository)
|
||||
jwtInteractor := provideJWTInteractor(c, usersInteractor)
|
||||
authPresenter := provideAuthPresenter(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)
|
||||
serviceService := service.NewService(logger, server)
|
||||
return serviceService, func() {
|
||||
|
@ -19,11 +19,25 @@ type organizationsController struct {
|
||||
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) {
|
||||
_, err := presenters.CreateRequest[domain.NewOrganizationRequest](r)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error build request. %w", err)
|
||||
}
|
||||
|
||||
// todo call int.Create
|
||||
|
||||
// todo build response
|
||||
|
||||
return nil, nil
|
||||
}
|
||||
|
@ -9,11 +9,11 @@ type RootController struct {
|
||||
func NewRootController(
|
||||
ping PingController,
|
||||
auth AuthController,
|
||||
// organizations OrganizationsController,
|
||||
organizations OrganizationsController,
|
||||
) *RootController {
|
||||
return &RootController{
|
||||
Ping: ping,
|
||||
Auth: auth,
|
||||
// Organizations: organizations,
|
||||
Ping: ping,
|
||||
Auth: auth,
|
||||
Organizations: organizations,
|
||||
}
|
||||
}
|
||||
|
@ -101,7 +101,7 @@ func (s *Server) buildRouter() {
|
||||
r = r.With(s.withAuthorization)
|
||||
|
||||
// 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.Put("/", s.handle(s.controllers.Organizations.NewOrganization, "update_organization"))
|
||||
|
Loading…
Reference in New Issue
Block a user