Backend:
- Refatoração crítica em [DeleteOrder](cci:1://file:///c:/Projetos/saveinmed/backend-old/internal/usecase/usecase.go:46:1-46:53): agora devolve o estoque fisicamente para a tabela `products` antes de deletar o pedido, corrigindo o "vazamento" de estoque em pedidos pendentes/cancelados.
- Novo Handler [UpdateInventoryItem](cci:1://file:///c:/Projetos/saveinmed/backend-old/internal/http/handler/product_handler.go:513:0-573:1): implementada lógica para resolver o ID de Inventário (frontend) para o ID de Produto (backend) e atualizar ambas as tabelas (`products` e `inventory_items`) simultaneamente, garantindo consistência entre a visualização e o checkout.
- Compatibilidade Frontend (DTOs):
- Adicionado suporte aos campos `qtdade_estoque` e `preco_venda` (float) no payload de update.
- Removida a validação estrita de JSON (`DisallowUnknownFields`) para evitar erros 400 em payloads com campos extras.
- Registrada rota alias `PUT /api/v1/produtos-venda/{id}` apontando para o manipulador correto.
- Repositório & Testes:
- Implementação de [GetInventoryItem](cci:1://file:///c:/Projetos/saveinmed/backend-old/internal/usecase/usecase_test.go:189:0-191:1) e [UpdateInventoryItem](cci:1://file:///c:/Projetos/saveinmed/backend-old/internal/http/handler/product_handler.go:513:0-573:1) no PostgresRepo e Interfaces de Serviço.
- Correção de erro de sintaxe (declaração duplicada) em [postgres.go](cci:7://file:///c:/Projetos/saveinmed/backend-old/internal/repository/postgres/postgres.go:0:0-0:0).
- Atualização dos Mocks ([handler_test.go](cci:7://file:///c:/Projetos/saveinmed/backend-old/internal/http/handler/handler_test.go:0:0-0:0), [usecase_test.go](cci:7://file:///c:/Projetos/saveinmed/backend-old/internal/usecase/usecase_test.go:0:0-0:0), [product_service_test.go](cci:7://file:///c:/Projetos/saveinmed/backend-old/internal/usecase/product_service_test.go:0:0-0:0)) para refletir as novas assinaturas de interface e corrigir o build.
Frontend:
- Ajustes de integração nos serviços de carrinho, pedidos e gestão de produtos para suportar o fluxo corrigido.
67 lines
1.8 KiB
Go
67 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"database/sql"
|
|
"fmt"
|
|
"log"
|
|
|
|
_ "github.com/jackc/pgx/v5/stdlib"
|
|
)
|
|
|
|
func main() {
|
|
// Using the correct port 55432 found in .env
|
|
connStr := "postgres://postgres:123@localhost:55432/saveinmed?sslmode=disable"
|
|
|
|
log.Printf("Connecting to DB at %s...", connStr)
|
|
db, err := sql.Open("pgx", connStr)
|
|
if err != nil {
|
|
log.Fatalf("Failed to open DB: %v", err)
|
|
}
|
|
defer db.Close()
|
|
|
|
if err := db.Ping(); err != nil {
|
|
log.Fatalf("Failed to ping DB: %v", err)
|
|
}
|
|
log.Println("Connected successfully!")
|
|
|
|
id := "019be7a2-7727-7536-bee6-1ef05b464f3d"
|
|
fmt.Printf("Checking Product ID: %s\n", id)
|
|
|
|
var count int
|
|
err = db.QueryRow("SELECT count(*) FROM products WHERE id = $1", id).Scan(&count)
|
|
if err != nil {
|
|
log.Printf("Query count failed: %v", err)
|
|
}
|
|
fmt.Printf("Count: %d\n", count)
|
|
|
|
if count > 0 {
|
|
var name string
|
|
var batch sql.NullString
|
|
// Check columns that might cause scan errors if null
|
|
// Also check stock and expires_at
|
|
var stock sql.NullInt64
|
|
var expiresAt sql.NullTime
|
|
|
|
err = db.QueryRow("SELECT name, batch, stock, expires_at FROM products WHERE id = $1", id).Scan(&name, &batch, &stock, &expiresAt)
|
|
if err != nil {
|
|
log.Printf("Select details failed: %v", err)
|
|
} else {
|
|
fmt.Printf("Found: Name=%s\n", name)
|
|
fmt.Printf("Batch: Valid=%v, String=%v\n", batch.Valid, batch.String)
|
|
fmt.Printf("Stock: Valid=%v, Int64=%v\n", stock.Valid, stock.Int64)
|
|
fmt.Printf("ExpiresAt: Valid=%v, Time=%v\n", expiresAt.Valid, expiresAt.Time)
|
|
}
|
|
} else {
|
|
fmt.Println("Product NOT FOUND in DB. Listing random 5 products:")
|
|
rows, err := db.Query("SELECT id, name FROM products LIMIT 5")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer rows.Close()
|
|
for rows.Next() {
|
|
var pid, pname string
|
|
rows.Scan(&pid, &pname)
|
|
fmt.Printf("- %s: %s\n", pid, pname)
|
|
}
|
|
}
|
|
}
|