83 lines
2.2 KiB
Go
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))
|
|
}
|