package db import ( "fmt" "gestion/models" "gestion/utils" "strings" ) func (d *Database) CheckAddress(addressByUser *models.Command) error { var correction models.Address result := d.GDB.Where("invalid_address = ?", addressByUser.DeliveryAddress).First(&correction) if result.Error == nil { addressByUser.DeliveryAddress = correction.CorrectAddress return fmt.Errorf("adresse invalide %s", correction.CorrectAddress) } if !isNotFound(result.Error) { return fmt.Errorf("checkAddress: %w", result.Error) } // (accents/casse/espaces) pour rattraper les variantes mineures de saisie. corrections, err := d.AllAddress() if err != nil { return nil } normalizedInput := utils.NormalizeAddress(addressByUser.DeliveryAddress) for _, c := range corrections { if strings.EqualFold(utils.NormalizeAddress(c.InvalidAddress), normalizedInput) { addressByUser.DeliveryAddress = c.CorrectAddress return fmt.Errorf("adresse invalide %s", c.CorrectAddress) } } return nil } func (d *Database) AddAddress(CorrectAddressByAdmin string, InvalidAddressByAdmin string) error { address := models.Address{ InvalidAddress: InvalidAddressByAdmin, CorrectAddress: CorrectAddressByAdmin, } if err := d.GDB.Create(&address).Error; err != nil { return fmt.Errorf("addAddress: %w", err) } return nil } func (d *Database) DeleteAddress(InvalidAddressByAdmin string, CorrectAddressByAdmin string) error { result := d.GDB.Where("invalid_address = ? AND correct_address = ?", InvalidAddressByAdmin, CorrectAddressByAdmin). Delete(&models.Address{}) if result.Error != nil { return fmt.Errorf("deleteAddress: %w", result.Error) } return nil } func (d *Database) AllAddress() ([]models.Address, error) { var addresses []models.Address if err := d.GDB.Find(&addresses).Error; err != nil { return nil, fmt.Errorf("getAllAddress: %w", err) } return addresses, nil }