Upstream sync

This commit is contained in:
Senad Uka
2018-05-19 10:15:27 +02:00
parent cf5b94edcc
commit 157b23da3c
14 changed files with 276 additions and 35 deletions

View File

@@ -28,6 +28,7 @@ type Conn struct {
notification *notificationRepo
profile *profileRepo
organization *organizationRepo
zipcodes *zipcodeRepo
}
// Begin starts a transaction
@@ -80,6 +81,10 @@ func (c *Conn) Organization() contract.OrganizationRepo {
return c.organization
}
func (c *Conn) Zipcodes() contract.ZipcodeRepo{
return c.zipcodes
}
// Instance returns an instance of a DataManager
func Instance(cfg *config.Config) (contract.DataManager, error) {
once.Do(func() {
@@ -111,6 +116,7 @@ func Instance(cfg *config.Config) (contract.DataManager, error) {
instance.notification = newNotificationRepo(db)
instance.profile = newProfileRepo(db)
instance.organization = newOrganizationRepo(db)
instance.zipcodes = newZipcodeRepo(db)
})
return instance, connErr

View File

@@ -16,6 +16,7 @@ type transaction struct {
notification *notificationRepo
profile *profileRepo
organization *organizationRepo
zipcodes *zipcodeRepo
}
func newTransaction(tx *sql.Tx) *transaction {
@@ -66,6 +67,10 @@ func (t transaction) Organization() contract.OrganizationRepo {
return t.organization
}
func (t transaction) Zipcodes() contract.ZipcodeRepo{
return t.zipcodes
}
func (t *transaction) Commit() error {
err := t.tx.Commit()

65
data/datamysql/zipcode.go Normal file
View File

@@ -0,0 +1,65 @@
package datamysql
import (
"database/sql"
"bitbucket.org/nemt/nemt-portal-api/domain/entity"
"bitbucket.org/nemt/nemt-portal-api/infra/errors"
)
// rideRepo maps methods to database
type zipcodeRepo struct {
conn executor
}
func newZipcodeRepo(conn executor) *zipcodeRepo {
return &zipcodeRepo{
conn: conn,
}
}
func (c *zipcodeRepo) getQuery() string {
const (
query = `SELECT
a.participating_zip_code_id,
a.participating_zip_code_uuid,
a.zipcode,
a.participating
FROM
tab_participating_zip_code a `
)
return query
}
// parseSet parses a result set result to an entity array
func (c *zipcodeRepo) parseSet(rows *sql.Rows, err error) ([]entity.Zipcode, error) {
if err != nil {
return nil, errors.Wrap(err)
}
result := make([]entity.Zipcode, 0)
for rows.Next() {
entity, err := c.parseEntity(rows)
if err != nil {
return nil, errors.Wrap(err)
}
result = append(result, entity)
}
return result, nil
}
// parseEntity parses a result to an entity
func (c *zipcodeRepo) parseEntity(row scanner) (retVal entity.Zipcode, err error) {
err = row.Scan(
&retVal.ID, &retVal.UUID, &retVal.Zipcode, &retVal.Participating)
return retVal, errors.Wrap(err)
}
func (c *zipcodeRepo) GetAll() ([]entity.Zipcode, error) {
return c.parseSet(c.conn.Query(c.getQuery()))
}
func (c *zipcodeRepo) GetByParticipatingZipcode(zipcode string) (entity.Zipcode, error) {
return c.parseEntity(c.conn.QueryRow(c.getQuery()+"WHERE a.participating = 1 AND a.zipcode = ?", zipcode))
}