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": {
|
"postal_code": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"example": "1234567890"
|
"example": "1234567890"
|
||||||
},
|
|
||||||
"province_id": {
|
|
||||||
"type": "integer",
|
|
||||||
"example": 1
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -700,10 +700,6 @@
|
||||||
"postal_code": {
|
"postal_code": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"example": "1234567890"
|
"example": "1234567890"
|
||||||
},
|
|
||||||
"province_id": {
|
|
||||||
"type": "integer",
|
|
||||||
"example": 1
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -19,9 +19,6 @@ definitions:
|
||||||
postal_code:
|
postal_code:
|
||||||
example: "1234567890"
|
example: "1234567890"
|
||||||
type: string
|
type: string
|
||||||
province_id:
|
|
||||||
example: 1
|
|
||||||
type: integer
|
|
||||||
type: object
|
type: object
|
||||||
addressparam.BenefactorAddAddressResponse:
|
addressparam.BenefactorAddAddressResponse:
|
||||||
properties:
|
properties:
|
||||||
|
|
|
@ -8,7 +8,7 @@ type BenefactorAddAddressRequest struct {
|
||||||
Lat float64 `json:"lat" example:"22.23"`
|
Lat float64 `json:"lat" example:"22.23"`
|
||||||
Lon float64 `json:"lon" example:"22.22"`
|
Lon float64 `json:"lon" example:"22.22"`
|
||||||
CityID uint `json:"city_id" example:"1"`
|
CityID uint `json:"city_id" example:"1"`
|
||||||
ProvinceID uint `json:"province_id" example:"1"`
|
ProvinceID uint `json:"-"`
|
||||||
BenefactorID uint `json:"benefactor_id" example:"1"`
|
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) {
|
func (d *DB) CreateBenefactorAddress(ctx context.Context, address entity.Address) (entity.Address, error) {
|
||||||
const op = "mysqlbenefactor.createBenefactorAddress"
|
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
|
// Check if the user already has a main address
|
||||||
var count int
|
var count int
|
||||||
err := d.conn.Conn().QueryRowContext(ctx, `SELECT COUNT(*) FROM addresses WHERE is_main = true AND benefactor_id = ?`, address.BenefactorID).Scan(&count)
|
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
|
// 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 (?, ?, ?, ?, ?, ?, ?, ?)`,
|
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 {
|
if err != nil {
|
||||||
return entity.Address{}, richerror.New(op).WithErr(err).
|
return entity.Address{}, richerror.New(op).WithErr(err).
|
||||||
WithMessage(errmsg.ErrorMsgNotFound).WithKind(richerror.KindUnexpected)
|
WithMessage(errmsg.ErrorMsgNotFound).WithKind(richerror.KindUnexpected)
|
||||||
|
|
|
@ -17,7 +17,6 @@ func (s Service) Add(ctx context.Context, req param.BenefactorAddAddressRequest)
|
||||||
Lat: req.Lat,
|
Lat: req.Lat,
|
||||||
Lon: req.Lon,
|
Lon: req.Lon,
|
||||||
CityID: req.CityID,
|
CityID: req.CityID,
|
||||||
ProvinceID: req.ProvinceID,
|
|
||||||
BenefactorID: req.BenefactorID,
|
BenefactorID: req.BenefactorID,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -31,10 +31,6 @@ func (v Validator) ValidateAddAddress(req param.BenefactorAddAddressRequest) (ma
|
||||||
validation.Field(&req.CityID,
|
validation.Field(&req.CityID,
|
||||||
validation.Required,
|
validation.Required,
|
||||||
validation.By(v.doesCityExist)),
|
validation.By(v.doesCityExist)),
|
||||||
|
|
||||||
validation.Field(&req.ProvinceID,
|
|
||||||
validation.Required,
|
|
||||||
validation.By(v.doesProvinceExist)),
|
|
||||||
); err != nil {
|
); err != nil {
|
||||||
|
|
||||||
fieldErrors := make(map[string]string)
|
fieldErrors := make(map[string]string)
|
||||||
|
|
|
@ -13,7 +13,6 @@ type BenefactorSvc interface {
|
||||||
}
|
}
|
||||||
type Repository interface {
|
type Repository interface {
|
||||||
IsExistCityByID(ctx context.Context, id uint) (bool, error)
|
IsExistCityByID(ctx context.Context, id uint) (bool, error)
|
||||||
IsExistProvinceByID(ctx context.Context, id uint) (bool, error)
|
|
||||||
}
|
}
|
||||||
type Validator struct {
|
type Validator struct {
|
||||||
benefactorSvc BenefactorSvc
|
benefactorSvc BenefactorSvc
|
||||||
|
@ -37,22 +36,6 @@ func (v Validator) doesBenefactorExist(value interface{}) error {
|
||||||
return nil
|
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 {
|
func (v Validator) doesCityExist(value interface{}) error {
|
||||||
cityID, ok := value.(uint)
|
cityID, ok := value.(uint)
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|
Loading…
Reference in New Issue