92 lines
2.1 KiB
Go
92 lines
2.1 KiB
Go
package addressesRepo
|
|
|
|
import (
|
|
"git.ma-al.com/goc_daniel/b2b/app/db"
|
|
"git.ma-al.com/goc_daniel/b2b/app/model"
|
|
)
|
|
|
|
type UIAddressesRepo interface {
|
|
UserHasAddress(user_id uint, address_id uint) (uint, error)
|
|
UserAddressesAmt(user_id uint) (uint, error)
|
|
AddNewAddress(user_id uint, address_info string, country_id uint) error
|
|
UpdateAddress(user_id uint, address_id uint, address_info string, country_id uint) error
|
|
RetrieveAddresses(user_id uint) (*[]model.Address, error)
|
|
DeleteAddress(user_id uint, address_id uint) error
|
|
}
|
|
|
|
type AddressesRepo struct{}
|
|
|
|
func New() UIAddressesRepo {
|
|
return &AddressesRepo{}
|
|
}
|
|
|
|
func (repo *AddressesRepo) UserHasAddress(user_id uint, address_id uint) (uint, error) {
|
|
var amt uint
|
|
|
|
err := db.DB.
|
|
Table("b2b_addresses").
|
|
Select("COUNT(*) AS amt").
|
|
Where("id = ? AND b2b_customer_id = ?", address_id, user_id).
|
|
Scan(&amt).
|
|
Error
|
|
|
|
return amt, err
|
|
}
|
|
|
|
func (repo *AddressesRepo) UserAddressesAmt(user_id uint) (uint, error) {
|
|
var amt uint
|
|
|
|
err := db.DB.
|
|
Table("b2b_addresses").
|
|
Select("COUNT(*) AS amt").
|
|
Where("b2b_customer_id = ?", user_id).
|
|
Scan(&amt).
|
|
Error
|
|
|
|
return amt, err
|
|
}
|
|
|
|
func (repo *AddressesRepo) AddNewAddress(user_id uint, address_info string, country_id uint) error {
|
|
address := model.Address{
|
|
CustomerID: user_id,
|
|
AddressInfo: address_info,
|
|
CountryID: country_id,
|
|
}
|
|
|
|
return db.DB.
|
|
Create(&address).
|
|
Error
|
|
}
|
|
|
|
func (repo *AddressesRepo) UpdateAddress(user_id uint, address_id uint, address_info string, country_id uint) error {
|
|
address := model.Address{
|
|
ID: address_id,
|
|
CustomerID: user_id,
|
|
AddressInfo: address_info,
|
|
CountryID: country_id,
|
|
}
|
|
|
|
return db.DB.
|
|
Where("id = ? AND b2b_customer_id = ?", address_id, user_id).
|
|
Updates(&address).
|
|
Error
|
|
}
|
|
|
|
func (repo *AddressesRepo) RetrieveAddresses(user_id uint) (*[]model.Address, error) {
|
|
var addresses []model.Address
|
|
|
|
err := db.DB.
|
|
Where("b2b_customer_id = ?", user_id).
|
|
Find(&addresses).
|
|
Error
|
|
|
|
return &addresses, err
|
|
}
|
|
|
|
func (repo *AddressesRepo) DeleteAddress(user_id uint, address_id uint) error {
|
|
return db.DB.
|
|
Where("id = ? AND b2b_customer_id = ?", address_id, user_id).
|
|
Delete(&model.Address{}).
|
|
Error
|
|
}
|