-- name: UpsertCodeSlot :exec
INSERT INTO lock_code_slots (lock, slot, code, enabled, name) VALUES (?, ?, ?, ?, "") ON CONFLICT (lock, slot) DO UPDATE SET code=excluded.code, enabled=excluded.enabled;

-- name: GetLockCodeBySlot :one
SELECT * FROM lock_code_slots WHERE lock = ? AND slot = ?;

-- name: GetAllLockCodesByLock :many
SELECT * FROM lock_code_slots WHERE lock = ?;

-- name: GetLockCodesByCode :many
SELECT * FROM lock_code_slots WHERE code = ?;

-- name: GetEmptySlot :one
SELECT * FROM lock_code_slots WHERE lock = ? AND enabled = 0 LIMIT 1;

-- name: CountUsedSlots :one
SELECT COUNT(*) FROM lock_code_slots WHERE lock = ? AND enabled = 1;
