package repo import ( "github.com/jmoiron/sqlx" ) const ( StateCreated = "created" StateQueued = "queued" StateInProgress = "in_progress" StateDone = "done" StateError = "error" ) type ImageStates struct { db *sqlx.DB queryGet *sqlx.NamedStmt stmtUpdate *sqlx.NamedStmt } func NewImageStateRepo(db *sqlx.DB) (repo ImageStates, err error) { repo.db = db repo.queryGet, err = db.PrepareNamed(` SELECT state FROM images WHERE id = :imageId `) if err != nil { return } repo.stmtUpdate, err = db.PrepareNamed(` UPDATE images SET state = :state WHERE id = :imageId `) if err != nil { return } return repo, nil } func (repo ImageStates) Get(imageId string) (state string, err error) { err = repo.queryGet.Get(&state, map[string]interface{}{ "imageId": imageId, }) return } func (repo ImageStates) Update(imageId string, state string) (err error) { _, err = repo.stmtUpdate.Exec(map[string]interface{}{ "imageId": imageId, "state": state, }) return }