DenoKV's wrapper library / kv query library (We also make adapters for VercelKV and other KVs.)
どこかの軟体生物の人の為に作ります
import { TakoKV } from "https://deno.land/x/takokv/mod.ts";
const tako = new TakoKV(await Deno.openKv());
await tako.setup();
/** Set / Create **/
tako.createTable("members", ["name", "password"]); // TableName, ...columns
// tako.createColumn("members", "name"); // add name column
// tako.createColumn("members", "password"); // add password column
// old
const datas: {
name: string,
password: string
}[] = [
{
name: "Amex",
password: "a"
},
{
name: "Tako",
password: "t"
}
]
for (let i = 0; i < datas.length; i++ ) {
tako.insertRow("members", i, {
"name": datas[i].name,
"password": datas[i].password
});
}
/** Get **/
const rows: number = tako.getRows("members"); // 2 (Amex..., Tako...)
const columns: number = tako.getColumns("members"); // 3 (id, name, password)
// Add Last Row
tako.insertRow("members", rows + 1, {
"name": "Octo",
"password": "o"
});
await tako.update() // Patch
const MemberList: {
id: number[],
name: string[],
password: string[]
} = tako.getTable("members"); // from Table
for(let i = 0; i < MemberList.id.length; i++) {
console.log(`${MemberList.id[i]}: ${MemberList.name[i]} ${MemberList.password[i]}`);
}
const NameList: string[] = tako.getCol("members", "name"); // from Column in Table
NameList.forEach(name => {
console.log(`${name}`);
/*
** Amex
** Tako
** Octo
**/
})
const firstUser: string | null = tako.getSearchRow("members", "id", 0); // Search by row value from column in Table
console.log(firstUser ?? firstUser); // Amex
// Delete
tako.deleteColumn("members", "password");
await tako.update(); // Update KV
const MemberList2: {
id: number[],
name: string[],
} = tako.getTable("members");
// MemberList2.id.length : Rows num
for(let i = 0; i < MemberList2.id.length; i++) {
console.log(`${MemberList2.id[i]}: ${MemberList2.name[i]}`);
/*
** 0: Amex
** 1: Tako
** 2: Octo
**/
}
const rows2: number = tako.getRows("members"); // 3 (Amex..., Tako..., Octo...)
tako.deleteRow("members", rows2 - 1); // delete Octo's Row
await tako.update(); // Update KV
const MemberList3: {
id: number[],
name: string[],
} = tako.getTable("members");
for(let i = 0; i < MemberList3.id.length; i++) {
console.log(`${MemberList3.id[i]}: ${MemberList3.name[i]}`);
/*
** 0: Amex
** 1: Tako
**/
}
tako.deleteTable("members"); // delete Table
await tako.update(); // Update KV
console.log(tako.getTable("members")); // null
id | name | password |
---|---|---|
0 | Amex | a |
1 | Tako | t |
2 | Octo | o |