npubweb/initialize-subscriber-table.ts

34 lines
1.1 KiB
TypeScript

import { DB } from "https://deno.land/x/sqlite/mod.ts";
import { parse } from "https://deno.land/std@0.211.0/csv/mod.ts";
async function readCSV(filepath: string) {
const fileContents = await Deno.readTextFile(filepath);
const result = await parse(fileContents, {
skipFirstRow: true,
columns: ["pubkey", "balance", "updated_at"],
});
return result;
}
function convertToUnixTimestamp(dateStr: string): number {
const date = new Date(dateStr);
return Math.floor(date.getTime() / 1000);
}
const db = new DB("pubkeys.db");
db.query(`
CREATE TABLE IF NOT EXISTS subscribers (
pubkey TEXT PRIMARY KEY,
created_at INTEGER,
balance INTEGER,
has_no_foaf INTEGER DEFAULT 0
)
`);
readCSV("subscribers.csv").then((subscribers) => {
for (const subscriber of subscribers) {
const createdAt = convertToUnixTimestamp(subscriber["updated_at"]);
db.query("INSERT OR IGNORE INTO subscribers (pubkey, balance, created_at) VALUES (?, ?, ?)", [subscriber["pubkey"], subscriber["balance"], createdAt]);
}
db.close();
});