mirror of
https://github.com/3ybactuk/marketplace-go-service-project.git
synced 2025-10-30 14:03:45 +03:00
[hw-4] add postgres db
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
|
||||
"github.com/jackc/pgx/v5/pgxpool"
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/rs/zerolog/log"
|
||||
"google.golang.org/grpc"
|
||||
@@ -16,11 +17,12 @@ import (
|
||||
"google.golang.org/grpc/reflection"
|
||||
|
||||
"route256/loms/internal/app/server"
|
||||
ordersRepository "route256/loms/internal/domain/repository/orders"
|
||||
stocksRepository "route256/loms/internal/domain/repository/stocks"
|
||||
ordersRepository "route256/loms/internal/domain/repository/orders/sqlc"
|
||||
stocksRepository "route256/loms/internal/domain/repository/stocks/sqlc"
|
||||
"route256/loms/internal/domain/service"
|
||||
"route256/loms/internal/infra/config"
|
||||
mw "route256/loms/internal/infra/grpc/middleware"
|
||||
"route256/loms/internal/infra/postgres"
|
||||
|
||||
pb "route256/pkg/api/loms/v1"
|
||||
)
|
||||
@@ -50,13 +52,16 @@ func NewApp(configPath string) (*App, error) {
|
||||
|
||||
log.WithLevel(zerolog.GlobalLevel()).Msgf("using logging level=`%s`", zerolog.GlobalLevel().String())
|
||||
|
||||
stockRepo, err := stocksRepository.NewInMemoryRepository(100)
|
||||
masterPool, replicaPool, err := getPostgresPools(c)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("stocksRepository.NewInMemoryRepository: %w", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
orderRepo := ordersRepository.NewInMemoryRepository(100)
|
||||
service := service.NewLomsService(orderRepo, stockRepo)
|
||||
stockRepo := stocksRepository.NewStockRepository(masterPool, replicaPool)
|
||||
orderRepo := ordersRepository.NewOrderRepository(masterPool)
|
||||
txManager := postgres.NewTxManager(masterPool, replicaPool)
|
||||
|
||||
service := service.NewLomsService(orderRepo, stockRepo, txManager)
|
||||
controller := server.NewServer(service)
|
||||
|
||||
app := &App{
|
||||
@@ -117,3 +122,34 @@ func (app *App) ListenAndServe() error {
|
||||
|
||||
return gwServer.ListenAndServe()
|
||||
}
|
||||
|
||||
func getPostgresPools(c *config.Config) (masterPool, replicaPool *pgxpool.Pool, err error) {
|
||||
masterConn := fmt.Sprintf(
|
||||
"postgresql://%s:%s@%s:%s/%s?sslmode=disable",
|
||||
c.DatabaseMaster.User,
|
||||
c.DatabaseMaster.Password,
|
||||
c.DatabaseMaster.Host,
|
||||
c.DatabaseMaster.Port,
|
||||
c.DatabaseMaster.DBName,
|
||||
)
|
||||
|
||||
replicaConn := fmt.Sprintf(
|
||||
"postgresql://%s:%s@%s:%s/%s?sslmode=disable",
|
||||
c.DatabaseReplica.User,
|
||||
c.DatabaseReplica.Password,
|
||||
c.DatabaseReplica.Host,
|
||||
c.DatabaseReplica.Port,
|
||||
c.DatabaseReplica.DBName,
|
||||
)
|
||||
|
||||
pools, err := postgres.NewPools(context.Background(), masterConn, replicaConn)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
if len(pools) != 2 {
|
||||
return nil, nil, fmt.Errorf("got wrong number of pools when establishing postgres connection")
|
||||
}
|
||||
|
||||
return pools[0], pools[1], nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user