Offload functions to worker threads with shared memory primitives for Node.js.
8
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 39 lines 1.4 kB view raw
1import { DatabaseSync } from 'node:sqlite'; 2import { mo } from '../../src/index.ts'; 3 4export const openDb = mo(import.meta, (filename: string): DatabaseSync => { 5 const db = new DatabaseSync(filename); 6 db.exec(` 7 CREATE TABLE IF NOT EXISTS users ( 8 id INTEGER PRIMARY KEY AUTOINCREMENT, 9 name TEXT NOT NULL, 10 email TEXT NOT NULL 11 ) 12 `); 13 return db; 14}); 15 16export const insertUser = mo(import.meta, (db: DatabaseSync, name: string, email: string): number => { 17 const stmt = db.prepare('INSERT INTO users (name, email) VALUES (?, ?)'); 18 const result = stmt.run(name, email); 19 return Number(result.lastInsertRowid); 20}); 21 22export const getUser = mo( 23 import.meta, 24 (db: DatabaseSync, id: number): { id: number; name: string; email: string } | undefined => { 25 const stmt = db.prepare('SELECT id, name, email FROM users WHERE id = ?'); 26 return stmt.get(id) as { id: number; name: string; email: string } | undefined; 27 }, 28); 29 30export const listUsers = mo(import.meta, (db: DatabaseSync): { id: number; name: string; email: string }[] => { 31 const stmt = db.prepare('SELECT id, name, email FROM users'); 32 return stmt.all() as { id: number; name: string; email: string }[]; 33}); 34 35export const countUsers = mo(import.meta, (db: DatabaseSync): number => { 36 const stmt = db.prepare('SELECT COUNT(*) as count FROM users'); 37 const row = stmt.get() as { count: number }; 38 return row.count; 39});