forked from ebhomengo/niki
"fix(niki):Get Province ID by City ID"
This commit is contained in:
parent
5262356b5e
commit
bdf197e84b
|
@ -711,10 +711,6 @@ const docTemplate = `{
|
|||
"postal_code": {
|
||||
"type": "string",
|
||||
"example": "1234567890"
|
||||
},
|
||||
"province_id": {
|
||||
"type": "integer",
|
||||
"example": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -700,10 +700,6 @@
|
|||
"postal_code": {
|
||||
"type": "string",
|
||||
"example": "1234567890"
|
||||
},
|
||||
"province_id": {
|
||||
"type": "integer",
|
||||
"example": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -19,9 +19,6 @@ definitions:
|
|||
postal_code:
|
||||
example: "1234567890"
|
||||
type: string
|
||||
province_id:
|
||||
example: 1
|
||||
type: integer
|
||||
type: object
|
||||
addressparam.BenefactorAddAddressResponse:
|
||||
properties:
|
||||
|
|
|
@ -8,7 +8,7 @@ type BenefactorAddAddressRequest struct {
|
|||
Lat float64 `json:"lat" example:"22.23"`
|
||||
Lon float64 `json:"lon" example:"22.22"`
|
||||
CityID uint `json:"city_id" example:"1"`
|
||||
ProvinceID uint `json:"province_id" example:"1"`
|
||||
ProvinceID uint `json:"-"`
|
||||
BenefactorID uint `json:"benefactor_id" example:"1"`
|
||||
}
|
||||
|
||||
|
|
|
@ -12,6 +12,14 @@ import (
|
|||
func (d *DB) CreateBenefactorAddress(ctx context.Context, address entity.Address) (entity.Address, error) {
|
||||
const op = "mysqlbenefactor.createBenefactorAddress"
|
||||
|
||||
// Get Province ID by City ID
|
||||
var provinceID uint
|
||||
pErr := d.conn.Conn().QueryRowContext(ctx, `SELECT province_id FROM cities WHERE id = ?`, address.CityID).Scan(&provinceID)
|
||||
if pErr != nil && pErr != sql.ErrNoRows {
|
||||
return entity.Address{}, richerror.New(op).WithErr(pErr).
|
||||
WithMessage("error querying for existing main address").WithKind(richerror.KindUnexpected)
|
||||
}
|
||||
address.ProvinceID = provinceID
|
||||
// Check if the user already has a main address
|
||||
var count int
|
||||
err := d.conn.Conn().QueryRowContext(ctx, `SELECT COUNT(*) FROM addresses WHERE is_main = true AND benefactor_id = ?`, address.BenefactorID).Scan(&count)
|
||||
|
@ -25,7 +33,7 @@ func (d *DB) CreateBenefactorAddress(ctx context.Context, address entity.Address
|
|||
|
||||
// Insert the new address
|
||||
res, err := d.conn.Conn().ExecContext(ctx, `INSERT INTO addresses (postal_code, address, lat, lon, is_main, city_id, province_id, benefactor_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`,
|
||||
address.PostalCode, address.Address, address.Lat, address.Lon, address.IsMain, address.CityID, address.ProvinceID, address.BenefactorID)
|
||||
address.PostalCode, address.Address, address.Lat, address.Lon, address.IsMain, address.CityID, provinceID, address.BenefactorID)
|
||||
if err != nil {
|
||||
return entity.Address{}, richerror.New(op).WithErr(err).
|
||||
WithMessage(errmsg.ErrorMsgNotFound).WithKind(richerror.KindUnexpected)
|
||||
|
|
|
@ -17,7 +17,6 @@ func (s Service) Add(ctx context.Context, req param.BenefactorAddAddressRequest)
|
|||
Lat: req.Lat,
|
||||
Lon: req.Lon,
|
||||
CityID: req.CityID,
|
||||
ProvinceID: req.ProvinceID,
|
||||
BenefactorID: req.BenefactorID,
|
||||
})
|
||||
if err != nil {
|
||||
|
|
|
@ -31,10 +31,6 @@ func (v Validator) ValidateAddAddress(req param.BenefactorAddAddressRequest) (ma
|
|||
validation.Field(&req.CityID,
|
||||
validation.Required,
|
||||
validation.By(v.doesCityExist)),
|
||||
|
||||
validation.Field(&req.ProvinceID,
|
||||
validation.Required,
|
||||
validation.By(v.doesProvinceExist)),
|
||||
); err != nil {
|
||||
|
||||
fieldErrors := make(map[string]string)
|
||||
|
|
|
@ -13,7 +13,6 @@ type BenefactorSvc interface {
|
|||
}
|
||||
type Repository interface {
|
||||
IsExistCityByID(ctx context.Context, id uint) (bool, error)
|
||||
IsExistProvinceByID(ctx context.Context, id uint) (bool, error)
|
||||
}
|
||||
type Validator struct {
|
||||
benefactorSvc BenefactorSvc
|
||||
|
@ -37,22 +36,6 @@ func (v Validator) doesBenefactorExist(value interface{}) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (v Validator) doesProvinceExist(value interface{}) error {
|
||||
provinceID, ok := value.(uint)
|
||||
if !ok {
|
||||
return fmt.Errorf(errmsg.ErrorMsgSomethingWentWrong)
|
||||
}
|
||||
isExisted, err := v.repository.IsExistProvinceByID(context.Background(), provinceID)
|
||||
if err != nil {
|
||||
return fmt.Errorf(errmsg.ErrorMsgNotFound)
|
||||
}
|
||||
if !isExisted {
|
||||
return fmt.Errorf(errmsg.ErrorMsgNotFound)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (v Validator) doesCityExist(value interface{}) error {
|
||||
cityID, ok := value.(uint)
|
||||
if !ok {
|
||||
|
|
Loading…
Reference in New Issue