package sqlite import ( "context" "git.aiterp.net/lucifer/lucifer/models" ) type buttonRepository struct{} // ButtonRepository is a sqlite datbase repository for the Button model. var ButtonRepository models.ButtonRepository = &buttonRepository{} func (r *buttonRepository) FindByID(ctx context.Context, id int) (models.Button, error) { button := models.Button{} err := db.GetContext(ctx, &button, "SELECT * FROM button WHERE id=?", id) return button, err } func (r *buttonRepository) FindByInternalID(ctx context.Context, internalID string) (models.Button, error) { button := models.Button{} err := db.GetContext(ctx, &button, "SELECT * FROM button WHERE internal_id=?", internalID) return button, err } func (r *buttonRepository) List(ctx context.Context) ([]models.Button, error) { lights := make([]models.Button, 0, 64) err := db.SelectContext(ctx, &lights, "SELECT * FROM button") return lights, err } func (r *buttonRepository) ListByBridge(ctx context.Context, bridge models.Bridge) ([]models.Button, error) { lights := make([]models.Button, 0, 64) err := db.SelectContext(ctx, &lights, "SELECT * FROM button WHERE bridge_id=?", bridge.ID) return lights, err } func (r *buttonRepository) Insert(ctx context.Context, button models.Button) (models.Button, error) { res, err := db.NamedExecContext(ctx, "INSERT INTO button (bridge_id, internal_index, internal_id, target_group_id, name, kind, missing, num_buttons) VALUES(:bridge_id, :internal_index, :internal_id, :target_group_id, :name, :kind, :missing, :num_buttons)", button) if err != nil { return models.Button{}, err } id, err := res.LastInsertId() if err != nil { return models.Button{}, err } button.ID = int(id) return button, nil } func (r *buttonRepository) Update(ctx context.Context, button models.Button) error { _, err := db.NamedExecContext(ctx, "UPDATE button SET internal_index=:internal_index,missing=:missing WHERE id=:id", button) return err } func (r *buttonRepository) Remove(ctx context.Context, button models.Button) error { _, err := db.NamedExecContext(ctx, "DELETE FROM button WHERE id=:id", button) return err }