Skip to content
File

Blob: src/node/sqlite.ts

typescript120 lines
1// Copyright (c) 2026 Cloudflare, Inc.
2// Licensed under the Apache 2.0 license found in the LICENSE file or at:
3// https://opensource.org/licenses/Apache-2.0
4 
5import { default as sqliteUtil } from 'node-internal:sqlite';
6import type sqlite from 'node:sqlite';
7 
8const {
9 DatabaseSync,
10 StatementSync,
11 SQLITE_CHANGESET_OMIT,
12 SQLITE_CHANGESET_REPLACE,
13 SQLITE_CHANGESET_ABORT,
14 SQLITE_CHANGESET_DATA,
15 SQLITE_CHANGESET_NOTFOUND,
16 SQLITE_CHANGESET_CONFLICT,
17 SQLITE_CHANGESET_CONSTRAINT,
18 SQLITE_CHANGESET_FOREIGN_KEY,
19} = sqliteUtil;
20 
21export const backup = sqliteUtil.backup.bind(sqliteUtil);
22 
23// SQLite authorization action codes (from sqlite3.h)
24const SQLITE_OK = 0;
25const SQLITE_DENY = 1;
26const SQLITE_IGNORE = 2;
27const SQLITE_CREATE_INDEX = 1;
28const SQLITE_CREATE_TABLE = 2;
29const SQLITE_CREATE_TEMP_INDEX = 3;
30const SQLITE_CREATE_TEMP_TABLE = 4;
31const SQLITE_CREATE_TEMP_TRIGGER = 5;
32const SQLITE_CREATE_TEMP_VIEW = 6;
33const SQLITE_CREATE_TRIGGER = 7;
34const SQLITE_CREATE_VIEW = 8;
35const SQLITE_DELETE = 9;
36const SQLITE_DROP_INDEX = 10;
37const SQLITE_DROP_TABLE = 11;
38const SQLITE_DROP_TEMP_INDEX = 12;
39const SQLITE_DROP_TEMP_TABLE = 13;
40const SQLITE_DROP_TEMP_TRIGGER = 14;
41const SQLITE_DROP_TEMP_VIEW = 15;
42const SQLITE_DROP_TRIGGER = 16;
43const SQLITE_DROP_VIEW = 17;
44const SQLITE_INSERT = 18;
45const SQLITE_PRAGMA = 19;
46const SQLITE_READ = 20;
47const SQLITE_SELECT = 21;
48const SQLITE_TRANSACTION = 22;
49const SQLITE_UPDATE = 23;
50const SQLITE_ATTACH = 24;
51const SQLITE_DETACH = 25;
52const SQLITE_ALTER_TABLE = 26;
53const SQLITE_REINDEX = 27;
54const SQLITE_ANALYZE = 28;
55const SQLITE_CREATE_VTABLE = 29;
56const SQLITE_DROP_VTABLE = 30;
57const SQLITE_FUNCTION = 31;
58const SQLITE_SAVEPOINT = 32;
59const SQLITE_COPY = 0;
60const SQLITE_RECURSIVE = 33;
61 
62export const constants: typeof sqlite.constants = {
63 SQLITE_CHANGESET_OMIT,
64 SQLITE_CHANGESET_REPLACE,
65 SQLITE_CHANGESET_ABORT,
66 SQLITE_CHANGESET_DATA,
67 SQLITE_CHANGESET_NOTFOUND,
68 SQLITE_CHANGESET_CONFLICT,
69 // @ts-expect-error TS2561 This is missing from node.js types
70 SQLITE_CHANGESET_CONSTRAINT,
71 SQLITE_CHANGESET_FOREIGN_KEY,
72 // Authorization action codes
73 SQLITE_OK,
74 SQLITE_DENY,
75 SQLITE_IGNORE,
76 SQLITE_CREATE_INDEX,
77 SQLITE_CREATE_TABLE,
78 SQLITE_CREATE_TEMP_INDEX,
79 SQLITE_CREATE_TEMP_TABLE,
80 SQLITE_CREATE_TEMP_TRIGGER,
81 SQLITE_CREATE_TEMP_VIEW,
82 SQLITE_CREATE_TRIGGER,
83 SQLITE_CREATE_VIEW,
84 SQLITE_DELETE,
85 SQLITE_DROP_INDEX,
86 SQLITE_DROP_TABLE,
87 SQLITE_DROP_TEMP_INDEX,
88 SQLITE_DROP_TEMP_TABLE,
89 SQLITE_DROP_TEMP_TRIGGER,
90 SQLITE_DROP_TEMP_VIEW,
91 SQLITE_DROP_TRIGGER,
92 SQLITE_DROP_VIEW,
93 SQLITE_INSERT,
94 SQLITE_PRAGMA,
95 SQLITE_READ,
96 SQLITE_SELECT,
97 SQLITE_TRANSACTION,
98 SQLITE_UPDATE,
99 SQLITE_ATTACH,
100 SQLITE_DETACH,
101 SQLITE_ALTER_TABLE,
102 SQLITE_REINDEX,
103 SQLITE_ANALYZE,
104 SQLITE_CREATE_VTABLE,
105 SQLITE_DROP_VTABLE,
106 SQLITE_FUNCTION,
107 SQLITE_SAVEPOINT,
108 SQLITE_COPY,
109 SQLITE_RECURSIVE,
110};
111 
112export { DatabaseSync, StatementSync };
113 
114export default {
115 DatabaseSync,
116 StatementSync,
117 constants,
118 backup,
119} satisfies typeof sqlite;