package repositories import ( "app/models" "gorm.io/gorm" ) type Address interface { Create(a *models.Address) error GetAddresses(id uint) ([]models.Address, error) UpdateAddress(address string, id uint) error UpdatePostCode(newPostCode string, id uint) error Delete(id uint) error } type Address_repository struct { DB *gorm.DB } func newAddressRepository(db *gorm.DB) Address { return &Address_repository{DB: db} } func (r *Address_repository) Create(address *models.Address) error { if err := r.DB.Create(&address).Error; err != nil { return err } return nil } func (r *Address_repository) GetAddresses(id uint) ([]models.Address, error) { var address []models.Address if err := r.DB.Where("is_removed = ?", false).Where("user_id = ?", id).Find(&address).Error; err != nil { return nil, err } return address, nil } func (r *Address_repository) UpdateAddress(newAddress string, id uint) error { var address models.Address if err := r.DB.Where("is_removed = ?", false).Where("address_id = ? ", id).Model(&address).Update("address", newAddress).Error; err != nil { return err } return nil } func (r *Address_repository) UpdatePostCode(newPostCode string, id uint) error { var user models.User if err := r.DB.Where("is_removed = ?", false).Where("address_id = ? ", id).Model(&user).Update("post_code", newPostCode).Error; err != nil { return err } return nil } func (r *Address_repository) Delete(id uint) error { var address models.Address if err := r.DB.Where("address_id = ?", id).Model(&address).Update("is_removed", true).Error; err != nil { return err } return nil }