Files
projet_gestion_commande/backend/gestion/db/db_address.go
T

68 lines
1.8 KiB
Go

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)
}
func (d *Database) AddAddress(CorrectAddressByAdmin string, InvalidAddressByAdmin string) error {
_, err := d.DB.Exec(
`INSERT INTO adresse_correction
(invalid_address, correct_address)
VALUES ($1, $2)`,
InvalidAddressByAdmin, CorrectAddressByAdmin,
)
if err != nil {
return fmt.Errorf("addAddress: %w", err)
}
return nil
}
func (d *Database) DeleteAddress(InvalidAddressByAdmin string, CorrectAddressByAdmin string) error {
_, err := d.DB.Exec(
`DELETE FROM adresse_correction WHERE invalid_address = $1 AND correct_address = $2`,
InvalidAddressByAdmin, CorrectAddressByAdmin,
)
if err != nil {
return fmt.Errorf("deleteAddress: %w", err)
}
return nil
}
func (d *Database) AllAddress() ([]models.Address, error) {
rows, err := d.DB.Query("SELECT invalid_address, correct_address FROM adresse_correction")
if err != nil {
return nil, fmt.Errorf("getAllAddress: %w", err)
}
defer rows.Close()
var addresses []models.Address
for rows.Next() {
var a models.Address
if err := rows.Scan(&a.InvalidAddress, &a.CorrectAddress); err != nil {
return nil, fmt.Errorf("getAllAddress scan: %w", err)
}
addresses = append(addresses, a)
}
return addresses, rows.Err()
}