forked from ebhomengo/niki
				
			fix(niki): remove is_main from address and add
ame to address
This commit is contained in:
		
							parent
							
								
									bdf197e84b
								
							
						
					
					
						commit
						ed894c7520
					
				
							
								
								
									
										14
									
								
								docs/docs.go
								
								
								
								
							
							
						
						
									
										14
									
								
								docs/docs.go
								
								
								
								
							| 
						 | 
					@ -692,10 +692,6 @@ const docTemplate = `{
 | 
				
			||||||
                    "type": "string",
 | 
					                    "type": "string",
 | 
				
			||||||
                    "example": "tehran"
 | 
					                    "example": "tehran"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "benefactor_id": {
 | 
					 | 
				
			||||||
                    "type": "integer",
 | 
					 | 
				
			||||||
                    "example": 1
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "city_id": {
 | 
					                "city_id": {
 | 
				
			||||||
                    "type": "integer",
 | 
					                    "type": "integer",
 | 
				
			||||||
                    "example": 1
 | 
					                    "example": 1
 | 
				
			||||||
| 
						 | 
					@ -708,6 +704,10 @@ const docTemplate = `{
 | 
				
			||||||
                    "type": "number",
 | 
					                    "type": "number",
 | 
				
			||||||
                    "example": 22.22
 | 
					                    "example": 22.22
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "name": {
 | 
				
			||||||
 | 
					                    "type": "string",
 | 
				
			||||||
 | 
					                    "example": "home"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
                "postal_code": {
 | 
					                "postal_code": {
 | 
				
			||||||
                    "type": "string",
 | 
					                    "type": "string",
 | 
				
			||||||
                    "example": "1234567890"
 | 
					                    "example": "1234567890"
 | 
				
			||||||
| 
						 | 
					@ -1194,15 +1194,15 @@ const docTemplate = `{
 | 
				
			||||||
                "id": {
 | 
					                "id": {
 | 
				
			||||||
                    "type": "integer"
 | 
					                    "type": "integer"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "isMain": {
 | 
					 | 
				
			||||||
                    "type": "boolean"
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "lat": {
 | 
					                "lat": {
 | 
				
			||||||
                    "type": "number"
 | 
					                    "type": "number"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "lon": {
 | 
					                "lon": {
 | 
				
			||||||
                    "type": "number"
 | 
					                    "type": "number"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "name": {
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
                "postalCode": {
 | 
					                "postalCode": {
 | 
				
			||||||
                    "type": "string"
 | 
					                    "type": "string"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -681,10 +681,6 @@
 | 
				
			||||||
                    "type": "string",
 | 
					                    "type": "string",
 | 
				
			||||||
                    "example": "tehran"
 | 
					                    "example": "tehran"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "benefactor_id": {
 | 
					 | 
				
			||||||
                    "type": "integer",
 | 
					 | 
				
			||||||
                    "example": 1
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "city_id": {
 | 
					                "city_id": {
 | 
				
			||||||
                    "type": "integer",
 | 
					                    "type": "integer",
 | 
				
			||||||
                    "example": 1
 | 
					                    "example": 1
 | 
				
			||||||
| 
						 | 
					@ -697,6 +693,10 @@
 | 
				
			||||||
                    "type": "number",
 | 
					                    "type": "number",
 | 
				
			||||||
                    "example": 22.22
 | 
					                    "example": 22.22
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "name": {
 | 
				
			||||||
 | 
					                    "type": "string",
 | 
				
			||||||
 | 
					                    "example": "home"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
                "postal_code": {
 | 
					                "postal_code": {
 | 
				
			||||||
                    "type": "string",
 | 
					                    "type": "string",
 | 
				
			||||||
                    "example": "1234567890"
 | 
					                    "example": "1234567890"
 | 
				
			||||||
| 
						 | 
					@ -1183,15 +1183,15 @@
 | 
				
			||||||
                "id": {
 | 
					                "id": {
 | 
				
			||||||
                    "type": "integer"
 | 
					                    "type": "integer"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "isMain": {
 | 
					 | 
				
			||||||
                    "type": "boolean"
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "lat": {
 | 
					                "lat": {
 | 
				
			||||||
                    "type": "number"
 | 
					                    "type": "number"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "lon": {
 | 
					                "lon": {
 | 
				
			||||||
                    "type": "number"
 | 
					                    "type": "number"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "name": {
 | 
				
			||||||
 | 
					                    "type": "string"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
                "postalCode": {
 | 
					                "postalCode": {
 | 
				
			||||||
                    "type": "string"
 | 
					                    "type": "string"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,9 +4,6 @@ definitions:
 | 
				
			||||||
      address:
 | 
					      address:
 | 
				
			||||||
        example: tehran
 | 
					        example: tehran
 | 
				
			||||||
        type: string
 | 
					        type: string
 | 
				
			||||||
      benefactor_id:
 | 
					 | 
				
			||||||
        example: 1
 | 
					 | 
				
			||||||
        type: integer
 | 
					 | 
				
			||||||
      city_id:
 | 
					      city_id:
 | 
				
			||||||
        example: 1
 | 
					        example: 1
 | 
				
			||||||
        type: integer
 | 
					        type: integer
 | 
				
			||||||
| 
						 | 
					@ -16,6 +13,9 @@ definitions:
 | 
				
			||||||
      lon:
 | 
					      lon:
 | 
				
			||||||
        example: 22.22
 | 
					        example: 22.22
 | 
				
			||||||
        type: number
 | 
					        type: number
 | 
				
			||||||
 | 
					      name:
 | 
				
			||||||
 | 
					        example: home
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
      postal_code:
 | 
					      postal_code:
 | 
				
			||||||
        example: "1234567890"
 | 
					        example: "1234567890"
 | 
				
			||||||
        type: string
 | 
					        type: string
 | 
				
			||||||
| 
						 | 
					@ -331,12 +331,12 @@ definitions:
 | 
				
			||||||
        type: integer
 | 
					        type: integer
 | 
				
			||||||
      id:
 | 
					      id:
 | 
				
			||||||
        type: integer
 | 
					        type: integer
 | 
				
			||||||
      isMain:
 | 
					 | 
				
			||||||
        type: boolean
 | 
					 | 
				
			||||||
      lat:
 | 
					      lat:
 | 
				
			||||||
        type: number
 | 
					        type: number
 | 
				
			||||||
      lon:
 | 
					      lon:
 | 
				
			||||||
        type: number
 | 
					        type: number
 | 
				
			||||||
 | 
					      name:
 | 
				
			||||||
 | 
					        type: string
 | 
				
			||||||
      postalCode:
 | 
					      postalCode:
 | 
				
			||||||
        type: string
 | 
					        type: string
 | 
				
			||||||
      provinceID:
 | 
					      provinceID:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,9 +4,9 @@ type Address struct {
 | 
				
			||||||
	ID           uint
 | 
						ID           uint
 | 
				
			||||||
	PostalCode   string
 | 
						PostalCode   string
 | 
				
			||||||
	Address      string
 | 
						Address      string
 | 
				
			||||||
 | 
						Name         string
 | 
				
			||||||
	Lat          float64
 | 
						Lat          float64
 | 
				
			||||||
	Lon          float64
 | 
						Lon          float64
 | 
				
			||||||
	IsMain       bool
 | 
					 | 
				
			||||||
	CityID       uint
 | 
						CityID       uint
 | 
				
			||||||
	ProvinceID   uint
 | 
						ProvinceID   uint
 | 
				
			||||||
	BenefactorID uint
 | 
						BenefactorID uint
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,8 +8,8 @@ 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:"-"`
 | 
						BenefactorID uint    `json:"-"`
 | 
				
			||||||
	BenefactorID uint    `json:"benefactor_id" example:"1"`
 | 
						Name         string  `json:"name" example:"home"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type BenefactorAddAddressResponse struct {
 | 
					type BenefactorAddAddressResponse struct {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,20 +20,10 @@ func (d *DB) CreateBenefactorAddress(ctx context.Context, address entity.Address
 | 
				
			||||||
			WithMessage("error querying for existing main address").WithKind(richerror.KindUnexpected)
 | 
								WithMessage("error querying for existing main address").WithKind(richerror.KindUnexpected)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	address.ProvinceID = provinceID
 | 
						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)
 | 
					 | 
				
			||||||
	if err != nil && err != sql.ErrNoRows {
 | 
					 | 
				
			||||||
		return entity.Address{}, richerror.New(op).WithErr(err).
 | 
					 | 
				
			||||||
			WithMessage("error querying for existing main address").WithKind(richerror.KindUnexpected)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Set is_main field based on the count
 | 
					 | 
				
			||||||
	address.IsMain = count == 0
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// 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, name, city_id, province_id, benefactor_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`,
 | 
				
			||||||
		address.PostalCode, address.Address, address.Lat, address.Lon, address.IsMain, address.CityID, provinceID, address.BenefactorID)
 | 
							address.PostalCode, address.Address, address.Lat, address.Lon, address.Name, 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)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -40,7 +40,7 @@ func scanAddress(scanner mysql.Scanner) (entity.Address, error) {
 | 
				
			||||||
	var address entity.Address
 | 
						var address entity.Address
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := scanner.Scan(&address.ID, &address.PostalCode, &address.Address, &address.Lat, &address.Lon,
 | 
						err := scanner.Scan(&address.ID, &address.PostalCode, &address.Address, &address.Lat, &address.Lon,
 | 
				
			||||||
		&address.IsMain, &address.CityID, &address.ProvinceID, &address.BenefactorID,
 | 
							&address.Name, &address.CityID, &address.ProvinceID, &address.BenefactorID,
 | 
				
			||||||
		&createdAt, &updatedAt)
 | 
							&createdAt, &updatedAt)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return address, err
 | 
						return address, err
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,7 +5,7 @@ CREATE TABLE `addresses` (
 | 
				
			||||||
                            `address`       TEXT         NOT NULL,
 | 
					                            `address`       TEXT         NOT NULL,
 | 
				
			||||||
                            `lat`           FLOAT,
 | 
					                            `lat`           FLOAT,
 | 
				
			||||||
                            `lon`           FLOAT,
 | 
					                            `lon`           FLOAT,
 | 
				
			||||||
                            `is_main`       BOOL         NOT NULL DEFAULT FALSE,
 | 
					                            `name`          VARCHAR(191) NOT NULL,
 | 
				
			||||||
                            `city_id`       INT          NOT NULL,
 | 
					                            `city_id`       INT          NOT NULL,
 | 
				
			||||||
                            `province_id`   INT          NOT NULL,
 | 
					                            `province_id`   INT          NOT NULL,
 | 
				
			||||||
                            `benefactor_id` INT          NOT NULL,
 | 
					                            `benefactor_id` INT          NOT NULL,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,6 +14,7 @@ func (s Service) Add(ctx context.Context, req param.BenefactorAddAddressRequest)
 | 
				
			||||||
	address, err := s.repo.CreateBenefactorAddress(ctx, entity.Address{
 | 
						address, err := s.repo.CreateBenefactorAddress(ctx, entity.Address{
 | 
				
			||||||
		PostalCode:   req.PostalCode,
 | 
							PostalCode:   req.PostalCode,
 | 
				
			||||||
		Address:      req.Address,
 | 
							Address:      req.Address,
 | 
				
			||||||
 | 
							Name:         req.Name,
 | 
				
			||||||
		Lat:          req.Lat,
 | 
							Lat:          req.Lat,
 | 
				
			||||||
		Lon:          req.Lon,
 | 
							Lon:          req.Lon,
 | 
				
			||||||
		CityID:       req.CityID,
 | 
							CityID:       req.CityID,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,21 +15,18 @@ func (v Validator) ValidateAddAddress(req param.BenefactorAddAddressRequest) (ma
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		validation.Field(&req.Address, validation.Required),
 | 
							validation.Field(&req.Address, validation.Required),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		validation.Field(&req.BenefactorID,
 | 
							validation.Field(&req.BenefactorID, validation.Required,
 | 
				
			||||||
			validation.Required,
 | 
					 | 
				
			||||||
			validation.By(v.doesBenefactorExist)),
 | 
								validation.By(v.doesBenefactorExist)),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		validation.Field(&req.Lon,
 | 
							validation.Field(&req.Lon, validation.Required),
 | 
				
			||||||
			validation.Required),
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		validation.Field(&req.Lat,
 | 
							validation.Field(&req.Lat, validation.Required),
 | 
				
			||||||
			validation.Required),
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		validation.Field(&req.PostalCode,
 | 
							validation.Field(&req.Name, validation.Required),
 | 
				
			||||||
			validation.Required,
 | 
					
 | 
				
			||||||
		),
 | 
							validation.Field(&req.PostalCode, validation.Required),
 | 
				
			||||||
		validation.Field(&req.CityID,
 | 
					
 | 
				
			||||||
			validation.Required,
 | 
							validation.Field(&req.CityID, validation.Required,
 | 
				
			||||||
			validation.By(v.doesCityExist)),
 | 
								validation.By(v.doesCityExist)),
 | 
				
			||||||
	); err != nil {
 | 
						); err != nil {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue