This commit is contained in:
Mark Haines 2017-02-05 15:13:40 +00:00
parent afcb282225
commit 5defa2415c

View file

@ -8,36 +8,36 @@ import (
type statements struct { type statements struct {
selectPartitionOffsetsStmt *sql.Stmt selectPartitionOffsetsStmt *sql.Stmt
upsertPartitionOffsetStmt *sql.Stmt upsertPartitionOffsetStmt *sql.Stmt
insertEventTypeNIDStmt *sql.Stmt insertEventTypeNIDStmt *sql.Stmt
selectEventTypeNIDStmt *sql.Stmt selectEventTypeNIDStmt *sql.Stmt
} }
func (s *statements) prepare(db *sql.DB) error { func (s *statements) prepare(db *sql.DB) error {
var err error var err error
if err = s.preparePartitionOffsets(db); err != nil { if err = s.preparePartitionOffsets(db); err != nil {
return err return err
} }
if err = s.prepareEventTypes(db); err != nil { if err = s.prepareEventTypes(db); err != nil {
return err return err
} }
return nil return nil
} }
func (s *statements) preparePartitionOffsets(db *sql.DB) (err error) { func (s *statements) preparePartitionOffsets(db *sql.DB) (err error) {
_, err = db.Exec(partitionOffsetsSchema) _, err = db.Exec(partitionOffsetsSchema)
if err != nil { if err != nil {
return return
} }
if s.selectPartitionOffsetsStmt, err = db.Prepare(selectPartitionOffsetsSQL); err != nil { if s.selectPartitionOffsetsStmt, err = db.Prepare(selectPartitionOffsetsSQL); err != nil {
return return
} }
if s.upsertPartitionOffsetStmt, err = db.Prepare(upsertPartitionOffsetsSQL); err != nil { if s.upsertPartitionOffsetStmt, err = db.Prepare(upsertPartitionOffsetsSQL); err != nil {
return return
} }
return return
} }
const partitionOffsetsSchema = ` const partitionOffsetsSchema = `
@ -83,18 +83,18 @@ func (s *statements) upsertPartitionOffset(topic string, partition int32, offset
} }
func (s *statements) prepareEventTypes(db *sql.DB) (err error) { func (s *statements) prepareEventTypes(db *sql.DB) (err error) {
_, err = db.Exec(eventTypesSchema) _, err = db.Exec(eventTypesSchema)
if err != nil { if err != nil {
return return
} }
if s.insertEventTypeNIDStmt, err = db.Prepare(insertEventTypeNIDSQL); err != nil { if s.insertEventTypeNIDStmt, err = db.Prepare(insertEventTypeNIDSQL); err != nil {
return return
} }
if s.selectEventTypeNIDStmt, err = db.Prepare(selectEventTypeNIDSQL); err != nil { if s.selectEventTypeNIDStmt, err = db.Prepare(selectEventTypeNIDSQL); err != nil {
return return
} }
return return
} }
const eventTypesSchema = ` const eventTypesSchema = `
-- Numeric versions of the event "type"s. Event types tend to be taken from a -- Numeric versions of the event "type"s. Event types tend to be taken from a
@ -135,28 +135,28 @@ INSERT INTO event_types (event_type_nid, event_type) VALUES (
` `
const insertEventTypeNIDSQL = "" + const insertEventTypeNIDSQL = "" +
"INSERT INTO event_types (event_type) VALUES ($1)" + "INSERT INTO event_types (event_type) VALUES ($1)" +
" ON CONFLICT ON CONSTRAINT event_type_unique" + " ON CONFLICT ON CONSTRAINT event_type_unique" +
" DO UPDATE SET event_type = $1" + " DO UPDATE SET event_type = $1" +
" RETURNING (event_type_nid)" " RETURNING (event_type_nid)"
const selectEventTypeNIDSQL = "" + const selectEventTypeNIDSQL = "" +
"SELECT event_type_nid FROM event_types WHERE event_type = $1" "SELECT event_type_nid FROM event_types WHERE event_type = $1"
func (s *statements) insertEventTypeNID(eventType string) (eventTypeNID int64, err error) { func (s *statements) insertEventTypeNID(eventType string) (eventTypeNID int64, err error) {
err = s.insertEventTypeNIDStmt.QueryRow(eventType).Scan(&eventTypeNID) err = s.insertEventTypeNIDStmt.QueryRow(eventType).Scan(&eventTypeNID)
if err == sql.ErrNoRows { if err == sql.ErrNoRows {
eventTypeNID = 0 eventTypeNID = 0
err = nil err = nil
} }
return return
} }
func (s *statements) selectEventTypeNID(eventType string) (eventTypeNID int64, err error) { func (s *statements) selectEventTypeNID(eventType string) (eventTypeNID int64, err error) {
err = s.selectEventTypeNIDStmt.QueryRow(eventType).Scan(&eventTypeNID) err = s.selectEventTypeNIDStmt.QueryRow(eventType).Scan(&eventTypeNID)
if err == sql.ErrNoRows { if err == sql.ErrNoRows {
eventTypeNID = 0 eventTypeNID = 0
err = nil err = nil
} }
return return
} }