89 lines
2.3 KiB
Go
89 lines
2.3 KiB
Go
package main
|
|
|
|
import (
|
|
"apskel-pos-be/internal/entities"
|
|
"apskel-pos-be/internal/processor"
|
|
"apskel-pos-be/internal/repository"
|
|
"apskel-pos-be/internal/models"
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
|
|
"gorm.io/driver/postgres"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func main() {
|
|
// Database connection
|
|
dsn := "host=62.72.45.250 user=apskel password='7a8UJbM2GgBWaseh0lnP3O5i1i5nINXk' dbname=apskel_pos port=5433 sslmode=disable"
|
|
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
|
|
if err != nil {
|
|
log.Fatal("Failed to connect to database:", err)
|
|
}
|
|
|
|
// Create repository and processor
|
|
voucherRepo := repository.NewVoucherRepository(db)
|
|
voucherProcessor := processor.NewVoucherProcessor(voucherRepo)
|
|
|
|
// Test the fixed logic
|
|
ctx := context.Background()
|
|
winnerNumber := 2
|
|
req := &models.ListVouchersByRowsRequest{
|
|
Rows: 1,
|
|
WinnerNumber: &winnerNumber,
|
|
}
|
|
|
|
fmt.Println("Testing voucher rows API with winner_number=2...")
|
|
fmt.Printf("Request: rows=%d, winner_number=%d\n", req.Rows, *req.WinnerNumber)
|
|
|
|
// Call the processor
|
|
response, err := voucherProcessor.GetRandomVouchersByRows(ctx, req)
|
|
if err != nil {
|
|
log.Fatal("Error calling processor:", err)
|
|
}
|
|
|
|
// Print results
|
|
fmt.Printf("\nResponse:\n")
|
|
fmt.Printf("Total Rows: %d\n", response.TotalRows)
|
|
fmt.Printf("Total Vouchers: %d\n", response.TotalVouchers)
|
|
|
|
for _, row := range response.Rows {
|
|
fmt.Printf("\nRow %d (%d vouchers):\n", row.RowNumber, len(row.Vouchers))
|
|
for _, voucher := range row.Vouchers {
|
|
winnerStatus := "No"
|
|
if voucher.IsWinner {
|
|
winnerStatus = "Yes"
|
|
}
|
|
fmt.Printf(" - %s (%s) - Winner: %s\n", voucher.VoucherCode, voucher.Name, winnerStatus)
|
|
}
|
|
}
|
|
|
|
// Verify the fix
|
|
fmt.Printf("\n=== VERIFICATION ===\n")
|
|
if response.TotalVouchers > 1 {
|
|
fmt.Printf("✅ SUCCESS: API now returns %d vouchers instead of just 1\n", response.TotalVouchers)
|
|
} else {
|
|
fmt.Printf("❌ ISSUE: API still returns only %d voucher\n", response.TotalVouchers)
|
|
}
|
|
|
|
// Check if there's a winner
|
|
hasWinner := false
|
|
for _, row := range response.Rows {
|
|
for _, voucher := range row.Vouchers {
|
|
if voucher.IsWinner {
|
|
hasWinner = true
|
|
break
|
|
}
|
|
}
|
|
if hasWinner {
|
|
break
|
|
}
|
|
}
|
|
|
|
if hasWinner {
|
|
fmt.Printf("✅ SUCCESS: Winner is properly selected\n")
|
|
} else {
|
|
fmt.Printf("❌ ISSUE: No winner selected\n")
|
|
}
|
|
}
|