Files
old-svijetlastrana/data/datamysql/plan.go
2018-05-25 09:12:42 +02:00

83 lines
2.2 KiB
Go

package datamysql
import (
"database/sql"
"bitbucket.org/nemt/nemt-portal-api/domain/entity"
"bitbucket.org/nemt/nemt-portal-api/infra/errors"
)
type planRepo struct {
conn executor
}
func newPlanRepo(conn executor) *planRepo {
return &planRepo{
conn: conn,
}
}
func (c *planRepo) getQuery() string {
const query = `SELECT
a.plan_id,
a.plan_uuid,
a.plan_name,
a.plan_internal_id,
a.plan_internal_status,
a.plan_entity_id,
a.entity_id,
a.payer_id,
a.payer_name,
a.active,
a.created,
a.updated,
b.plan_prefix_id,
b.plan_prefix_uuid,
b.alpha_prefix
FROM
tab_plan a
INNER JOIN
tab_plan_alpha_prefix b ON a.plan_id = b.plan_id `
return query
}
func (c *planRepo) parseSet(rows *sql.Rows, err error) ([]entity.Plan, error) {
if err != nil {
return nil, errors.Wrap(err)
}
result := make([]entity.Plan, 0)
for rows.Next() {
entity, err := c.parseEntity(rows)
if err != nil {
return nil, errors.Wrap(err)
}
result = append(result, entity)
}
return result, nil
}
func (c *planRepo) parseEntity(row scanner) (retVal entity.Plan, err error) {
err = row.Scan(
&retVal.ID, &retVal.UUID, &retVal.Name, &retVal.InternalID, &retVal.Status, &retVal.PlanEntityID, &retVal.EntityID, &retVal.PayerID, &retVal.PayerName,
&retVal.Active, &retVal.Created, &retVal.Updated, &retVal.PrefixID, &retVal.PrefixUUID, &retVal.AlphaPrefix)
return retVal, errors.Wrap(err)
}
func (c *planRepo) GetByAlphaPrefix(alphaPrefix string) (entity.Plan, error) {
return c.parseEntity(c.conn.QueryRow(c.getQuery()+" WHERE b.alpha_prefix = ? ", alphaPrefix))
}
func (c *planRepo) GetByUUID(planUUID string) ([]entity.Plan, error) {
return c.parseSet(c.conn.Query(c.getQuery()+" WHERE a.plan_uuid = ? ", planUUID))
}
func (c *planRepo) GetByID(planID int64) ([]entity.Plan, error) {
return c.parseSet(c.conn.Query(c.getQuery()+" WHERE a.plan_id = ? ", planID))
}
func (c *planRepo) GetByPrefixUUID(prefixUUID string) (entity.Plan, error) {
return c.parseEntity(c.conn.QueryRow(c.getQuery()+" WHERE b.plan_prefix_uuid = ? ", prefixUUID))
}