@antelopejs/interface-database 0.0.2
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/LICENSE +190 -0
- package/README.md +45 -0
- package/dist/antelope.test.d.ts +2 -0
- package/dist/antelope.test.js +35 -0
- package/dist/antelope.test.js.map +1 -0
- package/dist/common.d.ts +58 -0
- package/dist/common.js +44 -0
- package/dist/common.js.map +1 -0
- package/dist/datum.d.ts +55 -0
- package/dist/datum.js +70 -0
- package/dist/datum.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/query.d.ts +15 -0
- package/dist/query.js +79 -0
- package/dist/query.js.map +1 -0
- package/dist/schema.d.ts +102 -0
- package/dist/schema.js +88 -0
- package/dist/schema.js.map +1 -0
- package/dist/selection.d.ts +99 -0
- package/dist/selection.js +119 -0
- package/dist/selection.js.map +1 -0
- package/dist/stream.d.ts +185 -0
- package/dist/stream.js +221 -0
- package/dist/stream.js.map +1 -0
- package/dist/tests/aggregation_operations.test.d.ts +1 -0
- package/dist/tests/aggregation_operations.test.js +157 -0
- package/dist/tests/aggregation_operations.test.js.map +1 -0
- package/dist/tests/basic_operations.test.d.ts +1 -0
- package/dist/tests/basic_operations.test.js +216 -0
- package/dist/tests/basic_operations.test.js.map +1 -0
- package/dist/tests/between_operations.test.d.ts +1 -0
- package/dist/tests/between_operations.test.js +76 -0
- package/dist/tests/between_operations.test.js.map +1 -0
- package/dist/tests/change_feeds.test.d.ts +1 -0
- package/dist/tests/change_feeds.test.js +90 -0
- package/dist/tests/change_feeds.test.js.map +1 -0
- package/dist/tests/datasets/index.d.ts +4 -0
- package/dist/tests/datasets/index.js +22 -0
- package/dist/tests/datasets/index.js.map +1 -0
- package/dist/tests/datasets/orders.d.ts +62 -0
- package/dist/tests/datasets/orders.js +158 -0
- package/dist/tests/datasets/orders.js.map +1 -0
- package/dist/tests/datasets/products.d.ts +48 -0
- package/dist/tests/datasets/products.js +139 -0
- package/dist/tests/datasets/products.js.map +1 -0
- package/dist/tests/datasets/users.d.ts +50 -0
- package/dist/tests/datasets/users.js +145 -0
- package/dist/tests/datasets/users.js.map +1 -0
- package/dist/tests/datasets/vehicles.d.ts +23 -0
- package/dist/tests/datasets/vehicles.js +41 -0
- package/dist/tests/datasets/vehicles.js.map +1 -0
- package/dist/tests/date_operations.test.d.ts +1 -0
- package/dist/tests/date_operations.test.js +119 -0
- package/dist/tests/date_operations.test.js.map +1 -0
- package/dist/tests/do_operations.test.d.ts +1 -0
- package/dist/tests/do_operations.test.js +209 -0
- package/dist/tests/do_operations.test.js.map +1 -0
- package/dist/tests/filters.test.d.ts +1 -0
- package/dist/tests/filters.test.js +158 -0
- package/dist/tests/filters.test.js.map +1 -0
- package/dist/tests/group_operations.test.d.ts +1 -0
- package/dist/tests/group_operations.test.js +190 -0
- package/dist/tests/group_operations.test.js.map +1 -0
- package/dist/tests/instance_modes.test.d.ts +1 -0
- package/dist/tests/instance_modes.test.js +192 -0
- package/dist/tests/instance_modes.test.js.map +1 -0
- package/dist/tests/joins.test.d.ts +1 -0
- package/dist/tests/joins.test.js +163 -0
- package/dist/tests/joins.test.js.map +1 -0
- package/dist/tests/lookup_operations.test.d.ts +1 -0
- package/dist/tests/lookup_operations.test.js +103 -0
- package/dist/tests/lookup_operations.test.js.map +1 -0
- package/dist/tests/merge_operations.test.d.ts +1 -0
- package/dist/tests/merge_operations.test.js +216 -0
- package/dist/tests/merge_operations.test.js.map +1 -0
- package/dist/tests/row_level_operations.test.d.ts +1 -0
- package/dist/tests/row_level_operations.test.js +467 -0
- package/dist/tests/row_level_operations.test.js.map +1 -0
- package/dist/tests/sorting.test.d.ts +1 -0
- package/dist/tests/sorting.test.js +161 -0
- package/dist/tests/sorting.test.js.map +1 -0
- package/dist/tests/union_operations.test.d.ts +1 -0
- package/dist/tests/union_operations.test.js +129 -0
- package/dist/tests/union_operations.test.js.map +1 -0
- package/dist/valueproxy.d.ts +415 -0
- package/dist/valueproxy.js +562 -0
- package/dist/valueproxy.js.map +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const interface_database_1 = require("@antelopejs/interface-database");
|
|
4
|
+
const chai_1 = require("chai");
|
|
5
|
+
const users_1 = require("./datasets/users");
|
|
6
|
+
const tableName = "test-table";
|
|
7
|
+
const schema = new interface_database_1.Schema("test-sorting", {
|
|
8
|
+
[tableName]: users_1.User,
|
|
9
|
+
});
|
|
10
|
+
const table = schema.instance("default").table(tableName);
|
|
11
|
+
// Utiliser le dataset unifié
|
|
12
|
+
const testData = (0, users_1.getUniqueUsers)();
|
|
13
|
+
let insertedKeys = [];
|
|
14
|
+
describe("Sorting Operations", () => {
|
|
15
|
+
before(async () => {
|
|
16
|
+
await schema.createInstance("default").run();
|
|
17
|
+
});
|
|
18
|
+
after(async () => {
|
|
19
|
+
await table.delete().run();
|
|
20
|
+
await schema.destroyInstance("default").run();
|
|
21
|
+
});
|
|
22
|
+
it("Insert Test Data", InsertTestData);
|
|
23
|
+
it("Sort by String Ascending", SortByStringAscending);
|
|
24
|
+
it("Sort by String Descending", SortByStringDescending);
|
|
25
|
+
it("Sort by Number Ascending", SortByNumberAscending);
|
|
26
|
+
it("Sort by Number Descending", SortByNumberDescending);
|
|
27
|
+
it("Sort by Boolean Ascending", SortByBooleanAscending);
|
|
28
|
+
it("Sort by Boolean Descending", SortByBooleanDescending);
|
|
29
|
+
it("Sort by Date Ascending", SortByDateAscending);
|
|
30
|
+
it("Sort by Date Descending", SortByDateDescending);
|
|
31
|
+
it("Sort by Multiple Fields", SortByMultipleFields);
|
|
32
|
+
it("Cleanup", CleanupTest);
|
|
33
|
+
});
|
|
34
|
+
async function InsertTestData() {
|
|
35
|
+
const response = await table.insert(testData).run();
|
|
36
|
+
(0, chai_1.expect)(response).to.be.an("array");
|
|
37
|
+
(0, chai_1.expect)(response).to.have.lengthOf(testData.length);
|
|
38
|
+
response.forEach((val) => {
|
|
39
|
+
(0, chai_1.expect)(val).to.be.a("string");
|
|
40
|
+
});
|
|
41
|
+
insertedKeys = response;
|
|
42
|
+
}
|
|
43
|
+
async function SortByStringAscending() {
|
|
44
|
+
const result = await table.orderBy("name", "asc").run();
|
|
45
|
+
(0, chai_1.expect)(result).to.be.an("array");
|
|
46
|
+
(0, chai_1.expect)(result).to.have.lengthOf(testData.length);
|
|
47
|
+
const expectedOrder = ["Alice", "Antoine", "Camille", "Dominique", "Emilie"];
|
|
48
|
+
result.forEach((doc, index) => {
|
|
49
|
+
(0, chai_1.expect)(doc.name).to.equal(expectedOrder[index]);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
async function SortByStringDescending() {
|
|
53
|
+
const result = await table.orderBy("name", "desc").run();
|
|
54
|
+
(0, chai_1.expect)(result).to.be.an("array");
|
|
55
|
+
(0, chai_1.expect)(result).to.have.lengthOf(testData.length);
|
|
56
|
+
const expectedOrder = ["Emilie", "Dominique", "Camille", "Antoine", "Alice"];
|
|
57
|
+
result.forEach((doc, index) => {
|
|
58
|
+
(0, chai_1.expect)(doc.name).to.equal(expectedOrder[index]);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
async function SortByNumberAscending() {
|
|
62
|
+
const result = await table.orderBy("age", "asc").run();
|
|
63
|
+
(0, chai_1.expect)(result).to.be.an("array");
|
|
64
|
+
(0, chai_1.expect)(result).to.have.lengthOf(testData.length);
|
|
65
|
+
const expectedOrder = [22, 25, 28, 30, 35];
|
|
66
|
+
result.forEach((doc, index) => {
|
|
67
|
+
(0, chai_1.expect)(doc.age).to.equal(expectedOrder[index]);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
async function SortByNumberDescending() {
|
|
71
|
+
const result = await table.orderBy("salary", "desc").run();
|
|
72
|
+
(0, chai_1.expect)(result).to.be.an("array");
|
|
73
|
+
(0, chai_1.expect)(result).to.have.lengthOf(testData.length);
|
|
74
|
+
const expectedOrder = [90000, 60000, 50000, 0, -15000];
|
|
75
|
+
result.forEach((doc, index) => {
|
|
76
|
+
(0, chai_1.expect)(doc.salary).to.equal(expectedOrder[index]);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
async function SortByBooleanAscending() {
|
|
80
|
+
const result = await table.orderBy("isActive", "asc").run();
|
|
81
|
+
(0, chai_1.expect)(result).to.be.an("array");
|
|
82
|
+
(0, chai_1.expect)(result).to.have.lengthOf(testData.length);
|
|
83
|
+
const falseCount = testData.filter((item) => !item.isActive).length;
|
|
84
|
+
result.forEach((doc, index) => {
|
|
85
|
+
if (index < falseCount) {
|
|
86
|
+
(0, chai_1.expect)(doc.isActive).to.equal(false);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
(0, chai_1.expect)(doc.isActive).to.equal(true);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
async function SortByBooleanDescending() {
|
|
94
|
+
const result = await table.orderBy("isActive", "desc").run();
|
|
95
|
+
(0, chai_1.expect)(result).to.be.an("array");
|
|
96
|
+
(0, chai_1.expect)(result).to.have.lengthOf(testData.length);
|
|
97
|
+
const trueCount = testData.filter((item) => item.isActive).length;
|
|
98
|
+
result.forEach((doc, index) => {
|
|
99
|
+
if (index < trueCount) {
|
|
100
|
+
(0, chai_1.expect)(doc.isActive).to.equal(true);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
(0, chai_1.expect)(doc.isActive).to.equal(false);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
async function SortByDateAscending() {
|
|
108
|
+
const result = await table.orderBy("createdAt", "asc").run();
|
|
109
|
+
(0, chai_1.expect)(result).to.be.an("array");
|
|
110
|
+
(0, chai_1.expect)(result).to.have.lengthOf(testData.length);
|
|
111
|
+
const expectedDates = [
|
|
112
|
+
new Date("2021-12-05"),
|
|
113
|
+
new Date("2022-06-20"),
|
|
114
|
+
new Date("2023-01-15"),
|
|
115
|
+
new Date("2023-08-30"),
|
|
116
|
+
new Date("2024-03-10"),
|
|
117
|
+
];
|
|
118
|
+
result.forEach((doc, index) => {
|
|
119
|
+
(0, chai_1.expect)(doc.createdAt?.getTime()).to.equal(expectedDates[index].getTime());
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
async function SortByDateDescending() {
|
|
123
|
+
const result = await table.orderBy("createdAt", "desc").run();
|
|
124
|
+
(0, chai_1.expect)(result).to.be.an("array");
|
|
125
|
+
(0, chai_1.expect)(result).to.have.lengthOf(testData.length);
|
|
126
|
+
const expectedDates = [
|
|
127
|
+
new Date("2024-03-10"),
|
|
128
|
+
new Date("2023-08-30"),
|
|
129
|
+
new Date("2023-01-15"),
|
|
130
|
+
new Date("2022-06-20"),
|
|
131
|
+
new Date("2021-12-05"),
|
|
132
|
+
];
|
|
133
|
+
result.forEach((doc, index) => {
|
|
134
|
+
(0, chai_1.expect)(doc.createdAt?.getTime()).to.equal(expectedDates[index].getTime());
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
async function SortByMultipleFields() {
|
|
138
|
+
const result = await table
|
|
139
|
+
.orderBy("name", "asc")
|
|
140
|
+
.orderBy("age", "desc")
|
|
141
|
+
.run();
|
|
142
|
+
(0, chai_1.expect)(result).to.be.an("array");
|
|
143
|
+
(0, chai_1.expect)(result).to.have.lengthOf(testData.length);
|
|
144
|
+
const expectedOrder = [
|
|
145
|
+
{ name: "Dominique", age: 35 },
|
|
146
|
+
{ name: "Alice", age: 30 },
|
|
147
|
+
{ name: "Emilie", age: 28 },
|
|
148
|
+
{ name: "Antoine", age: 25 },
|
|
149
|
+
{ name: "Camille", age: 22 },
|
|
150
|
+
];
|
|
151
|
+
result.forEach((doc, index) => {
|
|
152
|
+
(0, chai_1.expect)(doc.name).to.equal(expectedOrder[index].name);
|
|
153
|
+
(0, chai_1.expect)(doc.age).to.equal(expectedOrder[index].age);
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
async function CleanupTest() {
|
|
157
|
+
for (const key of insertedKeys) {
|
|
158
|
+
await table.get(key).delete().run();
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=sorting.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sorting.test.js","sourceRoot":"","sources":["../../src/tests/sorting.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const interface_database_1 = require("@antelopejs/interface-database");
|
|
4
|
+
const chai_1 = require("chai");
|
|
5
|
+
const products_1 = require("./datasets/products");
|
|
6
|
+
const users_1 = require("./datasets/users");
|
|
7
|
+
const usersTableName = "users";
|
|
8
|
+
const productsTableName = "products";
|
|
9
|
+
const schema = new interface_database_1.Schema("test-union", {
|
|
10
|
+
[usersTableName]: users_1.User,
|
|
11
|
+
[productsTableName]: products_1.Product,
|
|
12
|
+
});
|
|
13
|
+
const usersTable = schema.instance("default").table(usersTableName);
|
|
14
|
+
const productsTable = schema.instance("default").table(productsTableName);
|
|
15
|
+
const usersData = (0, users_1.getUniqueUsers)();
|
|
16
|
+
const productsData = (0, products_1.getUniqueProducts)();
|
|
17
|
+
const insertedKeys = {
|
|
18
|
+
users: [],
|
|
19
|
+
products: [],
|
|
20
|
+
};
|
|
21
|
+
describe("Union Operations", () => {
|
|
22
|
+
before(async () => {
|
|
23
|
+
await schema.createInstance("default").run();
|
|
24
|
+
});
|
|
25
|
+
after(async () => {
|
|
26
|
+
await usersTable.delete().run();
|
|
27
|
+
await productsTable.delete().run();
|
|
28
|
+
await schema.destroyInstance("default").run();
|
|
29
|
+
});
|
|
30
|
+
it("Insert Test Data", InsertTestData);
|
|
31
|
+
it("Union Same Table With Filter", UnionSameTableWithFilter);
|
|
32
|
+
it("Union Different Tables", UnionDifferentTables);
|
|
33
|
+
it("Union With Right Map", UnionWithRightMap);
|
|
34
|
+
it("Union Preserves Duplicates", UnionPreservesDuplicates);
|
|
35
|
+
it("Union With Chained Operations", UnionWithChainedOperations);
|
|
36
|
+
it("Chained Unions", ChainedUnions);
|
|
37
|
+
it("Cleanup", CleanupTest);
|
|
38
|
+
});
|
|
39
|
+
async function InsertTestData() {
|
|
40
|
+
const usersResponse = await usersTable.insert(usersData).run();
|
|
41
|
+
const productsResponse = await productsTable.insert(productsData).run();
|
|
42
|
+
(0, chai_1.expect)(usersResponse).to.be.an("array");
|
|
43
|
+
(0, chai_1.expect)(productsResponse).to.be.an("array");
|
|
44
|
+
insertedKeys.users = usersResponse;
|
|
45
|
+
insertedKeys.products = productsResponse;
|
|
46
|
+
}
|
|
47
|
+
async function UnionSameTableWithFilter() {
|
|
48
|
+
const activeUsers = usersTable.filter((u) => u.key("isActive").eq(true));
|
|
49
|
+
const inactiveUsers = usersTable.filter((u) => u.key("isActive").eq(false));
|
|
50
|
+
const result = await activeUsers.union(inactiveUsers).run();
|
|
51
|
+
(0, chai_1.expect)(result).to.be.an("array");
|
|
52
|
+
(0, chai_1.expect)(result).to.have.lengthOf(usersData.length);
|
|
53
|
+
const activeCount = usersData.filter((u) => u.isActive).length;
|
|
54
|
+
const inactiveCount = usersData.filter((u) => !u.isActive).length;
|
|
55
|
+
(0, chai_1.expect)(activeCount + inactiveCount).to.equal(result.length);
|
|
56
|
+
}
|
|
57
|
+
async function UnionDifferentTables() {
|
|
58
|
+
const userNames = usersTable.map((u) => ({ name: u.key("name") }));
|
|
59
|
+
const productNames = productsTable.map((p) => ({ name: p.key("name") }));
|
|
60
|
+
const result = await userNames.union(productNames).run();
|
|
61
|
+
(0, chai_1.expect)(result).to.be.an("array");
|
|
62
|
+
(0, chai_1.expect)(result).to.have.lengthOf(usersData.length + productsData.length);
|
|
63
|
+
const names = result.map((r) => r.name);
|
|
64
|
+
for (const user of usersData) {
|
|
65
|
+
(0, chai_1.expect)(names).to.include(user.name);
|
|
66
|
+
}
|
|
67
|
+
for (const product of productsData) {
|
|
68
|
+
(0, chai_1.expect)(names).to.include(product.name);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async function UnionWithRightMap() {
|
|
72
|
+
const mappedProducts = productsTable.map((p) => ({
|
|
73
|
+
name: p.key("name"),
|
|
74
|
+
price: p.key("price"),
|
|
75
|
+
}));
|
|
76
|
+
const result = await usersTable.union(mappedProducts).run();
|
|
77
|
+
(0, chai_1.expect)(result).to.be.an("array");
|
|
78
|
+
(0, chai_1.expect)(result).to.have.lengthOf(usersData.length + productsData.length);
|
|
79
|
+
const userResults = result.filter((r) => "age" in r);
|
|
80
|
+
const productResults = result.filter((r) => "price" in r);
|
|
81
|
+
(0, chai_1.expect)(userResults).to.have.lengthOf(usersData.length);
|
|
82
|
+
(0, chai_1.expect)(productResults).to.have.lengthOf(productsData.length);
|
|
83
|
+
for (const user of userResults) {
|
|
84
|
+
(0, chai_1.expect)(user).to.have.property("name");
|
|
85
|
+
(0, chai_1.expect)(user).to.have.property("age");
|
|
86
|
+
}
|
|
87
|
+
for (const product of productResults) {
|
|
88
|
+
(0, chai_1.expect)(product).to.have.property("name");
|
|
89
|
+
(0, chai_1.expect)(product).to.have.property("price");
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async function UnionPreservesDuplicates() {
|
|
93
|
+
const allUsers = usersTable;
|
|
94
|
+
const result = await allUsers.union(allUsers).run();
|
|
95
|
+
(0, chai_1.expect)(result).to.be.an("array");
|
|
96
|
+
(0, chai_1.expect)(result).to.have.lengthOf(usersData.length * 2);
|
|
97
|
+
}
|
|
98
|
+
async function UnionWithChainedOperations() {
|
|
99
|
+
const activeUsers = usersTable.filter((u) => u.key("isActive").eq(true));
|
|
100
|
+
const inactiveUsers = usersTable.filter((u) => u.key("isActive").eq(false));
|
|
101
|
+
const count = await activeUsers.union(inactiveUsers).count().run();
|
|
102
|
+
(0, chai_1.expect)(count).to.equal(usersData.length);
|
|
103
|
+
const filtered = await activeUsers
|
|
104
|
+
.union(inactiveUsers)
|
|
105
|
+
.filter((u) => u.key("age").gt(25))
|
|
106
|
+
.run();
|
|
107
|
+
const expectedCount = usersData.filter((u) => u.age > 25).length;
|
|
108
|
+
(0, chai_1.expect)(filtered).to.have.lengthOf(expectedCount);
|
|
109
|
+
}
|
|
110
|
+
async function ChainedUnions() {
|
|
111
|
+
const dev = usersTable.filter((u) => u.key("department").eq("Development"));
|
|
112
|
+
const marketing = usersTable.filter((u) => u.key("department").eq("Marketing"));
|
|
113
|
+
const management = usersTable.filter((u) => u.key("department").eq("Management"));
|
|
114
|
+
const result = await dev.union(marketing).union(management).run();
|
|
115
|
+
(0, chai_1.expect)(result).to.be.an("array");
|
|
116
|
+
const expectedCount = usersData.filter((u) => u.department === "Development" ||
|
|
117
|
+
u.department === "Marketing" ||
|
|
118
|
+
u.department === "Management").length;
|
|
119
|
+
(0, chai_1.expect)(result).to.have.lengthOf(expectedCount);
|
|
120
|
+
}
|
|
121
|
+
async function CleanupTest() {
|
|
122
|
+
for (const key of insertedKeys.products) {
|
|
123
|
+
await productsTable.get(key).delete().run();
|
|
124
|
+
}
|
|
125
|
+
for (const key of insertedKeys.users) {
|
|
126
|
+
await usersTable.get(key).delete().run();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=union_operations.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"union_operations.test.js","sourceRoot":"","sources":["../../src/tests/union_operations.test.ts"],"names":[],"mappings":"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"}
|