rado 0.3.3 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +277 -277
- package/dist/define/CTE.d.ts +2 -0
- package/dist/define/CTE.js +51 -0
- package/dist/define/Cursor.d.ts +108 -0
- package/dist/define/Cursor.js +338 -0
- package/dist/define/Table.d.ts +5 -1
- package/dist/define/Table.js +5 -0
- package/dist/define/Update.d.ts +4 -0
- package/dist/define/Update.js +0 -0
- package/dist/define/query/Batch.d.ts +7 -0
- package/dist/define/query/Batch.js +17 -0
- package/dist/define/query/CreateTable.d.ts +6 -0
- package/dist/define/query/CreateTable.js +11 -0
- package/dist/define/query/Delete.d.ts +11 -0
- package/dist/define/query/Delete.js +18 -0
- package/dist/define/query/Insert.d.ts +22 -0
- package/dist/define/query/Insert.js +47 -0
- package/dist/define/query/Select.d.ts +39 -0
- package/dist/define/query/Select.js +170 -0
- package/dist/define/query/TableSelect.d.ts +28 -0
- package/dist/define/query/TableSelect.js +79 -0
- package/dist/define/query/Union.d.ts +17 -0
- package/dist/define/query/Union.js +116 -0
- package/dist/define/query/Update.d.ts +12 -0
- package/dist/define/query/Update.js +18 -0
- package/dist/deno/driver/better-sqlite3.js +57 -0
- package/dist/deno/driver/bun-sqlite.js +69 -0
- package/dist/deno/driver/sql.js.js +72 -0
- package/dist/deno/driver/sqlite3.js +123 -0
- package/dist/deno/index.js +14 -0
- package/dist/deno/lib/Driver.js +330 -0
- package/dist/deno/lib/Formatter.js +715 -0
- package/dist/deno/lib/Sanitizer.js +0 -0
- package/dist/deno/lib/SqlError.js +11 -0
- package/dist/deno/lib/Statement.js +108 -0
- package/dist/deno/sqlite/SqliteFormatter.js +70 -0
- package/dist/deno/sqlite/SqliteFunctions.js +150 -0
- package/dist/deno/sqlite/SqliteSchema.js +47 -0
- package/dist/deno/sqlite.js +3 -0
- package/dist/deno/util/Callable.js +15 -0
- package/dist/lib/Formatter.js +17 -3
- package/dist/sqlite/index.d.ts +2 -0
- package/dist/sqlite/index.js +3 -0
- package/dist/src/driver/better-sqlite3.js +49 -0
- package/dist/src/driver/sql.js.js +66 -0
- package/dist/src/driver/sqlite3.js +87 -0
- package/dist/src/index.js +24 -0
- package/dist/src/lib/Column.js +63 -0
- package/dist/src/lib/Cursor.js +231 -0
- package/dist/src/lib/Driver.js +316 -0
- package/dist/src/lib/Expr.js +284 -0
- package/dist/src/lib/Fields.js +0 -0
- package/dist/src/lib/Formatter.js +625 -0
- package/dist/src/lib/Functions.js +11 -0
- package/dist/src/lib/Id.js +0 -0
- package/dist/src/lib/Index.js +20 -0
- package/dist/src/lib/Ops.js +45 -0
- package/dist/src/lib/OrderBy.js +9 -0
- package/dist/src/lib/Param.js +27 -0
- package/dist/src/lib/Query.js +74 -0
- package/dist/src/lib/Sanitizer.js +0 -0
- package/dist/src/lib/Schema.js +67 -0
- package/dist/src/lib/Selection.js +7 -0
- package/dist/src/lib/Statement.js +103 -0
- package/dist/src/lib/Table.js +130 -0
- package/dist/src/lib/Target.js +37 -0
- package/dist/src/lib/Update.js +0 -0
- package/dist/src/sqlite/SqliteFormatter.js +67 -0
- package/dist/src/sqlite/SqliteFunctions.js +146 -0
- package/dist/src/sqlite/SqliteSchema.js +47 -0
- package/dist/src/sqlite.js +3 -0
- package/dist/test/DbSuite.js +28 -0
- package/dist/test/TSTestTypes.js +6 -0
- package/dist/test/TestBasic.js +172 -0
- package/dist/test/TestExtend.js +68 -0
- package/dist/test/TestFts5.js +34 -0
- package/dist/test/TestFunctions.js +28 -0
- package/dist/test/TestJoins.js +34 -0
- package/dist/test/TestJson.js +33 -0
- package/dist/test/TestPrepare.js +27 -0
- package/dist/test/TestRawSql.js +31 -0
- package/dist/test/TestSchema.js +69 -0
- package/dist/test/TestSubQueries.js +79 -0
- package/dist/test/TestTransaction.js +54 -0
- package/dist/test/TestUpdate.js +95 -0
- package/dist/test/index.js +14 -0
- package/package.json +74 -74
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// test/TestTransaction.ts
|
|
2
|
+
import { test } from "uvu";
|
|
3
|
+
import * as assert from "uvu/assert";
|
|
4
|
+
import { column, table } from "../src/index.js";
|
|
5
|
+
import { connect } from "./DbSuite.js";
|
|
6
|
+
var User = table({
|
|
7
|
+
name: "User",
|
|
8
|
+
columns: {
|
|
9
|
+
id: column.integer().primaryKey(),
|
|
10
|
+
name: column.string()
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
test("Transaction", async () => {
|
|
14
|
+
const query = await connect();
|
|
15
|
+
const [_, bob] = await Promise.all([
|
|
16
|
+
query.transaction(async function(query2) {
|
|
17
|
+
await query2(User.createTable());
|
|
18
|
+
await query2(User.insertOne({ name: "Alice" }));
|
|
19
|
+
await query2(User.insertOne({ name: "Bob" }));
|
|
20
|
+
}),
|
|
21
|
+
query(User.first().where(User.name.is("Bob")))
|
|
22
|
+
]);
|
|
23
|
+
assert.equal(bob?.name, "Bob");
|
|
24
|
+
});
|
|
25
|
+
test("Rollback", async () => {
|
|
26
|
+
const query = await connect();
|
|
27
|
+
await query(User.createTable());
|
|
28
|
+
await query.transaction(async function(query2) {
|
|
29
|
+
await query2(User.insertOne({ name: "Bob" }));
|
|
30
|
+
throw new Error("Rollback");
|
|
31
|
+
}).catch(() => {
|
|
32
|
+
});
|
|
33
|
+
const bob = await query(User.first().where(User.name.is("Bob")));
|
|
34
|
+
assert.is(bob, void 0);
|
|
35
|
+
});
|
|
36
|
+
test("Savepoints", async () => {
|
|
37
|
+
const query = await connect();
|
|
38
|
+
await query(User.createTable());
|
|
39
|
+
await query.transaction(async function(query2) {
|
|
40
|
+
await query2(User.insertOne({ name: "Bob" }));
|
|
41
|
+
await query2.transaction(async function(query3) {
|
|
42
|
+
await query3(User.insertOne({ name: "Ted" }));
|
|
43
|
+
throw new Error("Rollback");
|
|
44
|
+
}).catch(() => {
|
|
45
|
+
});
|
|
46
|
+
await query2(User.insertOne({ name: "Alice" }));
|
|
47
|
+
});
|
|
48
|
+
const users = await query(User);
|
|
49
|
+
assert.equal(users, [
|
|
50
|
+
{ id: 1, name: "Bob" },
|
|
51
|
+
{ id: 2, name: "Alice" }
|
|
52
|
+
]);
|
|
53
|
+
});
|
|
54
|
+
test.run();
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// test/TestUpdate.ts
|
|
2
|
+
import { test } from "uvu";
|
|
3
|
+
import * as assert from "uvu/assert";
|
|
4
|
+
import { column, table } from "../src/index.js";
|
|
5
|
+
import { connect } from "./DbSuite.js";
|
|
6
|
+
var User = table({
|
|
7
|
+
name: "user",
|
|
8
|
+
columns: {
|
|
9
|
+
id: column.integer().primaryKey(),
|
|
10
|
+
name: column.object(),
|
|
11
|
+
email: column.string().nullable(),
|
|
12
|
+
roles: column.array().nullable()
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
test("Update", async () => {
|
|
16
|
+
const query = await connect();
|
|
17
|
+
await query(User.createTable());
|
|
18
|
+
const user = await query(
|
|
19
|
+
User.insertOne({
|
|
20
|
+
name: {
|
|
21
|
+
given: "abc",
|
|
22
|
+
last: "test"
|
|
23
|
+
}
|
|
24
|
+
})
|
|
25
|
+
);
|
|
26
|
+
const res = await query(
|
|
27
|
+
User.set({
|
|
28
|
+
email: "test"
|
|
29
|
+
}).where(User.id.is(user.id))
|
|
30
|
+
);
|
|
31
|
+
assert.is(res.rowsAffected, 1);
|
|
32
|
+
assert.is((await query(User.first())).email, "test");
|
|
33
|
+
const res2 = await query(
|
|
34
|
+
User.set({
|
|
35
|
+
email: User.email.concat("@example.com")
|
|
36
|
+
}).where(User.id.is(user.id))
|
|
37
|
+
);
|
|
38
|
+
assert.is(res2.rowsAffected, 1);
|
|
39
|
+
assert.is((await query(User.first())).email, "test@example.com");
|
|
40
|
+
const res3 = await query(
|
|
41
|
+
User.set({
|
|
42
|
+
name: {
|
|
43
|
+
given: "def",
|
|
44
|
+
last: "okay"
|
|
45
|
+
}
|
|
46
|
+
}).where(User.id.is(user.id))
|
|
47
|
+
);
|
|
48
|
+
assert.is(res3.rowsAffected, 1);
|
|
49
|
+
assert.is((await query(User.first())).name.given, "def");
|
|
50
|
+
});
|
|
51
|
+
test("Update object", async () => {
|
|
52
|
+
const query = await connect();
|
|
53
|
+
await query(User.createTable());
|
|
54
|
+
const user = await query(
|
|
55
|
+
User.insertOne({
|
|
56
|
+
name: {
|
|
57
|
+
given: "abc",
|
|
58
|
+
last: "test"
|
|
59
|
+
}
|
|
60
|
+
})
|
|
61
|
+
);
|
|
62
|
+
const res = await query(
|
|
63
|
+
User.set({
|
|
64
|
+
name: {
|
|
65
|
+
given: "123",
|
|
66
|
+
last: "456"
|
|
67
|
+
}
|
|
68
|
+
}).where(User.id.is(user.id))
|
|
69
|
+
);
|
|
70
|
+
assert.is(res.rowsAffected, 1);
|
|
71
|
+
const user2 = await query(User.where(User.id.is(user.id)).first());
|
|
72
|
+
assert.is(user2.name.given, "123");
|
|
73
|
+
assert.is(user2.name.last, "456");
|
|
74
|
+
});
|
|
75
|
+
test("Update array", async () => {
|
|
76
|
+
const query = await connect();
|
|
77
|
+
await query(User.createTable());
|
|
78
|
+
const user = await query(
|
|
79
|
+
User.insertOne({
|
|
80
|
+
name: {
|
|
81
|
+
given: "abc",
|
|
82
|
+
last: "test"
|
|
83
|
+
}
|
|
84
|
+
})
|
|
85
|
+
);
|
|
86
|
+
const res = await query(
|
|
87
|
+
User.set({
|
|
88
|
+
roles: ["a", "b"]
|
|
89
|
+
}).where(User.id.is(user.id))
|
|
90
|
+
);
|
|
91
|
+
assert.is(res.rowsAffected, 1);
|
|
92
|
+
const user2 = await query(User.first().where(User.id.is(user.id)));
|
|
93
|
+
assert.equal(user2.roles, ["a", "b"]);
|
|
94
|
+
});
|
|
95
|
+
test.run();
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// test/index.ts
|
|
2
|
+
import sade from "sade";
|
|
3
|
+
import { parse } from "uvu/parse";
|
|
4
|
+
import { run } from "uvu/run";
|
|
5
|
+
sade("test [pattern]", true).option("--driver", "Pick driver").action((pattern, opts) => {
|
|
6
|
+
process.env.TEST_DRIVER = opts.driver || "better-sqlite3";
|
|
7
|
+
parse("test", "Test*").then(
|
|
8
|
+
({ suites }) => run(
|
|
9
|
+
suites.filter(
|
|
10
|
+
({ name }) => pattern ? name.toLowerCase().includes(pattern) : name.startsWith("Test")
|
|
11
|
+
)
|
|
12
|
+
)
|
|
13
|
+
);
|
|
14
|
+
}).parse(process.argv);
|
package/package.json
CHANGED
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "rado",
|
|
3
|
-
"version": "0.3.
|
|
4
|
-
"license": "MIT",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "./dist/index.js",
|
|
7
|
-
"types": "./dist/index.d.ts",
|
|
8
|
-
"exports": {
|
|
9
|
-
".": "./dist/index.js",
|
|
10
|
-
"./*": "./dist/*.js",
|
|
11
|
-
"./driver/bun:sqlite": "./dist/driver/bun-sqlite.js"
|
|
12
|
-
},
|
|
13
|
-
"typesVersions": {
|
|
14
|
-
"*": {
|
|
15
|
-
"driver/*": [
|
|
16
|
-
"dist/driver/*.d.ts"
|
|
17
|
-
],
|
|
18
|
-
"lib/*": [
|
|
19
|
-
"dist/lib/*.d.ts"
|
|
20
|
-
],
|
|
21
|
-
"driver/bun:sqlite": [
|
|
22
|
-
"dist/driver/bun-sqlite.d.ts"
|
|
23
|
-
],
|
|
24
|
-
"define/*": [
|
|
25
|
-
"dist/define/*.d.ts"
|
|
26
|
-
],
|
|
27
|
-
"sqlite/*": [
|
|
28
|
-
"dist/sqlite/*.d.ts"
|
|
29
|
-
],
|
|
30
|
-
"sqlite": [
|
|
31
|
-
"dist/sqlite.d.ts"
|
|
32
|
-
],
|
|
33
|
-
"util/*": [
|
|
34
|
-
"dist/util/*.d.ts"
|
|
35
|
-
]
|
|
36
|
-
}
|
|
37
|
-
},
|
|
38
|
-
"files": [
|
|
39
|
-
"dist"
|
|
40
|
-
],
|
|
41
|
-
"sideEffects": false,
|
|
42
|
-
"scripts": {
|
|
43
|
-
"build": "tsc -p tsconfig.build.json && tsx build.ts",
|
|
44
|
-
"test": "tsx test",
|
|
45
|
-
"test:bun": "bun test/index.ts --driver=bun:sqlite",
|
|
46
|
-
"profile": "cross-env PROFILE=true tsx build.ts && cd bin && (rimraf CPU*.cpuprofile || true) && node --cpu-prof --cpu-prof-interval=100 test && speedscope CPU*.cpuprofile",
|
|
47
|
-
"prepublishOnly": "tsc -p tsconfig.build.json && tsx build.ts"
|
|
48
|
-
},
|
|
49
|
-
"devDependencies": {
|
|
50
|
-
"@types/better-sqlite3": "^5.4.1",
|
|
51
|
-
"@types/glob": "^8.0.0",
|
|
52
|
-
"@types/sql.js": "^1.4.2",
|
|
53
|
-
"better-sqlite3": "^7.5.1",
|
|
54
|
-
"bun-types": "^0.5.0",
|
|
55
|
-
"cross-env": "^7.0.3",
|
|
56
|
-
"esbuild": "^0.17.10",
|
|
57
|
-
"glob": "^8.0.3",
|
|
58
|
-
"rimraf": "^4.1.2",
|
|
59
|
-
"sade": "^1.8.1",
|
|
60
|
-
"speedscope": "^1.15.0",
|
|
61
|
-
"sql.js": "^1.8.0",
|
|
62
|
-
"sqlite3": "^5.1.6",
|
|
63
|
-
"tsx": "^3.12.3",
|
|
64
|
-
"typescript": "beta",
|
|
65
|
-
"uvu": "^0.5.6"
|
|
66
|
-
},
|
|
67
|
-
"volta": {
|
|
68
|
-
"node": "18.12.1"
|
|
69
|
-
},
|
|
70
|
-
"packageManager": "yarn@3.3.1",
|
|
71
|
-
"resolutions": {
|
|
72
|
-
"esbuild": "0.17.10"
|
|
73
|
-
}
|
|
74
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "rado",
|
|
3
|
+
"version": "0.3.4",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": "./dist/index.js",
|
|
10
|
+
"./*": "./dist/*.js",
|
|
11
|
+
"./driver/bun:sqlite": "./dist/driver/bun-sqlite.js"
|
|
12
|
+
},
|
|
13
|
+
"typesVersions": {
|
|
14
|
+
"*": {
|
|
15
|
+
"driver/*": [
|
|
16
|
+
"dist/driver/*.d.ts"
|
|
17
|
+
],
|
|
18
|
+
"lib/*": [
|
|
19
|
+
"dist/lib/*.d.ts"
|
|
20
|
+
],
|
|
21
|
+
"driver/bun:sqlite": [
|
|
22
|
+
"dist/driver/bun-sqlite.d.ts"
|
|
23
|
+
],
|
|
24
|
+
"define/*": [
|
|
25
|
+
"dist/define/*.d.ts"
|
|
26
|
+
],
|
|
27
|
+
"sqlite/*": [
|
|
28
|
+
"dist/sqlite/*.d.ts"
|
|
29
|
+
],
|
|
30
|
+
"sqlite": [
|
|
31
|
+
"dist/sqlite.d.ts"
|
|
32
|
+
],
|
|
33
|
+
"util/*": [
|
|
34
|
+
"dist/util/*.d.ts"
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"files": [
|
|
39
|
+
"dist"
|
|
40
|
+
],
|
|
41
|
+
"sideEffects": false,
|
|
42
|
+
"scripts": {
|
|
43
|
+
"build": "tsc -p tsconfig.build.json && tsx build.ts",
|
|
44
|
+
"test": "tsx test",
|
|
45
|
+
"test:bun": "bun test/index.ts --driver=bun:sqlite",
|
|
46
|
+
"profile": "cross-env PROFILE=true tsx build.ts && cd bin && (rimraf CPU*.cpuprofile || true) && node --cpu-prof --cpu-prof-interval=100 test && speedscope CPU*.cpuprofile",
|
|
47
|
+
"prepublishOnly": "tsc -p tsconfig.build.json && tsx build.ts"
|
|
48
|
+
},
|
|
49
|
+
"devDependencies": {
|
|
50
|
+
"@types/better-sqlite3": "^5.4.1",
|
|
51
|
+
"@types/glob": "^8.0.0",
|
|
52
|
+
"@types/sql.js": "^1.4.2",
|
|
53
|
+
"better-sqlite3": "^7.5.1",
|
|
54
|
+
"bun-types": "^0.5.0",
|
|
55
|
+
"cross-env": "^7.0.3",
|
|
56
|
+
"esbuild": "^0.17.10",
|
|
57
|
+
"glob": "^8.0.3",
|
|
58
|
+
"rimraf": "^4.1.2",
|
|
59
|
+
"sade": "^1.8.1",
|
|
60
|
+
"speedscope": "^1.15.0",
|
|
61
|
+
"sql.js": "^1.8.0",
|
|
62
|
+
"sqlite3": "^5.1.6",
|
|
63
|
+
"tsx": "^3.12.3",
|
|
64
|
+
"typescript": "beta",
|
|
65
|
+
"uvu": "^0.5.6"
|
|
66
|
+
},
|
|
67
|
+
"volta": {
|
|
68
|
+
"node": "18.12.1"
|
|
69
|
+
},
|
|
70
|
+
"packageManager": "yarn@3.3.1",
|
|
71
|
+
"resolutions": {
|
|
72
|
+
"esbuild": "0.17.10"
|
|
73
|
+
}
|
|
74
|
+
}
|