rado 0.3.4 → 0.3.6
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/driver/better-sqlite3.d.ts +1 -0
- package/dist/driver/better-sqlite3.js +3 -0
- package/dist/driver/bun-sqlite.d.ts +1 -0
- package/dist/driver/bun-sqlite.js +3 -0
- package/dist/driver/sql.js.d.ts +1 -0
- package/dist/driver/sql.js.js +3 -0
- package/dist/driver/sqlite3.d.ts +1 -0
- package/dist/driver/sqlite3.js +11 -0
- package/dist/lib/Driver.d.ts +3 -0
- package/dist/lib/Driver.js +3 -0
- package/dist/lib/Formatter.js +2 -2
- package/package.json +74 -74
- package/dist/define/CTE.d.ts +0 -2
- package/dist/define/CTE.js +0 -51
- package/dist/define/Cursor.d.ts +0 -108
- package/dist/define/Cursor.js +0 -338
- package/dist/define/Update.d.ts +0 -4
- package/dist/define/Update.js +0 -0
- package/dist/define/query/Batch.d.ts +0 -7
- package/dist/define/query/Batch.js +0 -17
- package/dist/define/query/CreateTable.d.ts +0 -6
- package/dist/define/query/CreateTable.js +0 -11
- package/dist/define/query/Delete.d.ts +0 -11
- package/dist/define/query/Delete.js +0 -18
- package/dist/define/query/Insert.d.ts +0 -22
- package/dist/define/query/Insert.js +0 -47
- package/dist/define/query/Select.d.ts +0 -39
- package/dist/define/query/Select.js +0 -170
- package/dist/define/query/TableSelect.d.ts +0 -28
- package/dist/define/query/TableSelect.js +0 -79
- package/dist/define/query/Union.d.ts +0 -17
- package/dist/define/query/Union.js +0 -116
- package/dist/define/query/Update.d.ts +0 -12
- package/dist/define/query/Update.js +0 -18
- package/dist/deno/driver/better-sqlite3.js +0 -57
- package/dist/deno/driver/bun-sqlite.js +0 -69
- package/dist/deno/driver/sql.js.js +0 -72
- package/dist/deno/driver/sqlite3.js +0 -123
- package/dist/deno/index.js +0 -14
- package/dist/deno/lib/Driver.js +0 -330
- package/dist/deno/lib/Formatter.js +0 -715
- package/dist/deno/lib/Sanitizer.js +0 -0
- package/dist/deno/lib/SqlError.js +0 -11
- package/dist/deno/lib/Statement.js +0 -108
- package/dist/deno/sqlite/SqliteFormatter.js +0 -70
- package/dist/deno/sqlite/SqliteFunctions.js +0 -150
- package/dist/deno/sqlite/SqliteSchema.js +0 -47
- package/dist/deno/sqlite.js +0 -3
- package/dist/deno/util/Callable.js +0 -15
- package/dist/sqlite/index.d.ts +0 -2
- package/dist/sqlite/index.js +0 -3
- package/dist/src/driver/better-sqlite3.js +0 -49
- package/dist/src/driver/sql.js.js +0 -66
- package/dist/src/driver/sqlite3.js +0 -87
- package/dist/src/index.js +0 -24
- package/dist/src/lib/Column.js +0 -63
- package/dist/src/lib/Cursor.js +0 -231
- package/dist/src/lib/Driver.js +0 -316
- package/dist/src/lib/Expr.js +0 -284
- package/dist/src/lib/Fields.js +0 -0
- package/dist/src/lib/Formatter.js +0 -625
- package/dist/src/lib/Functions.js +0 -11
- package/dist/src/lib/Id.js +0 -0
- package/dist/src/lib/Index.js +0 -20
- package/dist/src/lib/Ops.js +0 -45
- package/dist/src/lib/OrderBy.js +0 -9
- package/dist/src/lib/Param.js +0 -27
- package/dist/src/lib/Query.js +0 -74
- package/dist/src/lib/Sanitizer.js +0 -0
- package/dist/src/lib/Schema.js +0 -67
- package/dist/src/lib/Selection.js +0 -7
- package/dist/src/lib/Statement.js +0 -103
- package/dist/src/lib/Table.js +0 -130
- package/dist/src/lib/Target.js +0 -37
- package/dist/src/lib/Update.js +0 -0
- package/dist/src/sqlite/SqliteFormatter.js +0 -67
- package/dist/src/sqlite/SqliteFunctions.js +0 -146
- package/dist/src/sqlite/SqliteSchema.js +0 -47
- package/dist/src/sqlite.js +0 -3
- package/dist/test/DbSuite.js +0 -28
- package/dist/test/TSTestTypes.js +0 -6
- package/dist/test/TestBasic.js +0 -172
- package/dist/test/TestExtend.js +0 -68
- package/dist/test/TestFts5.js +0 -34
- package/dist/test/TestFunctions.js +0 -28
- package/dist/test/TestJoins.js +0 -34
- package/dist/test/TestJson.js +0 -33
- package/dist/test/TestPrepare.js +0 -27
- package/dist/test/TestRawSql.js +0 -31
- package/dist/test/TestSchema.js +0 -69
- package/dist/test/TestSubQueries.js +0 -79
- package/dist/test/TestTransaction.js +0 -54
- package/dist/test/TestUpdate.js +0 -95
- package/dist/test/index.js +0 -14
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
// src/sqlite/SqliteSchema.ts
|
|
2
|
-
import { Cursor } from "../lib/Cursor.js";
|
|
3
|
-
import { Statement } from "../lib/Statement.js";
|
|
4
|
-
import { SqliteFormatter } from "./SqliteFormatter.js";
|
|
5
|
-
var SqliteSchema;
|
|
6
|
-
((SqliteSchema2) => {
|
|
7
|
-
const formatter = new SqliteFormatter();
|
|
8
|
-
function tableData(tableName) {
|
|
9
|
-
return Cursor.all`select * from pragma_table_info(${tableName}) order by cid`;
|
|
10
|
-
}
|
|
11
|
-
SqliteSchema2.tableData = tableData;
|
|
12
|
-
function indexData(tableName) {
|
|
13
|
-
return Cursor.all`select * from sqlite_master where type='index' and tbl_name=${tableName}`;
|
|
14
|
-
}
|
|
15
|
-
SqliteSchema2.indexData = indexData;
|
|
16
|
-
function createInstructions(columnData, indexData2) {
|
|
17
|
-
if (columnData.length === 0 && indexData2.length === 0)
|
|
18
|
-
return void 0;
|
|
19
|
-
const columns = columnData.map(columnInstruction);
|
|
20
|
-
const indexes = indexData2.map(indexInstruction).filter((row) => row[1]);
|
|
21
|
-
return {
|
|
22
|
-
columns: Object.fromEntries(columns),
|
|
23
|
-
indexes: Object.fromEntries(indexes)
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
SqliteSchema2.createInstructions = createInstructions;
|
|
27
|
-
function columnInstruction(column) {
|
|
28
|
-
const stmt = new Statement(formatter);
|
|
29
|
-
stmt.identifier(column.name).add(column.type);
|
|
30
|
-
if (column.pk === 1)
|
|
31
|
-
stmt.add("PRIMARY KEY");
|
|
32
|
-
if (column.notnull === 1)
|
|
33
|
-
stmt.add("NOT NULL");
|
|
34
|
-
if (column.dflt_value !== null) {
|
|
35
|
-
stmt.add("DEFAULT").space().openParenthesis().raw(column.dflt_value).closeParenthesis();
|
|
36
|
-
}
|
|
37
|
-
return [column.name, stmt.sql];
|
|
38
|
-
}
|
|
39
|
-
SqliteSchema2.columnInstruction = columnInstruction;
|
|
40
|
-
function indexInstruction(index) {
|
|
41
|
-
return [index.name, index.sql];
|
|
42
|
-
}
|
|
43
|
-
SqliteSchema2.indexInstruction = indexInstruction;
|
|
44
|
-
})(SqliteSchema || (SqliteSchema = {}));
|
|
45
|
-
export {
|
|
46
|
-
SqliteSchema
|
|
47
|
-
};
|
package/dist/src/sqlite.js
DELETED
package/dist/test/DbSuite.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
// test/DbSuite.ts
|
|
2
|
-
async function connect() {
|
|
3
|
-
switch (process.env.TEST_DRIVER) {
|
|
4
|
-
case "better-sqlite3": {
|
|
5
|
-
const { default: BetterSqlite3Database } = await import("better-sqlite3");
|
|
6
|
-
const { connect: createConnection } = await import("../src/driver/better-sqlite3.js");
|
|
7
|
-
return createConnection(new BetterSqlite3Database(":memory:")).toAsync();
|
|
8
|
-
}
|
|
9
|
-
case "sql.js": {
|
|
10
|
-
const { default: init } = await import("sql.js");
|
|
11
|
-
const { Database } = await init();
|
|
12
|
-
const { connect: createConnection } = await import("../src/driver/sql.js.js");
|
|
13
|
-
return createConnection(new Database()).toAsync();
|
|
14
|
-
}
|
|
15
|
-
case "sqlite3": {
|
|
16
|
-
const {
|
|
17
|
-
default: { Database }
|
|
18
|
-
} = await import("sqlite3");
|
|
19
|
-
const { connect: createConnection } = await import("../src/driver/sqlite3.js");
|
|
20
|
-
return createConnection(new Database(":memory:"));
|
|
21
|
-
}
|
|
22
|
-
default:
|
|
23
|
-
throw new Error(`Unknown driver ${process.env.TEST_DRIVER}`);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
export {
|
|
27
|
-
connect
|
|
28
|
-
};
|
package/dist/test/TSTestTypes.js
DELETED
package/dist/test/TestBasic.js
DELETED
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
// test/TestBasic.ts
|
|
2
|
-
import { test } from "uvu";
|
|
3
|
-
import * as assert from "uvu/assert";
|
|
4
|
-
import {
|
|
5
|
-
Expr,
|
|
6
|
-
column,
|
|
7
|
-
create,
|
|
8
|
-
insertInto,
|
|
9
|
-
selectFirst,
|
|
10
|
-
table
|
|
11
|
-
} from "../src/index.js";
|
|
12
|
-
import { connect } from "./DbSuite.js";
|
|
13
|
-
test("basic", async () => {
|
|
14
|
-
const query = await connect();
|
|
15
|
-
const Node = table({
|
|
16
|
-
name: "node",
|
|
17
|
-
columns: {
|
|
18
|
-
id: column.integer().primaryKey(),
|
|
19
|
-
index: column.number()
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
await query(create(Node));
|
|
23
|
-
const amount = 10;
|
|
24
|
-
const objects = Array.from({ length: amount }).map((_, index) => ({ index }));
|
|
25
|
-
assert.equal(objects.length, amount);
|
|
26
|
-
await query(Node.insertAll(objects));
|
|
27
|
-
assert.equal((await query(Node)).length, amount);
|
|
28
|
-
const stored = await query(Node);
|
|
29
|
-
const id = stored[amount - 1].id;
|
|
30
|
-
assert.equal(
|
|
31
|
-
(await query(
|
|
32
|
-
Node.sure().where(
|
|
33
|
-
Node.index.greaterOrEqual(amount - 1),
|
|
34
|
-
Node.index.less(amount)
|
|
35
|
-
)
|
|
36
|
-
)).id,
|
|
37
|
-
id
|
|
38
|
-
);
|
|
39
|
-
});
|
|
40
|
-
test("filters", async () => {
|
|
41
|
-
const query = await connect();
|
|
42
|
-
const Test = table({
|
|
43
|
-
name: "test",
|
|
44
|
-
columns: {
|
|
45
|
-
id: column.integer().primaryKey(),
|
|
46
|
-
prop: column.number()
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
await query(create(Test));
|
|
50
|
-
const a = { prop: 10 };
|
|
51
|
-
const b = { prop: 20 };
|
|
52
|
-
await query(Test.insertAll([a, b]));
|
|
53
|
-
const gt10 = await query.get(Test.where(Test.prop.greater(10)));
|
|
54
|
-
assert.equal(gt10.prop, 20);
|
|
55
|
-
});
|
|
56
|
-
test("select", async () => {
|
|
57
|
-
const query = await connect();
|
|
58
|
-
const Test = table({
|
|
59
|
-
name: "test",
|
|
60
|
-
columns: {
|
|
61
|
-
id: column.integer().primaryKey(),
|
|
62
|
-
propA: column.number(),
|
|
63
|
-
propB: column.number()
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
await query(create(Test));
|
|
67
|
-
const a = { propA: 10, propB: 5 };
|
|
68
|
-
const b = { propA: 20, propB: 5 };
|
|
69
|
-
await query(Test.insertAll([a, b]));
|
|
70
|
-
const res = await query(Test.select({ a: Test.propA, b: Test.propB }));
|
|
71
|
-
assert.equal(res, [
|
|
72
|
-
{ a: 10, b: 5 },
|
|
73
|
-
{ a: 20, b: 5 }
|
|
74
|
-
]);
|
|
75
|
-
const res2 = await query(
|
|
76
|
-
Test.select({
|
|
77
|
-
...Test,
|
|
78
|
-
testProp: Expr.value(123)
|
|
79
|
-
}).sure()
|
|
80
|
-
);
|
|
81
|
-
assert.is(res2.testProp, 123);
|
|
82
|
-
const res3 = await query(Test.sure().select(Expr.value("test")));
|
|
83
|
-
assert.is(res3, "test");
|
|
84
|
-
const res4 = await query(Test.sure().select(Expr.value(true)));
|
|
85
|
-
assert.is(res4, true);
|
|
86
|
-
});
|
|
87
|
-
test("update", async () => {
|
|
88
|
-
const query = await connect();
|
|
89
|
-
const Test = table({
|
|
90
|
-
name: "test",
|
|
91
|
-
columns: {
|
|
92
|
-
id: column.integer().primaryKey(),
|
|
93
|
-
propA: column.number(),
|
|
94
|
-
propB: column.number()
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
Test.id;
|
|
98
|
-
await query(Test.createTable());
|
|
99
|
-
const a = { propA: 10, propB: 5 };
|
|
100
|
-
const b = { propA: 20, propB: 5 };
|
|
101
|
-
await query(Test.insertAll([a, b]));
|
|
102
|
-
await query(Test.set({ propA: 15 }).where(Test.propA.is(10)));
|
|
103
|
-
assert.ok(await query(Test.sure().where(Test.propA.is(15))));
|
|
104
|
-
});
|
|
105
|
-
test("json", async () => {
|
|
106
|
-
const query = await connect();
|
|
107
|
-
const Test = table({
|
|
108
|
-
name: "test",
|
|
109
|
-
columns: {
|
|
110
|
-
id: column.integer().primaryKey(),
|
|
111
|
-
prop: column.number(),
|
|
112
|
-
propB: column.number()
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
await query(create(Test));
|
|
116
|
-
const a = { prop: 10, propB: 5 };
|
|
117
|
-
const b = { prop: 20, propB: 5 };
|
|
118
|
-
await query(insertInto(Test).values(a, b));
|
|
119
|
-
const q = Test.sure().select({
|
|
120
|
-
fieldA: Expr.value(12),
|
|
121
|
-
fieldB: Test.propB
|
|
122
|
-
}).where(Test.prop.is(10));
|
|
123
|
-
const res1 = await query(q);
|
|
124
|
-
assert.is(res1.fieldA, 12);
|
|
125
|
-
assert.is(res1.fieldB, 5);
|
|
126
|
-
});
|
|
127
|
-
test("each", async () => {
|
|
128
|
-
const query = await connect();
|
|
129
|
-
const a = {
|
|
130
|
-
refs: [
|
|
131
|
-
{ id: 1, type: "entry" },
|
|
132
|
-
{ id: 0, type: "nonsense" },
|
|
133
|
-
{ id: 2, type: "entry" }
|
|
134
|
-
]
|
|
135
|
-
};
|
|
136
|
-
const Test = table({
|
|
137
|
-
name: "test",
|
|
138
|
-
columns: {
|
|
139
|
-
id: column.integer().primaryKey(),
|
|
140
|
-
refs: column.array()
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
const Entry = table({
|
|
144
|
-
name: "Entry",
|
|
145
|
-
columns: {
|
|
146
|
-
id: column.integer().primaryKey(),
|
|
147
|
-
title: column.string()
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
await query(create(Test, Entry));
|
|
151
|
-
await query(insertInto(Test).values(a));
|
|
152
|
-
const res = await query(selectFirst(Test).select({ refs: Test.refs }));
|
|
153
|
-
assert.equal(res, a);
|
|
154
|
-
const b = { title: "Entry B" };
|
|
155
|
-
const c = { title: "Entry C" };
|
|
156
|
-
await query(create(Entry));
|
|
157
|
-
await query(Entry.insertAll([b, c]));
|
|
158
|
-
const Link = Entry.as("Link");
|
|
159
|
-
const tests = Test.select({
|
|
160
|
-
links: Test.refs.filter((ref) => {
|
|
161
|
-
return ref.type.is("entry");
|
|
162
|
-
}).map((ref) => {
|
|
163
|
-
return Link.fetch(ref.id).select({ id: Link.id, title: Link.title });
|
|
164
|
-
})
|
|
165
|
-
}).sure();
|
|
166
|
-
const res2 = await query(tests);
|
|
167
|
-
assert.equal(res2.links, [
|
|
168
|
-
{ id: 1, title: "Entry B" },
|
|
169
|
-
{ id: 2, title: "Entry C" }
|
|
170
|
-
]);
|
|
171
|
-
});
|
|
172
|
-
test.run();
|
package/dist/test/TestExtend.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
// test/TestExtend.ts
|
|
2
|
-
import { test } from "uvu";
|
|
3
|
-
import * as assert from "uvu/assert";
|
|
4
|
-
import { column, create, table } from "../src/index.js";
|
|
5
|
-
import { connect } from "./DbSuite.js";
|
|
6
|
-
var UserTable = table({
|
|
7
|
-
name: "user",
|
|
8
|
-
columns: {
|
|
9
|
-
id: column.integer().primaryKey(),
|
|
10
|
-
firstName: column.string(),
|
|
11
|
-
lastName: column.string()
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
var User = table.extend(UserTable, {
|
|
15
|
-
name() {
|
|
16
|
-
return this.firstName.concat(" ").concat(this.lastName);
|
|
17
|
-
},
|
|
18
|
-
roles() {
|
|
19
|
-
return Role.innerJoin(UserRoles, Role.id.is(UserRoles.roleId)).innerJoin(
|
|
20
|
-
this,
|
|
21
|
-
UserRoles.userId.is(this.id)
|
|
22
|
-
);
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
var Role = table({
|
|
26
|
-
name: "role",
|
|
27
|
-
columns: {
|
|
28
|
-
id: column.integer().primaryKey(),
|
|
29
|
-
name: column.string()
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
var UserRoles = table({
|
|
33
|
-
name: "user_roles",
|
|
34
|
-
columns: {
|
|
35
|
-
userId: column.integer().references(UserTable.id),
|
|
36
|
-
roleId: column.integer().references(Role.id)
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
test("Extend", async () => {
|
|
40
|
-
const query = await connect();
|
|
41
|
-
await query(create(Role, User, UserRoles));
|
|
42
|
-
const user1 = await query(
|
|
43
|
-
User.insertOne({
|
|
44
|
-
firstName: "a",
|
|
45
|
-
lastName: "b"
|
|
46
|
-
})
|
|
47
|
-
);
|
|
48
|
-
const role1 = await query(Role.insertOne({ name: "role1" }));
|
|
49
|
-
const role2 = await query(Role.insertOne({ name: "role2" }));
|
|
50
|
-
await query(
|
|
51
|
-
UserRoles.insertAll([
|
|
52
|
-
{ userId: user1.id, roleId: role1.id },
|
|
53
|
-
{ userId: user1.id, roleId: role2.id }
|
|
54
|
-
])
|
|
55
|
-
);
|
|
56
|
-
const { Aliased } = User.alias();
|
|
57
|
-
const user = await query(
|
|
58
|
-
Aliased.first().select({
|
|
59
|
-
name: Aliased.name(),
|
|
60
|
-
roles: Aliased.roles()
|
|
61
|
-
})
|
|
62
|
-
);
|
|
63
|
-
assert.equal(user, {
|
|
64
|
-
name: "a b",
|
|
65
|
-
roles: [role1, role2]
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
test.run();
|
package/dist/test/TestFts5.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
// test/TestFts5.ts
|
|
2
|
-
import { test } from "uvu";
|
|
3
|
-
import * as assert from "uvu/assert";
|
|
4
|
-
import { column, table } from "../src/index.js";
|
|
5
|
-
import { match } from "../src/sqlite.js";
|
|
6
|
-
import { connect } from "./DbSuite.js";
|
|
7
|
-
var Search = table({
|
|
8
|
-
name: "Search",
|
|
9
|
-
columns: {
|
|
10
|
-
name: column.string(),
|
|
11
|
-
col2: column.string().nullable()
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
test("Search", async () => {
|
|
15
|
-
if (process.env.TEST_DRIVER === "sql.js")
|
|
16
|
-
return;
|
|
17
|
-
const query = await connect();
|
|
18
|
-
await query`
|
|
19
|
-
create virtual table if not exists Search using fts5(name, col2)
|
|
20
|
-
`;
|
|
21
|
-
await query(
|
|
22
|
-
Search.insertAll([
|
|
23
|
-
{ name: "test" },
|
|
24
|
-
{ name: "hello" },
|
|
25
|
-
{ name: "world", col2: "test ok" }
|
|
26
|
-
])
|
|
27
|
-
);
|
|
28
|
-
const results = await query(Search.where(match(Search, "test")));
|
|
29
|
-
assert.equal(
|
|
30
|
-
results.map((res) => res.name),
|
|
31
|
-
["test", "world"]
|
|
32
|
-
);
|
|
33
|
-
});
|
|
34
|
-
test.run();
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
// test/TestFunctions.ts
|
|
2
|
-
import { test } from "uvu";
|
|
3
|
-
import * as assert from "uvu/assert";
|
|
4
|
-
import { column, table } from "../src/index.js";
|
|
5
|
-
import { cast, strftime } from "../src/sqlite.js";
|
|
6
|
-
import { connect } from "./DbSuite.js";
|
|
7
|
-
test("Functions", async () => {
|
|
8
|
-
const query = await connect();
|
|
9
|
-
const User = table({
|
|
10
|
-
name: "User",
|
|
11
|
-
columns: {
|
|
12
|
-
id: column.integer().primaryKey(),
|
|
13
|
-
birthdate: column.string()
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
await query(User.createTable());
|
|
17
|
-
const now = "1920-01-01";
|
|
18
|
-
const int = (e) => cast(e, "integer");
|
|
19
|
-
const age = int(strftime("%Y", now)).substract(int(strftime("%Y", User.birthdate))).substract(
|
|
20
|
-
int(strftime("%m-%d", now).less(strftime("%m-%d", User.birthdate)))
|
|
21
|
-
);
|
|
22
|
-
const me = await query(User.insertOne({ birthdate: "1900-01-01" }));
|
|
23
|
-
assert.is(
|
|
24
|
-
(await query(User.sure().select({ age }).where(User.id.is(me.id)))).age,
|
|
25
|
-
20
|
|
26
|
-
);
|
|
27
|
-
});
|
|
28
|
-
test.run();
|
package/dist/test/TestJoins.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
// test/TestJoins.ts
|
|
2
|
-
import { test } from "uvu";
|
|
3
|
-
import * as assert from "uvu/assert";
|
|
4
|
-
import { column, create, 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
|
-
var Contact = table({
|
|
14
|
-
name: "Contact",
|
|
15
|
-
columns: {
|
|
16
|
-
id: column.integer().primaryKey(),
|
|
17
|
-
user: column.integer()
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
test("OrderBy", async () => {
|
|
21
|
-
const query = await connect();
|
|
22
|
-
await query.transaction(async (query2) => {
|
|
23
|
-
await query2(create(User, Contact));
|
|
24
|
-
const user1 = await query2(User.insertOne({ name: "b" }));
|
|
25
|
-
const user2 = await query2(User.insertOne({ name: "a" }));
|
|
26
|
-
await query2(Contact.insertAll([{ user: user1.id }, { user: user2.id }]));
|
|
27
|
-
});
|
|
28
|
-
const results = await query(
|
|
29
|
-
Contact.leftJoin(User, User.id.is(Contact.user)).select({ ...Contact, user: User }).orderBy(User.name)
|
|
30
|
-
);
|
|
31
|
-
assert.is(results[0].user.name, "a");
|
|
32
|
-
assert.is(results[1].user.name, "b");
|
|
33
|
-
});
|
|
34
|
-
test.run();
|
package/dist/test/TestJson.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
// test/TestJson.ts
|
|
2
|
-
import { test } from "uvu";
|
|
3
|
-
import * as assert from "uvu/assert";
|
|
4
|
-
import { Cursor, Expr, column, table } from "../src/index.js";
|
|
5
|
-
import { connect } from "./DbSuite.js";
|
|
6
|
-
var Node = table({
|
|
7
|
-
name: "node",
|
|
8
|
-
columns: {
|
|
9
|
-
id: column.integer().primaryKey(),
|
|
10
|
-
index: column.integer()
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
test("json", async () => {
|
|
14
|
-
const query = await connect();
|
|
15
|
-
await query(Node.createTable());
|
|
16
|
-
const amount = 10;
|
|
17
|
-
const objects = Array.from({ length: amount }).map((_, i) => ({ index: i }));
|
|
18
|
-
assert.is(objects.length, amount);
|
|
19
|
-
await query(Node.insertAll(objects));
|
|
20
|
-
const count = await query(Node.count());
|
|
21
|
-
assert.is(count, amount);
|
|
22
|
-
const q = Node.first().select({
|
|
23
|
-
fieldA: Expr.value(12),
|
|
24
|
-
fieldB: Node.index
|
|
25
|
-
}).where(Node.index.is(1));
|
|
26
|
-
const res1 = await query(q);
|
|
27
|
-
assert.is(res1.fieldA, 12);
|
|
28
|
-
assert.is(res1.fieldB, 1);
|
|
29
|
-
const res2 = await query(new Cursor(q.toJSON()));
|
|
30
|
-
assert.is(res2.fieldA, 12);
|
|
31
|
-
assert.is(res2.fieldB, 1);
|
|
32
|
-
});
|
|
33
|
-
test.run();
|
package/dist/test/TestPrepare.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
// test/TestPrepare.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 Node = table({
|
|
7
|
-
name: "node",
|
|
8
|
-
columns: {
|
|
9
|
-
id: column.integer().primaryKey(),
|
|
10
|
-
index: column.integer()
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
test("prepare", async () => {
|
|
14
|
-
const query = await connect();
|
|
15
|
-
await query(Node.createTable());
|
|
16
|
-
const amount = 10;
|
|
17
|
-
const objects = Array.from({ length: amount }).map((_, i) => ({ index: i }));
|
|
18
|
-
const insert = query.prepare((index) => {
|
|
19
|
-
return Node.insertAll([{ index }]);
|
|
20
|
-
});
|
|
21
|
-
for (const object of objects) {
|
|
22
|
-
await insert(object.index);
|
|
23
|
-
}
|
|
24
|
-
const total = await query(Node.count());
|
|
25
|
-
assert.is(amount, total);
|
|
26
|
-
});
|
|
27
|
-
test.run();
|
package/dist/test/TestRawSql.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
// test/TestRawSql.ts
|
|
2
|
-
import { test } from "uvu";
|
|
3
|
-
import * as assert from "uvu/assert";
|
|
4
|
-
import { connect } from "./DbSuite.js";
|
|
5
|
-
var query = await connect();
|
|
6
|
-
var valueWithQuotes = `test"t'est`;
|
|
7
|
-
test("Get row", async () => {
|
|
8
|
-
assert.equal(await query.get`select ${valueWithQuotes} as res`, {
|
|
9
|
-
res: valueWithQuotes
|
|
10
|
-
});
|
|
11
|
-
});
|
|
12
|
-
test("Get rows", async () => {
|
|
13
|
-
assert.equal(
|
|
14
|
-
await query.all`
|
|
15
|
-
with recursive
|
|
16
|
-
cnt(x) as (values(${1}) union all select x+${1} from cnt where x<3)
|
|
17
|
-
select x from cnt;
|
|
18
|
-
`,
|
|
19
|
-
[{ x: 1 }, { x: 2 }, { x: 3 }]
|
|
20
|
-
);
|
|
21
|
-
});
|
|
22
|
-
test("Execute", async () => {
|
|
23
|
-
await query(
|
|
24
|
-
query.sql`create table test (id integer primary key, name text)`,
|
|
25
|
-
query.sql`insert into test (name) values (${valueWithQuotes})`
|
|
26
|
-
);
|
|
27
|
-
assert.equal(await query.all`select * from test`, [
|
|
28
|
-
{ id: 1, name: valueWithQuotes }
|
|
29
|
-
]);
|
|
30
|
-
});
|
|
31
|
-
test.run();
|
package/dist/test/TestSchema.js
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
// test/TestSchema.ts
|
|
2
|
-
import { test } from "uvu";
|
|
3
|
-
import * as assert from "uvu/assert";
|
|
4
|
-
import { column, index, table } from "../src/index.js";
|
|
5
|
-
import { datetime } from "../src/sqlite.js";
|
|
6
|
-
import { connect } from "./DbSuite.js";
|
|
7
|
-
var columns = {
|
|
8
|
-
id: column.integer().primaryKey(),
|
|
9
|
-
index: column.integer(),
|
|
10
|
-
bool: column.boolean(),
|
|
11
|
-
string: column.string(),
|
|
12
|
-
number: column.number(),
|
|
13
|
-
array: column.array(),
|
|
14
|
-
object: column.object(),
|
|
15
|
-
nullableCol: column.string().nullable(),
|
|
16
|
-
defaultString: column.string().defaultValue("'with quotes'"),
|
|
17
|
-
defaultNumber: column.number().defaultValue(123),
|
|
18
|
-
defaultBoolean: column.boolean().defaultValue(true),
|
|
19
|
-
defaultBoolean2: column.boolean().defaultValue(false),
|
|
20
|
-
defaultFloat: column.number().defaultValue(1.23),
|
|
21
|
-
defaultArray: column.array().defaultValue([1, 2, 3]),
|
|
22
|
-
defaultObject: column.object().defaultValue({ a: 1, b: 2, c: 3 }),
|
|
23
|
-
createdAt: column.string().defaultValue(datetime("now", "localtime"))
|
|
24
|
-
};
|
|
25
|
-
var TestTable = table({
|
|
26
|
-
name: "test",
|
|
27
|
-
columns
|
|
28
|
-
});
|
|
29
|
-
var query = await connect();
|
|
30
|
-
test("Create table", async () => {
|
|
31
|
-
await query(TestTable.createTable());
|
|
32
|
-
});
|
|
33
|
-
test("Add col", async () => {
|
|
34
|
-
const createdAt = column.string().defaultValue(datetime("now", "localtime"));
|
|
35
|
-
const Start = table({
|
|
36
|
-
name: "test",
|
|
37
|
-
columns: {
|
|
38
|
-
id: column.integer().primaryKey(),
|
|
39
|
-
createdAt,
|
|
40
|
-
text: column.string()
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
await query(Start.createTable());
|
|
44
|
-
const AddCol = table({
|
|
45
|
-
name: "test",
|
|
46
|
-
columns: {
|
|
47
|
-
id: column.integer().primaryKey(),
|
|
48
|
-
createdAt,
|
|
49
|
-
newCol: column.string()
|
|
50
|
-
},
|
|
51
|
-
indexes() {
|
|
52
|
-
return {
|
|
53
|
-
newCol: index(this.newCol),
|
|
54
|
-
multiple: index(this.newCol.concat("inline parameter test"))
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
await query.migrateSchema(AddCol);
|
|
59
|
-
await query(
|
|
60
|
-
AddCol.insertOne({
|
|
61
|
-
newCol: "new"
|
|
62
|
-
})
|
|
63
|
-
);
|
|
64
|
-
const rowOne = await query(
|
|
65
|
-
AddCol.select({ id: AddCol.id, newCol: AddCol.newCol }).first()
|
|
66
|
-
);
|
|
67
|
-
assert.equal(rowOne, { id: 1, newCol: "new" });
|
|
68
|
-
});
|
|
69
|
-
test.run();
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
// test/TestSubQueries.ts
|
|
2
|
-
import { test } from "uvu";
|
|
3
|
-
import * as assert from "uvu/assert";
|
|
4
|
-
import { column, create, table } from "../src/index.js";
|
|
5
|
-
import { connect } from "./DbSuite.js";
|
|
6
|
-
test("IncludeMany", async () => {
|
|
7
|
-
const query = await connect();
|
|
8
|
-
const Role = table({
|
|
9
|
-
name: "Role",
|
|
10
|
-
columns: {
|
|
11
|
-
id: column.integer().primaryKey(),
|
|
12
|
-
name: column.string()
|
|
13
|
-
}
|
|
14
|
-
});
|
|
15
|
-
const User = table({
|
|
16
|
-
name: "User",
|
|
17
|
-
columns: {
|
|
18
|
-
id: column.integer().primaryKey(),
|
|
19
|
-
roles: column.array()
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
const Entry = table({
|
|
23
|
-
name: "Entry",
|
|
24
|
-
columns: {
|
|
25
|
-
id: column.integer().primaryKey()
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
const Language = table({
|
|
29
|
-
name: "Language",
|
|
30
|
-
columns: {
|
|
31
|
-
id: column.integer().primaryKey(),
|
|
32
|
-
entry: column.integer()
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
const Version = table({
|
|
36
|
-
name: "Version",
|
|
37
|
-
columns: {
|
|
38
|
-
id: column.integer().primaryKey(),
|
|
39
|
-
language: column.integer()
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
await query(create(Role, User, Entry, Language, Version));
|
|
43
|
-
const role1 = await query(Role.insertOne({ name: "role1" }));
|
|
44
|
-
const role2 = await query(Role.insertOne({ name: "role2" }));
|
|
45
|
-
const user = await query(User.insertOne({ roles: [role1.id, role2.id] }));
|
|
46
|
-
const UserAlias = User.as("user1");
|
|
47
|
-
const RoleAlias = Role.as("role");
|
|
48
|
-
const bundled = await query(
|
|
49
|
-
UserAlias.first().select({
|
|
50
|
-
...UserAlias,
|
|
51
|
-
roles: RoleAlias.select({
|
|
52
|
-
name: RoleAlias.name
|
|
53
|
-
}).orderBy(RoleAlias.name.asc()).where(RoleAlias.id.isIn(UserAlias.roles))
|
|
54
|
-
})
|
|
55
|
-
);
|
|
56
|
-
assert.equal(bundled.roles, [{ name: "role1" }, { name: "role2" }]);
|
|
57
|
-
const entry = await query(Entry.insertOne({}));
|
|
58
|
-
const language = await query(Language.insertOne({ entry: entry.id }));
|
|
59
|
-
const version1 = await query(
|
|
60
|
-
Version.insertOne({
|
|
61
|
-
language: language.id
|
|
62
|
-
})
|
|
63
|
-
);
|
|
64
|
-
const version2 = await query(
|
|
65
|
-
Version.insertOne({
|
|
66
|
-
language: language.id
|
|
67
|
-
})
|
|
68
|
-
);
|
|
69
|
-
const languages = Language.where(Language.entry.is(Entry.id)).select({
|
|
70
|
-
...Language,
|
|
71
|
-
versions: Version.where(Version.language.is(Language.id))
|
|
72
|
-
});
|
|
73
|
-
const page = await query(Entry.select({ ...Entry, languages }).first());
|
|
74
|
-
assert.equal(page, {
|
|
75
|
-
...entry,
|
|
76
|
-
languages: [{ ...language, versions: [version1, version2] }]
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
test.run();
|