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 ff44e2707a051f4e7e7318d59a0d0db697227bab 36 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(import.meta, (db: DatabaseSync, id: number): { id: number; name: string; email: string } | undefined => { 23 const stmt = db.prepare('SELECT id, name, email FROM users WHERE id = ?'); 24 return stmt.get(id) as { id: number; name: string; email: string } | undefined; 25}); 26 27export const listUsers = mo(import.meta, (db: DatabaseSync): { id: number; name: string; email: string }[] => { 28 const stmt = db.prepare('SELECT id, name, email FROM users'); 29 return stmt.all() as { id: number; name: string; email: string }[]; 30}); 31 32export const countUsers = mo(import.meta, (db: DatabaseSync): number => { 33 const stmt = db.prepare('SELECT COUNT(*) as count FROM users'); 34 const row = stmt.get() as { count: number }; 35 return row.count; 36});