// Feature flags and a visit counter kept in a key-value file that survives restarts.
//
//   quillo run kv.qwe      then open http://localhost:8080/flags

use "kv.qwer"

let KV = "data/app.kv"

route GET /flags {
    kv_set(KV, "flag:dark_mode", true, 0)?
    kv_set(KV, "flag:new_checkout", { percent: 25 }, 0)?
    kv_set(KV, "flag:banner", "Sale ends Friday", 3600)?
    kv_set(KV, "other", 1, 0)?
    kv_list(KV, "flag:", 100)? | map((f) => { name: replace(f.key, "flag:", ""), value: f.value })
}

route GET /visit {
    let n = kv_incr(KV, `visits:${request.ip}`, 1)?
    { visits: n, banner: kv_get(KV, "flag:banner")?, missing: kv_get(KV, "nope")? }
}

route GET /reset {
    { removed: kv_delete(KV, "flag:banner")?, banner: kv_get(KV, "flag:banner")? }
}
