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 }