shiningSapphireLark
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Viewing readonly version of main branch: v3View latest version
// Shared task management utility export default function createTaskManager() { const KEY = new URL(import.meta.url).pathname.split("/").at(-1);
return {
async saveTasks(tasks: string[]) {
const { sqlite } = await import("https://esm.town/v/stevekrouse/sqlite");
await sqlite.execute( CREATE TABLE IF NOT EXISTS ${KEY}_tasks ( id INTEGER PRIMARY KEY AUTOINCREMENT, task TEXT NOT NULL, completed BOOLEAN DEFAULT 0, date DATE DEFAULT CURRENT_DATE ) );
for (const task of tasks) {
await sqlite.execute(
`
INSERT INTO ${KEY}_tasks (task, date)
VALUES (?, CURRENT_DATE)
`,
[task],
);
}
},
async getTasks() {
const { sqlite } = await import("https://esm.town/v/stevekrouse/sqlite");
const result = await sqlite.execute(`
SELECT task FROM ${KEY}_tasks
WHERE date = CURRENT_DATE AND completed = 0
`);
return result.rows.map(row => row.task);
},
async markTasksIncomplete() {
const { sqlite } = await import("https://esm.town/v/stevekrouse/sqlite");
await sqlite.execute(`
UPDATE ${KEY}_tasks
SET completed = 0, date = CURRENT_DATE
WHERE date < CURRENT_DATE AND completed = 0
`);
},
}; }