I'm not particularly proud of this code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import createClient from "https://esm.town/v/stevekrouse/val_town_client";
const client = createClient();
// from https://www.val.town/v/pomdtr/valTownToSQLite
import { bulk, raw, sql } from "https://esm.town/v/pomdtr/sql";
import type { SqliteInterface } from "https://esm.town/v/postpostscript/sqliteTypes";
import { sqlite } from "https://esm.town/v/std/sqlite?v=4";
const createQuery = `CREATE TABLE IF NOT EXISTS all_my_vals (
id TEXT PRIMARY KEY,
name TEXT,
code TEXT,
version NUMBER,
privacy TEXT,
public INTEGER,
run_start_at TEXT,
run_end_at TEXT,
created_at TEXT
);`;
function valToRow(val) {
return [
val.id,
val.name,
val.code,
val.version,
val.privacy,
val.public,
val.createdAt,
val.runEndAt,
val.runStartAt,
];
}
async function insertRows(rows) {
const query =
sql`INSERT OR REPLACE INTO all_my_vals (id, name, code, version, privacy, public, run_start_at, run_end_at, created_at) VALUES ${
bulk(rows)
}`;
await sqlite.execute(query);
}
await sqlite.execute(createQuery);
let vals = [];
let error;
let page = 0;
while ((page === 0 || vals.length) && page < 100 && !error) {
const response = await client.GET("/v1/users/{user_id}/vals", {
params: {
path: { user_id: "a0bf3b31-15a5-4d5c-880e-4b1e22c9bc18" },
query: {
limit: 100,
offset: 100 * page++,
},
},
});
vals = response.data.data;
error = response.error;
console.log(page);
let rows = vals.map(valToRow);
if (rows.length) await insertRows(rows);
}
1
Next