chore: add check address
This commit is contained in:
@@ -0,0 +1,25 @@
|
|||||||
|
package db
|
||||||
|
|
||||||
|
import (
|
||||||
|
"database/sql"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"gestion/models"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (d *Database) CheckAddress(addressByUser *models.Command) error {
|
||||||
|
var correction models.Address
|
||||||
|
err := d.DB.QueryRow(
|
||||||
|
`SELECT invalid_address, correct_address FROM adresse_correction WHERE invalid_address = $1`,
|
||||||
|
addressByUser.DeliveryAddress,
|
||||||
|
).Scan(&correction.InvalidAddress, &correction.CorrectAddress)
|
||||||
|
if errors.Is(err, sql.ErrNoRows) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("checkAddress: %w", err)
|
||||||
|
}
|
||||||
|
var correctedAddress = correction.CorrectAddress
|
||||||
|
addressByUser.DeliveryAddress = correctedAddress
|
||||||
|
return fmt.Errorf("Adresse invalide %s", correctedAddress)
|
||||||
|
}
|
||||||
@@ -251,6 +251,14 @@ func (db *Database) createTables() error {
|
|||||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||||
);`,
|
);`,
|
||||||
|
|
||||||
|
`CREATE TABLE IF NOT EXISTS adresse_correction (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
invalid_address VARCHAR(255) NOT NULL UNIQUE,
|
||||||
|
correct_address VARCHAR(255) NOT NULL UNIQUE,
|
||||||
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);`,
|
||||||
// ============================
|
// ============================
|
||||||
// INDEXES - ✅ AJOUT D'INDEX POUR CANCELLATIONS_COUNT
|
// INDEXES - ✅ AJOUT D'INDEX POUR CANCELLATIONS_COUNT
|
||||||
// ============================
|
// ============================
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ package handlers
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"gestion/db"
|
"gestion/db"
|
||||||
|
"gestion/models"
|
||||||
"gestion/services"
|
"gestion/services"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
@@ -305,6 +306,13 @@ func ValidateBasket(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cmd := &models.Command{DeliveryAddress: req.DeliveryAddress}
|
||||||
|
if err := database.CheckAddress(cmd); err != nil {
|
||||||
|
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error(), "corrected_address": cmd.DeliveryAddress})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
req.DeliveryAddress = cmd.DeliveryAddress
|
||||||
|
|
||||||
log.Printf("🛒 [CHECKOUT] Début checkout pour: %s", usernameStr)
|
log.Printf("🛒 [CHECKOUT] Début checkout pour: %s", usernameStr)
|
||||||
|
|
||||||
// ============================================
|
// ============================================
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
package models
|
||||||
|
|
||||||
|
import "time"
|
||||||
|
|
||||||
|
type Address struct {
|
||||||
|
ID int64 `db:"id"`
|
||||||
|
InvalidAddress string `db:"invalid_address"`
|
||||||
|
CorrectAddress string `db:"correct_address"`
|
||||||
|
CreatedAt time.Time `db:"created_at"`
|
||||||
|
UpdatedAt time.Time `db:"updated_at"`
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user