-
-
Notifications
You must be signed in to change notification settings - Fork 43
Expand file tree
/
Copy pathdb.ts
More file actions
104 lines (90 loc) · 2.69 KB
/
db.ts
File metadata and controls
104 lines (90 loc) · 2.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import Chance from 'chance'
import type {
NitroSQLiteConnection,
BatchQueryCommand,
} from 'react-native-nitro-sqlite'
import { open } from 'react-native-nitro-sqlite'
import {
getDatabaseQueue,
type DatabaseQueue,
} from '../../../package/src/DatabaseQueue'
const chance = new Chance()
export const TEST_DB_NAME = 'test'
export let testDb: NitroSQLiteConnection
export let testDbQueue: DatabaseQueue
export function resetTestDb() {
try {
if (testDb != null) {
testDb.close()
testDb.delete()
}
testDb = open({
name: TEST_DB_NAME,
})
testDbQueue = getDatabaseQueue(TEST_DB_NAME)
testDb.execute('DROP TABLE IF EXISTS User;')
testDb.execute(
'CREATE TABLE User ( id REAL PRIMARY KEY, name TEXT NOT NULL, age REAL, networth REAL) STRICT;',
)
} catch (e) {
console.warn('Error resetting user database', e)
}
}
export function createArrayBufferTestDb(name: string) {
// Use a dedicated database so ArrayBuffer tests do not interfere
// with the default test database used in other specs.
const db = open({ name })
db.execute('DROP TABLE IF EXISTS BlobData;')
db.execute(
'CREATE TABLE BlobData (id INTEGER PRIMARY KEY, data BLOB NOT NULL) STRICT;',
)
return db
}
const LARGE_DB_NAME = 'large'
// Copyright 2024 Oscar Franco
// Taken from "op-sqlite" example project.
// Used to demonstrate the performance of NitroSQLite.
const ROWS = 300000
export let largeDb: NitroSQLiteConnection | undefined
export function resetLargeDb() {
try {
if (largeDb != null) {
largeDb.close()
largeDb.delete()
}
largeDb = open({
name: LARGE_DB_NAME,
})
largeDb.execute(
'CREATE TABLE Test ( id INT PRIMARY KEY, v1 TEXT, v2 TEXT, v3 TEXT, v4 TEXT, v5 TEXT, v6 INT, v7 INT, v8 INT, v9 INT, v10 INT, v11 REAL, v12 REAL, v13 REAL, v14 REAL) STRICT;',
)
largeDb.execute('PRAGMA mmap_size=268435456')
const insertions: BatchQueryCommand[] = []
for (let i = 0; i < ROWS; i++) {
insertions.push({
query:
'INSERT INTO "Test" (id, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
params: [
i,
chance.name(),
chance.name(),
chance.name(),
chance.name(),
chance.name(),
chance.integer(),
chance.integer(),
chance.integer(),
chance.integer(),
chance.integer(),
chance.floating(),
chance.floating(),
chance.floating(),
chance.floating(),
],
})
}
largeDb.executeBatch(insertions)
} catch (e) {
console.warn('Error resetting user database', e)
}
}