Skip to content

Commit

Permalink
[fix]
Browse files Browse the repository at this point in the history
  • Loading branch information
goriiin committed Dec 22, 2024
1 parent 9ab5099 commit 6f9c811
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 25 deletions.
27 changes: 4 additions & 23 deletions internal/repository/orders/create_order_from_cart.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,43 +8,24 @@ import (
order "github.com/go-park-mail-ru/2024_2_kotyari/internal/model"
"github.com/go-park-mail-ru/2024_2_kotyari/internal/utils"
"github.com/google/uuid"
"github.com/jackc/pgx/v5"
)

const defaultStatus = "awaiting_payment"

func (r *OrdersRepo) CreateOrderFromCart(ctx context.Context, orderData *order.OrderFromCart) (*order.Order, error) {
tx, err := r.db.BeginTx(ctx, pgx.TxOptions{
IsoLevel: pgx.Serializable,
})
_, err := utils.GetContextRequestID(ctx)
if err != nil {
r.logger.Error("[OrdersRepo.CreateOrderFromCart] Failed to start transaction", slog.String("error", err.Error()))
return nil, err
}

requestID, err := utils.GetContextRequestID(ctx)
if err != nil {
return nil, err
}

r.logger.Info("[OrdersRepo.CreateOrderFromCart] Started executing", slog.Any("request-id", requestID))

defer func() {
if p := recover(); p != nil || err != nil {
_ = tx.Rollback(ctx)
} else {
_ = tx.Commit(ctx)
}
}()

const createOrderQuery = `
INSERT INTO orders (id, user_id, total_price, address, created_at, updated_at)
VALUES ($1, $2, $3, $4, NOW(), NOW())
RETURNING created_at;
`

var createdAt time.Time
err = tx.QueryRow(ctx, createOrderQuery, orderData.OrderID, orderData.UserID, orderData.TotalPrice, orderData.Address).Scan(&orderData.CreatedAt)
err = r.db.QueryRow(ctx, createOrderQuery, orderData.OrderID, orderData.UserID, orderData.TotalPrice, orderData.Address).Scan(&orderData.CreatedAt)
if err != nil {
r.logger.Error("[OrdersRepo.CreateOrderFromCart] failed to insert order", slog.String("error", err.Error()), slog.Uint64("user_id", uint64(orderData.UserID)))
return nil, err
Expand All @@ -59,7 +40,7 @@ func (r *OrdersRepo) CreateOrderFromCart(ctx context.Context, orderData *order.O
for _, p := range orderData.Products {
productOrderID := uuid.New()

_, err := tx.Exec(ctx, insertProductQuery, productOrderID, orderData.OrderID, p.ID, p.OptionID, p.Count, orderData.DeliveryDate)
_, err := r.db.Exec(ctx, insertProductQuery, productOrderID, orderData.OrderID, p.ID, p.OptionID, p.Count, orderData.DeliveryDate)
if err != nil {
r.logger.Error("[OrdersRepo.CreateOrderFromCart] failed to insert product in order", slog.String("error", err.Error()), slog.Uint64("user_id", uint64(orderData.UserID)))
return nil, err
Expand All @@ -72,7 +53,7 @@ func (r *OrdersRepo) CreateOrderFromCart(ctx context.Context, orderData *order.O
WHERE user_id = $1 AND is_selected = true AND is_deleted = false;
`

_, err = tx.Exec(ctx, removeCartItemsQuery, orderData.UserID)
_, err = r.db.Exec(ctx, removeCartItemsQuery, orderData.UserID)
if err != nil {
r.logger.Error("[OrdersRepo.CreateOrderFromCart] failed to remove selected cart items", slog.String("error", err.Error()), slog.Uint64("user_id", uint64(orderData.UserID)))
return nil, err
Expand Down
5 changes: 3 additions & 2 deletions internal/repository/orders/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package rorders

import (
"context"
"github.com/go-park-mail-ru/2024_2_kotyari/internal/repository/pool"
"github.com/jackc/pgx/v5"
"log/slog"
)
Expand All @@ -13,11 +14,11 @@ type DBConn interface {
}

type OrdersRepo struct {
db DBConn
db pool.DBPool
logger *slog.Logger
}

func NewOrdersRepo(db DBConn, logger *slog.Logger) *OrdersRepo {
func NewOrdersRepo(db pool.DBPool, logger *slog.Logger) *OrdersRepo {
return &OrdersRepo{
db: db,
logger: logger,
Expand Down

0 comments on commit 6f9c811

Please sign in to comment.