mirror of
https://github.com/emo2007/block-accounting.git
synced 2025-04-19 03:36:27 +00:00
segfault fix
This commit is contained in:
parent
1f680142f0
commit
d4430445a7
@ -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)
|
||||||
|
}
|
||||||
|
@ -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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
|
||||||
}
|
}
|
||||||
|
@ -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,
|
||||||
|
@ -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() {
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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"))
|
||||||
|
Loading…
Reference in New Issue
Block a user