axiodb 14.1.4 → 15.0.0
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/.graphifyignore +12 -0
- package/a.txt +11 -0
- package/lib/Services/Auth/AuthSeeder.service.js +2 -3
- package/lib/Services/Auth/AuthSeeder.service.js.map +1 -1
- package/lib/Services/Auth/AuthService.service.d.ts +10 -1
- package/lib/Services/Auth/AuthService.service.js +20 -1
- package/lib/Services/Auth/AuthService.service.js.map +1 -1
- package/lib/Services/Database/database.operation.d.ts +15 -15
- package/lib/Services/Database/database.operation.js +43 -51
- package/lib/Services/Database/database.operation.js.map +1 -1
- package/lib/Services/Index/Index.service.d.ts +32 -101
- package/lib/Services/Index/Index.service.js +122 -142
- package/lib/Services/Index/Index.service.js.map +1 -1
- package/lib/Services/Index/IndexCache.service.d.ts +19 -52
- package/lib/Services/Index/IndexCache.service.js +48 -95
- package/lib/Services/Index/IndexCache.service.js.map +1 -1
- package/lib/Services/Index/ReadIndex.service.js +21 -13
- package/lib/Services/Index/ReadIndex.service.js.map +1 -1
- package/lib/Services/Transaction/Transaction.service.js +3 -2
- package/lib/Services/Transaction/Transaction.service.js.map +1 -1
- package/lib/Services/Transaction/TransactionIndexManager.service.js +6 -6
- package/lib/Services/Transaction/TransactionIndexManager.service.js.map +1 -1
- package/lib/Services/Transaction/TransactionRegistry.service.d.ts +18 -0
- package/lib/Services/Transaction/TransactionRegistry.service.js +55 -24
- package/lib/Services/Transaction/TransactionRegistry.service.js.map +1 -1
- package/lib/Services/Transaction/WriteAheadLog.service.js +4 -14
- package/lib/Services/Transaction/WriteAheadLog.service.js.map +1 -1
- package/lib/config/Keys/Keys.d.ts +5 -0
- package/lib/config/Keys/Keys.js +6 -1
- package/lib/config/Keys/Keys.js.map +1 -1
- package/lib/engine/Filesystem/FileManager.d.ts +26 -0
- package/lib/engine/Filesystem/FileManager.js +94 -0
- package/lib/engine/Filesystem/FileManager.js.map +1 -1
- package/lib/server/config/keys.js +1 -1
- package/lib/server/config/keys.js.map +1 -1
- package/lib/server/controller/Auth/UserManagement.controller.js +6 -1
- package/lib/server/controller/Auth/UserManagement.controller.js.map +1 -1
- package/lib/server/controller/Collections/Collection.controller.js +3 -5
- package/lib/server/controller/Collections/Collection.controller.js.map +1 -1
- package/lib/server/controller/Database/Databse.controller.d.ts +9 -0
- package/lib/server/controller/Database/Databse.controller.js +122 -14
- package/lib/server/controller/Database/Databse.controller.js.map +1 -1
- package/lib/server/helper/databaseImport.helper.d.ts +37 -0
- package/lib/server/helper/databaseImport.helper.js +120 -0
- package/lib/server/helper/databaseImport.helper.js.map +1 -0
- package/lib/server/helper/documentCounterInFolder.helper.d.ts +12 -0
- package/lib/server/helper/{filesCounterInFolder.helper.js → documentCounterInFolder.helper.js} +16 -15
- package/lib/server/helper/documentCounterInFolder.helper.js.map +1 -0
- package/lib/server/public/AxioControl/.vite/manifest.json +2 -2
- package/lib/server/public/AxioControl/.vite/ssr-manifest.json +442 -15
- package/lib/server/public/AxioControl/assets/index-DkwtNvzk.js +157 -0
- package/lib/server/public/AxioControl/assets/index-DwPXIyl2.css +1 -0
- package/lib/server/public/AxioControl/index.html +2 -2
- package/lib/server/public/AxioControl/sw.js +1 -1
- package/lib/server/router/Router.js +54 -0
- package/lib/server/router/Router.js.map +1 -1
- package/lib/server/router/Routers/DB.routes.js +12 -1
- package/lib/server/router/Routers/DB.routes.js.map +1 -1
- package/lib/utility/ZipUnzip.utils.d.ts +35 -1
- package/lib/utility/ZipUnzip.utils.js +132 -12
- package/lib/utility/ZipUnzip.utils.js.map +1 -1
- package/package.json +1 -3
- package/lib/server/helper/filesCounterInFolder.helper.d.ts +0 -1
- package/lib/server/helper/filesCounterInFolder.helper.js.map +0 -1
- package/lib/server/public/AxioControl/assets/index-05O5admf.css +0 -1
- package/lib/server/public/AxioControl/assets/index-Ddne1B8d.js +0 -75
package/.graphifyignore
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Compiled TypeScript output (tsc outDir) - duplicates every source/*.ts as
|
|
2
|
+
# .js plus __awaiter polyfill internals (adopt/fulfilled/rejected/step) in
|
|
3
|
+
# each file. Already git-ignored; indexing it doubles the graph with noise.
|
|
4
|
+
/lib/
|
|
5
|
+
|
|
6
|
+
# graphify's own outputs - GRAPH_REPORT.md/graph.json are generated FROM the graph;
|
|
7
|
+
# indexing them feeds the graph its own summary back as source material.
|
|
8
|
+
/graphify-out/
|
|
9
|
+
|
|
10
|
+
# Built docs site (vite-react-ssg output) - duplicates Document/src + Document/public
|
|
11
|
+
# as pre-rendered HTML plus llms.txt/llms-full.txt concatenations of the same content.
|
|
12
|
+
/Document/AxioDB_Docs/
|
package/a.txt
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Rank order for your profile:
|
|
2
|
+
|
|
3
|
+
Instahyre - curated, India product companies, recruiters reach out. Best fit.
|
|
4
|
+
Wellfound - startups, remote, Node-heavy. Free.
|
|
5
|
+
workatastartup.com (YC) - Node-native seed/Series A. Free. Barely used by Indian devs. Underpriced.
|
|
6
|
+
Hirist - tech-only India, less noise than Naukri.
|
|
7
|
+
Cutshort - startups, decent.
|
|
8
|
+
Weekday.works - referral-graph based.
|
|
9
|
+
Company careers page direct - highest signal per application. Wobot, CoverForce, do this.
|
|
10
|
+
r/developersIndia monthly hiring thread - free, low volume, real.
|
|
11
|
+
GDG Kolkata network - your actual edge. Using at ~20%.
|
|
@@ -34,9 +34,8 @@ class AuthSeeder {
|
|
|
34
34
|
const rolesCollection = yield configDB.createCollection(Permissions_1.CONFIG_ROLES_COLLECTION);
|
|
35
35
|
const permissionsCollection = yield configDB.createCollection(Permissions_1.CONFIG_PERMISSIONS_COLLECTION);
|
|
36
36
|
ConfigDatabase_service_1.default.setCollections(usersCollection, rolesCollection, permissionsCollection);
|
|
37
|
-
//
|
|
38
|
-
//
|
|
39
|
-
// an actual document query (filtered to real .axiodb files) to detect prior seeding.
|
|
37
|
+
// Detect prior seeding with a real document query rather than a count, so the
|
|
38
|
+
// check stays correct if a document file is ever left behind without content.
|
|
40
39
|
const existingUsers = yield usersCollection.query({}).Limit(1).exec();
|
|
41
40
|
const alreadySeeded = "data" in existingUsers &&
|
|
42
41
|
Array.isArray((_a = existingUsers.data) === null || _a === void 0 ? void 0 : _a.documents) &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthSeeder.service.js","sourceRoot":"","sources":["../../../source/Services/Auth/AuthSeeder.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAEA,oFAAqD;AACrD,sFAAsD;AACtD,0FAA2D;AAM3D,+DAUuC;AAEvC;;;;;GAKG;AACH;IAGE,YAAY,cAAsB;QAChC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAEY,YAAY;;;YACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,8BAAgB,CAAC,CAAC;YAEtE,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,qCAAuB,CAAC,CAAC;YACjF,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,qCAAuB,CAAC,CAAC;YACjF,MAAM,qBAAqB,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAC3D,2CAA6B,CAC9B,CAAC;YAEF,gCAAc,CAAC,cAAc,CAAC,eAAe,EAAE,eAAe,EAAE,qBAAqB,CAAC,CAAC;YAEvF,
|
|
1
|
+
{"version":3,"file":"AuthSeeder.service.js","sourceRoot":"","sources":["../../../source/Services/Auth/AuthSeeder.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,7 +39,16 @@ export default class AuthService {
|
|
|
39
39
|
success: boolean;
|
|
40
40
|
message: string;
|
|
41
41
|
}>;
|
|
42
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Deletes a user account.
|
|
44
|
+
*
|
|
45
|
+
* @param username - The account to delete.
|
|
46
|
+
* @param actorUsername - The authenticated user performing the deletion. Required so
|
|
47
|
+
* self-deletion can be refused: an account that removes itself loses its own session
|
|
48
|
+
* mid-request, and a Super Admin doing it can strand the instance with no way back in.
|
|
49
|
+
* @returns Result of the deletion, or the reason it was refused.
|
|
50
|
+
*/
|
|
51
|
+
deleteUser(username: string, actorUsername: string): Promise<{
|
|
43
52
|
success: boolean;
|
|
44
53
|
message: string;
|
|
45
54
|
}>;
|
|
@@ -143,12 +143,31 @@ class AuthService {
|
|
|
143
143
|
return { success: true, message: "Role updated successfully" };
|
|
144
144
|
});
|
|
145
145
|
}
|
|
146
|
-
|
|
146
|
+
/**
|
|
147
|
+
* Deletes a user account.
|
|
148
|
+
*
|
|
149
|
+
* @param username - The account to delete.
|
|
150
|
+
* @param actorUsername - The authenticated user performing the deletion. Required so
|
|
151
|
+
* self-deletion can be refused: an account that removes itself loses its own session
|
|
152
|
+
* mid-request, and a Super Admin doing it can strand the instance with no way back in.
|
|
153
|
+
* @returns Result of the deletion, or the reason it was refused.
|
|
154
|
+
*/
|
|
155
|
+
deleteUser(username, actorUsername) {
|
|
147
156
|
return __awaiter(this, void 0, void 0, function* () {
|
|
148
157
|
const user = yield this.findUserByUsername(username);
|
|
149
158
|
if (!user) {
|
|
150
159
|
return { success: false, message: "User not found" };
|
|
151
160
|
}
|
|
161
|
+
// Checked after the lookup so the message can name who to go to instead: on a
|
|
162
|
+
// self-delete the target *is* the actor, so `user.role` is already the actor's role.
|
|
163
|
+
if (username === actorUsername) {
|
|
164
|
+
return {
|
|
165
|
+
success: false,
|
|
166
|
+
message: user.role === Permissions_1.SUPER_ADMIN_ROLE
|
|
167
|
+
? `You cannot delete your own account. Ask another ${Permissions_1.SUPER_ADMIN_ROLE} to delete it for you.`
|
|
168
|
+
: `You cannot delete your own account. Ask a ${Permissions_1.SUPER_ADMIN_ROLE} to delete it for you.`,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
152
171
|
if (user.role === Permissions_1.SUPER_ADMIN_ROLE) {
|
|
153
172
|
const lastAdminGuard = yield this.assertNotLastSuperAdmin(username);
|
|
154
173
|
if (!lastAdminGuard.success) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthService.service.js","sourceRoot":"","sources":["../../../source/Services/Auth/AuthService.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AuthService.service.js","sourceRoot":"","sources":["../../../source/Services/Auth/AuthService.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,oFAAqD;AACrD,sFAAsD;AACtD,0FAA2D;AAC3D,kFAAkD;AAClD,8EAA8C;AAK9C,+DAAsF;AAuBtF;;;;GAIG;AACH;IACe,KAAK,CAAC,QAAgB,EAAE,QAAgB;;YACnD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YACrD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;gBACrC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC;YACrE,CAAC;YAED,MAAM,eAAe,GAAG,MAAM,+BAAc,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACzF,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC;YACrE,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;QAC9D,CAAC;KAAA;IAEY,kBAAkB,CAAC,QAAgB;;YAC9C,MAAM,MAAM,GAAG,MAAM,gCAAc,CAAC,kBAAkB,EAAE;iBACrD,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;iBACnB,OAAO,CAAC,IAAI,CAAC;iBACb,IAAI,EAAE,CAAC;YACV,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC7D,OAAO,MAAM,CAAC,IAAI,CAAC,SAAyB,CAAC;YAC/C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAEY,SAAS;;;YACpB,MAAM,MAAM,GAAG,MAAM,gCAAc,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACtF,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAC,MAAA,MAAM,CAAC,IAAI,0CAAE,SAAS,CAAA,EAAE,CAAC;gBACnD,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAA2B,CAAC;YACtD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC,CAAC;QACN,CAAC;KAAA;IAEY,UAAU,CACrB,QAAgB,EAChB,QAAgB,EAChB,IAAY;;YAEZ,IAAI,CAAC,kCAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,CAAC;YACtE,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAC7D,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAChF,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,+BAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACjE,MAAM,QAAQ,GAAiB;gBAC7B,QAAQ;gBACR,YAAY;gBACZ,IAAI;gBACJ,kBAAkB,EAAE,IAAI;gBACxB,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;YACF,MAAM,gCAAc,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC3D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;QACjE,CAAC;KAAA;IAEY,iBAAiB,CAC5B,QAAgB,EAChB,eAAuB,EACvB,WAAmB;;YAEnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YACrD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;YACvD,CAAC;YAED,MAAM,sBAAsB,GAAG,MAAM,+BAAc,CAAC,cAAc,CAChE,eAAe,EACf,IAAI,CAAC,YAAY,CAClB,CAAC;YACF,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC5B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC;YACtE,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,+BAAc,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACpE,MAAM,gCAAc,CAAC,kBAAkB,EAAE;iBACtC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;iBACpB,SAAS,CAAC,EAAE,YAAY,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC;YAE1D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC;QACrE,CAAC;KAAA;IAEY,iBAAiB,CAC5B,QAAgB,EAChB,WAAmB;;YAEnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YACrD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;YACvD,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,+BAAc,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACpE,MAAM,gCAAc,CAAC,kBAAkB,EAAE;iBACtC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;iBACpB,SAAS,CAAC,EAAE,YAAY,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;YAEzD,8BAAY,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YAC7C,4BAAU,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;YAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;QACnE,CAAC;KAAA;IAEY,cAAc,CACzB,QAAgB,EAChB,OAAe;;YAEf,IAAI,CAAC,kCAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,OAAO,kBAAkB,EAAE,CAAC;YACzE,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YACrD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;YACvD,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,KAAK,8BAAgB,IAAI,OAAO,KAAK,8BAAgB,EAAE,CAAC;gBACnE,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;gBACpE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC5B,OAAO,cAAc,CAAC;gBACxB,CAAC;YACH,CAAC;YAED,MAAM,gCAAc,CAAC,kBAAkB,EAAE;iBACtC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;iBACpB,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAEhC,8BAAY,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YAC7C,4BAAU,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;YAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;QACjE,CAAC;KAAA;IAED;;;;;;;;OAQG;IACU,UAAU,CACrB,QAAgB,EAChB,aAAqB;;YAErB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YACrD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;YACvD,CAAC;YAED,8EAA8E;YAC9E,qFAAqF;YACrF,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;gBAC/B,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EACL,IAAI,CAAC,IAAI,KAAK,8BAAgB;wBAC5B,CAAC,CAAC,mDAAmD,8BAAgB,wBAAwB;wBAC7F,CAAC,CAAC,6CAA6C,8BAAgB,wBAAwB;iBAC5F,CAAC;YACJ,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,KAAK,8BAAgB,EAAE,CAAC;gBACnC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;gBACpE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;oBAC5B,OAAO,cAAc,CAAC;gBACxB,CAAC;YACH,CAAC;YAED,MAAM,gCAAc,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;YAC3E,8BAAY,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YAC7C,4BAAU,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;YAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;QACjE,CAAC;KAAA;IAEY,UAAU,CACrB,QAAgB,EAChB,WAAqB;;YAErB,IAAI,kCAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC3C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YAC5E,CAAC;YAED,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,iCAAmB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3F,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,8BAA8B,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iBACvE,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAAiB;gBAC7B,QAAQ;gBACR,WAAW;gBACX,YAAY,EAAE,KAAK;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC;YACF,MAAM,gCAAc,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC3D,kCAAiB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAE5D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;QACjE,CAAC;KAAA;IAEY,SAAS;;;YACpB,MAAM,MAAM,GAAG,MAAM,gCAAc,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACtF,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAC,MAAA,MAAM,CAAC,IAAI,0CAAE,SAAS,CAAA,EAAE,CAAC;gBACnD,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO,MAAM,CAAC,IAAI,CAAC,SAA2B,CAAC;QACjD,CAAC;KAAA;IAEY,UAAU,CAAC,QAAgB;;;YACtC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;YAChE,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;YACvD,CAAC;YACD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC;YAC/E,CAAC;YAED,MAAM,aAAa,GAAG,MAAM,gCAAc,CAAC,kBAAkB,EAAE;iBAC5D,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;iBACzB,KAAK,CAAC,CAAC,CAAC;iBACR,IAAI,EAAE,CAAC;YACV,MAAM,QAAQ,GACZ,MAAM,IAAI,aAAa;gBACvB,KAAK,CAAC,OAAO,CAAC,MAAA,aAAa,CAAC,IAAI,0CAAE,SAAS,CAAC;gBAC5C,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;YAC1C,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,uBAAuB,QAAQ,+CAA+C;iBACxF,CAAC;YACJ,CAAC;YAED,MAAM,gCAAc,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;YAC3E,kCAAiB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAEvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;QACjE,CAAC;KAAA;IAED;;;OAGG;IACW,uBAAuB,CACnC,iBAAyB;;;YAEzB,MAAM,MAAM,GAAG,MAAM,gCAAc,CAAC,kBAAkB,EAAE;iBACrD,KAAK,CAAC,EAAE,IAAI,EAAE,8BAAgB,EAAE,CAAC;iBACjC,KAAK,CAAC,IAAI,CAAC;iBACX,IAAI,EAAE,CAAC;YAEV,MAAM,WAAW,GAAG,MAAM,IAAI,MAAM,KAAI,MAAA,MAAM,CAAC,IAAI,0CAAE,SAAS,CAAA,CAAC,CAAC,CAAE,MAAM,CAAC,IAAI,CAAC,SAA4B,CAAC,CAAC,CAAC,EAAE,CAAC;YAChH,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAClC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,iBAAiB,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,CACzE,CAAC;YAEF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,8CAA8C;iBACxD,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC1C,CAAC;KAAA;CACF"}
|
|
@@ -7,6 +7,7 @@ import { ErrorInterface, SuccessInterface } from "../../config/Interfaces/Helper
|
|
|
7
7
|
export default class Database {
|
|
8
8
|
private name;
|
|
9
9
|
private readonly path;
|
|
10
|
+
private readonly collectionMetaPath;
|
|
10
11
|
private fileManager;
|
|
11
12
|
private folderManager;
|
|
12
13
|
private ResponseHelper;
|
|
@@ -39,10 +40,9 @@ export default class Database {
|
|
|
39
40
|
/**
|
|
40
41
|
* Removes the metadata entry for a collection from the collection metadata file.
|
|
41
42
|
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* back to the same file.
|
|
43
|
+
* Replays `collection.meta.jsonl`, drops any entry whose `name` matches the provided
|
|
44
|
+
* `collectionName`, and rewrites the surviving entries as JSONL. This is the one path
|
|
45
|
+
* that rewrites the registry - additions are plain appends.
|
|
46
46
|
*
|
|
47
47
|
* The method returns a SuccessInterface on successful removal (even if no matching
|
|
48
48
|
* collection was found) or an ErrorInterface describing the failure.
|
|
@@ -62,6 +62,13 @@ export default class Database {
|
|
|
62
62
|
* await db.dropCollectionMetadata("users");
|
|
63
63
|
*/
|
|
64
64
|
dropCollectionMetadata(collectionName: string): Promise<SuccessInterface | ErrorInterface>;
|
|
65
|
+
/**
|
|
66
|
+
* Reads the JSONL collection registry, one entry per line, last-write-wins per name.
|
|
67
|
+
*
|
|
68
|
+
* Streams the file rather than parsing it whole, and tolerates a torn final line from a
|
|
69
|
+
* crash mid-append - every complete line before it still loads.
|
|
70
|
+
*/
|
|
71
|
+
private readCollectionMetadata;
|
|
65
72
|
/**
|
|
66
73
|
* Adds metadata for a collection to the collection metadata file.
|
|
67
74
|
*
|
|
@@ -69,12 +76,9 @@ export default class Database {
|
|
|
69
76
|
* @returns A Promise that resolves when the operation is complete, or rejects with an error if the collection metadata format is invalid
|
|
70
77
|
* @private
|
|
71
78
|
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
* 3. If the file exists, reads the existing metadata, adds the new collection metadata (if not already present), and writes back to the file
|
|
76
|
-
*
|
|
77
|
-
* @throws {Error} If the collection metadata format is invalid
|
|
79
|
+
* Appends one JSONL line for a collection that isn't registered yet - the entries already
|
|
80
|
+
* on disk are never rewritten. The existence check keeps `createCollection()` on an
|
|
81
|
+
* existing collection (which is idempotent) from growing the file on every call.
|
|
78
82
|
*/
|
|
79
83
|
private AddCollectionMetadata;
|
|
80
84
|
/**
|
|
@@ -84,11 +88,7 @@ export default class Database {
|
|
|
84
88
|
* @returns A Promise that resolves to the collection's metadata if found, or undefined if not found
|
|
85
89
|
* @private
|
|
86
90
|
*
|
|
87
|
-
*
|
|
88
|
-
* 1. Checks if the collection.meta file exists
|
|
89
|
-
* 2. Reads and parses the metadata file if it exists
|
|
90
|
-
* 3. Validates that the data is an array
|
|
91
|
-
* 4. Finds and returns the metadata for the specified collection
|
|
91
|
+
* Returns undefined when the registry has no line for that collection.
|
|
92
92
|
*/
|
|
93
93
|
private getCollectionMetaDetails;
|
|
94
94
|
}
|
|
@@ -22,6 +22,7 @@ const PathSanitizer_helper_1 = __importDefault(require("../../Helper/PathSanitiz
|
|
|
22
22
|
const StatusCode_1 = require("../../config/Keys/StatusCode");
|
|
23
23
|
const Index_service_1 = require("../Index/Index.service");
|
|
24
24
|
const IndexCache_service_1 = require("../Index/IndexCache.service");
|
|
25
|
+
const Keys_1 = require("../../config/Keys/Keys");
|
|
25
26
|
/**
|
|
26
27
|
* Represents a database instance.
|
|
27
28
|
* This class provides methods to create, delete, and manage collections within a database.
|
|
@@ -30,6 +31,7 @@ class Database {
|
|
|
30
31
|
constructor(name, path) {
|
|
31
32
|
this.name = name;
|
|
32
33
|
this.path = path;
|
|
34
|
+
this.collectionMetaPath = `${path}/${Keys_1.General.Collection_Meta_File}`;
|
|
33
35
|
this.fileManager = new FileManager_1.default();
|
|
34
36
|
this.folderManager = new FolderManager_1.default();
|
|
35
37
|
this.ResponseHelper = new response_helper_1.default();
|
|
@@ -110,8 +112,8 @@ class Database {
|
|
|
110
112
|
getCollectionInfo() {
|
|
111
113
|
return __awaiter(this, void 0, void 0, function* () {
|
|
112
114
|
const collections = yield this.folderManager.ListDirectory(this.path);
|
|
113
|
-
//
|
|
114
|
-
collections.data = collections.data.filter((collection) =>
|
|
115
|
+
// The registry file lives alongside the collection folders - it is not a collection.
|
|
116
|
+
collections.data = collections.data.filter((collection) => collection !== Keys_1.General.Collection_Meta_File);
|
|
115
117
|
const totalSize = yield this.folderManager.GetDirectorySize(path_1.default.resolve(this.path));
|
|
116
118
|
// Get collection Status
|
|
117
119
|
const CollectionStatus = yield Promise.all(collections.data.map((collection) => this.getCollectionMetaDetails(collection)));
|
|
@@ -133,10 +135,9 @@ class Database {
|
|
|
133
135
|
/**
|
|
134
136
|
* Removes the metadata entry for a collection from the collection metadata file.
|
|
135
137
|
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
* back to the same file.
|
|
138
|
+
* Replays `collection.meta.jsonl`, drops any entry whose `name` matches the provided
|
|
139
|
+
* `collectionName`, and rewrites the surviving entries as JSONL. This is the one path
|
|
140
|
+
* that rewrites the registry - additions are plain appends.
|
|
140
141
|
*
|
|
141
142
|
* The method returns a SuccessInterface on successful removal (even if no matching
|
|
142
143
|
* collection was found) or an ErrorInterface describing the failure.
|
|
@@ -158,19 +159,38 @@ class Database {
|
|
|
158
159
|
dropCollectionMetadata(collectionName) {
|
|
159
160
|
return __awaiter(this, void 0, void 0, function* () {
|
|
160
161
|
const FileManagement = new FileManager_1.default();
|
|
161
|
-
const isFileExist = yield FileManagement.FileExists(
|
|
162
|
+
const isFileExist = yield FileManagement.FileExists(this.collectionMetaPath);
|
|
162
163
|
if (isFileExist.status == false) {
|
|
163
164
|
return this.ResponseHelper.Error("Collection metadata file does not exist");
|
|
164
165
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
166
|
+
const remaining = (yield this.readCollectionMetadata()).filter((data) => data.name !== collectionName);
|
|
167
|
+
yield FileManagement.WriteFile(this.collectionMetaPath, remaining.map((entry) => JSON.stringify(entry)).join("\n") +
|
|
168
|
+
(remaining.length > 0 ? "\n" : ""));
|
|
169
|
+
return this.ResponseHelper.Success(`Collection metadata for ${collectionName} dropped successfully`);
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Reads the JSONL collection registry, one entry per line, last-write-wins per name.
|
|
174
|
+
*
|
|
175
|
+
* Streams the file rather than parsing it whole, and tolerates a torn final line from a
|
|
176
|
+
* crash mid-append - every complete line before it still loads.
|
|
177
|
+
*/
|
|
178
|
+
readCollectionMetadata() {
|
|
179
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
180
|
+
const lines = yield new FileManager_1.default().ReadLines(this.collectionMetaPath);
|
|
181
|
+
const byName = new Map();
|
|
182
|
+
for (const line of lines) {
|
|
183
|
+
try {
|
|
184
|
+
const entry = JSON.parse(line);
|
|
185
|
+
if (entry === null || entry === void 0 ? void 0 : entry.name) {
|
|
186
|
+
byName.set(entry.name, entry);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
catch (_a) {
|
|
190
|
+
continue;
|
|
169
191
|
}
|
|
170
|
-
const UpdatedData = FullData.filter((data) => data.name !== collectionName);
|
|
171
|
-
yield FileManagement.WriteFile(`${this.path}/collection.meta`, JSON.stringify(UpdatedData));
|
|
172
|
-
return this.ResponseHelper.Success(`Collection metadata for ${collectionName} dropped successfully`);
|
|
173
192
|
}
|
|
193
|
+
return [...byName.values()];
|
|
174
194
|
});
|
|
175
195
|
}
|
|
176
196
|
/**
|
|
@@ -180,31 +200,17 @@ class Database {
|
|
|
180
200
|
* @returns A Promise that resolves when the operation is complete, or rejects with an error if the collection metadata format is invalid
|
|
181
201
|
* @private
|
|
182
202
|
*
|
|
183
|
-
*
|
|
184
|
-
*
|
|
185
|
-
*
|
|
186
|
-
* 3. If the file exists, reads the existing metadata, adds the new collection metadata (if not already present), and writes back to the file
|
|
187
|
-
*
|
|
188
|
-
* @throws {Error} If the collection metadata format is invalid
|
|
203
|
+
* Appends one JSONL line for a collection that isn't registered yet - the entries already
|
|
204
|
+
* on disk are never rewritten. The existence check keeps `createCollection()` on an
|
|
205
|
+
* existing collection (which is idempotent) from growing the file on every call.
|
|
189
206
|
*/
|
|
190
207
|
AddCollectionMetadata(collectionData) {
|
|
191
208
|
return __awaiter(this, void 0, void 0, function* () {
|
|
192
|
-
const
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
yield FileManagement.WriteFile(`${this.path}/collection.meta`, JSON.stringify([collectionData]));
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
const FullData = JSON.parse((yield FileManagement.ReadFile(`${this.path}/collection.meta`)).data);
|
|
199
|
-
if (!Array.isArray(FullData)) {
|
|
200
|
-
return new response_helper_1.default().Error("Invalid collection metadata format");
|
|
201
|
-
}
|
|
202
|
-
const isSameExist = FullData.filter((data) => data.name === collectionData.name);
|
|
203
|
-
if (isSameExist.length == 0) {
|
|
204
|
-
FullData.push(collectionData);
|
|
205
|
-
yield FileManagement.WriteFile(`${this.path}/collection.meta`, JSON.stringify(FullData));
|
|
206
|
-
}
|
|
209
|
+
const existing = yield this.readCollectionMetadata();
|
|
210
|
+
if (existing.some((data) => data.name === collectionData.name)) {
|
|
211
|
+
return;
|
|
207
212
|
}
|
|
213
|
+
yield new FileManager_1.default().AppendFile(this.collectionMetaPath, `${JSON.stringify(collectionData)}\n`);
|
|
208
214
|
});
|
|
209
215
|
}
|
|
210
216
|
/**
|
|
@@ -214,25 +220,11 @@ class Database {
|
|
|
214
220
|
* @returns A Promise that resolves to the collection's metadata if found, or undefined if not found
|
|
215
221
|
* @private
|
|
216
222
|
*
|
|
217
|
-
*
|
|
218
|
-
* 1. Checks if the collection.meta file exists
|
|
219
|
-
* 2. Reads and parses the metadata file if it exists
|
|
220
|
-
* 3. Validates that the data is an array
|
|
221
|
-
* 4. Finds and returns the metadata for the specified collection
|
|
223
|
+
* Returns undefined when the registry has no line for that collection.
|
|
222
224
|
*/
|
|
223
225
|
getCollectionMetaDetails(collectionName) {
|
|
224
226
|
return __awaiter(this, void 0, void 0, function* () {
|
|
225
|
-
|
|
226
|
-
const isFileExist = yield FileManagement.FileExists(`${this.path}/collection.meta`);
|
|
227
|
-
if (isFileExist.status == false) {
|
|
228
|
-
return undefined;
|
|
229
|
-
}
|
|
230
|
-
const FullData = JSON.parse((yield FileManagement.ReadFile(`${this.path}/collection.meta`)).data);
|
|
231
|
-
if (!Array.isArray(FullData)) {
|
|
232
|
-
return undefined;
|
|
233
|
-
}
|
|
234
|
-
const collectionMeta = FullData.find((data) => data.name === collectionName);
|
|
235
|
-
return collectionMeta;
|
|
227
|
+
return (yield this.readCollectionMetadata()).find((data) => data.name === collectionName);
|
|
236
228
|
});
|
|
237
229
|
}
|
|
238
230
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.operation.js","sourceRoot":"","sources":["../../../source/Services/Database/database.operation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,uDAAuD;AACvD,8FAA4D;AAC5D,sFAA8D;AAC9D,0FAAkE;AAClE,gDAAwB;AACxB,mFAA0D;AAC1D,6FAA8D;AAC9D,6DAA2D;AAM3D,0DAAsD;AACtD,oEAAyD;
|
|
1
|
+
{"version":3,"file":"database.operation.js","sourceRoot":"","sources":["../../../source/Services/Database/database.operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,129 +17,60 @@ export declare class IndexManager {
|
|
|
17
17
|
readonly converter: Converter;
|
|
18
18
|
readonly ResponseHelper: ResponseHelper;
|
|
19
19
|
constructor(path: string);
|
|
20
|
+
/**
|
|
21
|
+
* Serialize IndexData shape for JSONL file storage.
|
|
22
|
+
* Line 1 = header (fieldName + sortedValues), remaining lines = one per indexEntries key.
|
|
23
|
+
*
|
|
24
|
+
* Example output:
|
|
25
|
+
* {"h":1,"f":"email","s":[]}
|
|
26
|
+
* {"k":"alice@x.com","v":["abc123.axiodb"]}
|
|
27
|
+
*/
|
|
28
|
+
static serializeIndexData(indexData: {
|
|
29
|
+
fieldName: string;
|
|
30
|
+
indexEntries: Record<string, string[]>;
|
|
31
|
+
sortedValues?: number[];
|
|
32
|
+
}): string;
|
|
33
|
+
/**
|
|
34
|
+
* Deserialize JSONL lines back into an IndexData object.
|
|
35
|
+
* Expects first line to be the header: { h:1, f, s }.
|
|
36
|
+
*/
|
|
37
|
+
static deserializeIndexData(lines: string[]): {
|
|
38
|
+
fieldName: string;
|
|
39
|
+
indexEntries: Record<string, string[]>;
|
|
40
|
+
sortedValues: number[];
|
|
41
|
+
} | null;
|
|
20
42
|
/**
|
|
21
43
|
* Create one or more index files and register them in the index metadata.
|
|
22
44
|
*
|
|
23
45
|
* For each supplied field name this method:
|
|
24
|
-
* 1. Determines the index file path as `${indexName}.
|
|
46
|
+
* 1. Determines the index file path as `${indexName}.jsonl` inside the configured index folder.
|
|
25
47
|
* 2. Checks whether the index file already exists. If it does not, creates the file with an empty
|
|
26
|
-
* index structure (
|
|
27
|
-
* 3.
|
|
28
|
-
* field does not already exist, appends a metadata record `{ indexFieldName, fileName, path }`
|
|
29
|
-
* and writes the metadata file back.
|
|
30
|
-
*
|
|
31
|
-
* Side effects:
|
|
32
|
-
* - Writes new index files to disk via `fileManager.WriteFile`.
|
|
33
|
-
* - Reads and updates the index metadata file via `fileManager.ReadFile` / `WriteFile`.
|
|
34
|
-
* - Uses the configured `converter` to serialize/deserialize index and metadata content.
|
|
35
|
-
*
|
|
36
|
-
* Notes:
|
|
37
|
-
* - The operation is not atomic: some indexes may be created while others fail. The method will
|
|
38
|
-
* collect created and failed index names and include them in the returned response.
|
|
39
|
-
* - A failure is recorded for a field when the index file already exists, when the index already
|
|
40
|
-
* exists in the metadata, or when reading/writing the metadata file fails.
|
|
41
|
-
* - The method relies on `indexFolderPath`, `indexMetaPath`, `fileManager`, and `converter`
|
|
42
|
-
* being correctly configured and available on the instance.
|
|
48
|
+
* JSONL index structure (header + no entries).
|
|
49
|
+
* 3. Appends a JSONL line to `index.meta.jsonl` for each new index — no read-modify-rewrite.
|
|
43
50
|
*
|
|
44
|
-
*
|
|
45
|
-
* @returns A promise that resolves to either:
|
|
46
|
-
* - SuccessInterface: indicates which indexes were created and which already existed / failed,
|
|
47
|
-
* typically containing a human-readable message listing affected and existing indexes.
|
|
48
|
-
* - ErrorInterface: returned when underlying file/IO operations fail in a way that prevents
|
|
49
|
-
* producing the expected success response.
|
|
50
|
-
*
|
|
51
|
-
* @example
|
|
52
|
-
* // Create a single index
|
|
53
|
-
* await service.createIndex('email');
|
|
54
|
-
*
|
|
55
|
-
* @example
|
|
56
|
-
* // Create multiple indexes
|
|
57
|
-
* await service.createIndex('email', 'username', 'createdAt');
|
|
51
|
+
* Creates are now O(1) appends instead of O(N) full-file rewrites for meta.
|
|
58
52
|
*/
|
|
59
53
|
createIndex(...fieldNames: string[]): Promise<SuccessInterface | undefined>;
|
|
60
54
|
/**
|
|
61
55
|
* Deletes an index file and removes its entry from the index metadata.
|
|
62
|
-
*
|
|
63
|
-
* This asynchronous method attempts to delete the index file located at
|
|
64
|
-
* `${this.indexFolderPath}/${indexName}.axiodb`. If the file exists it is removed,
|
|
65
|
-
* and the index metadata file at `this.indexMetaPath` is read and updated by
|
|
66
|
-
* filtering out the metadata entry whose `indexFieldName` matches `indexName`.
|
|
67
|
-
* The metadata update is performed only if the metadata file can be read successfully.
|
|
68
|
-
*
|
|
69
|
-
* @param indexName - The name of the index to delete (without extension).
|
|
70
|
-
* @returns A Promise that resolves to a SuccessInterface when the index was deleted
|
|
71
|
-
* (and metadata updated when possible), or an ErrorInterface when the
|
|
72
|
-
* specified index does not exist.
|
|
73
|
-
*
|
|
74
|
-
* @async
|
|
75
|
-
* @remarks
|
|
76
|
-
* - Side effects: removes a file from the file system and may modify the index metadata file.
|
|
77
|
-
* - Uses injected helpers: `fileManager` for filesystem operations, `converter` for
|
|
78
|
-
* (de)serialization of metadata, and `ResponseHelper` to construct the returned result.
|
|
79
|
-
* - If the metadata file cannot be read, the method still succeeds after deleting the index file.
|
|
80
|
-
*
|
|
81
|
-
* @throws {Error} May propagate errors from underlying file operations if those utilities throw.
|
|
82
56
|
*/
|
|
83
57
|
dropIndex(indexName: string): Promise<SuccessInterface | ErrorInterface>;
|
|
84
58
|
/**
|
|
85
59
|
* Lists all indexes currently registered for this collection.
|
|
86
|
-
*
|
|
87
|
-
* Reads the index metadata file (`index.meta.json`) and returns its parsed entries as-is —
|
|
88
|
-
* this is a pure read of the same metadata `createIndex`/`dropIndex` already maintain, no new
|
|
89
|
-
* storage format is introduced.
|
|
90
|
-
*
|
|
91
|
-
* @returns A promise that resolves to a SuccessInterface containing the list of index metadata
|
|
92
|
-
* entries (`{ indexFieldName, fileName, path }`), or an ErrorInterface if the metadata
|
|
93
|
-
* file could not be read.
|
|
94
|
-
*
|
|
95
|
-
* @example
|
|
96
|
-
* const result = await service.listIndexes();
|
|
60
|
+
* Now uses streaming ReadLines for memory efficiency.
|
|
97
61
|
*/
|
|
98
62
|
listIndexes(): Promise<SuccessInterface | ErrorInterface>;
|
|
99
63
|
/**
|
|
100
64
|
* Ensures the index folder and the index metadata file exist, creating them if necessary.
|
|
101
|
-
*
|
|
102
|
-
* This asynchronous method performs the following steps:
|
|
103
|
-
* 1. Checks whether the index folder at `this.indexFolderPath` exists; if not, creates it.
|
|
104
|
-
* 2. Checks whether the index metadata file at `this.indexMetaPath` exists; if not:
|
|
105
|
-
* a. Constructs a default index metadata entry for a unique "documentId" index:
|
|
106
|
-
* - indexFieldName: "documentId"
|
|
107
|
-
* - fileName: "documentId.axiodb"
|
|
108
|
-
* - path: `${this.indexFolderPath}/documentId.axiodb`
|
|
109
|
-
* - unique: true
|
|
110
|
-
* b. Calls `this.createIndex("documentId")` to create the underlying index file/structure.
|
|
111
|
-
* c. Writes the metadata array to `this.indexMetaPath` using `this.converter.ToString(...)`.
|
|
112
|
-
*
|
|
113
|
-
* The operation is idempotent: if the folder or metadata file already exist, no changes are made.
|
|
114
|
-
*
|
|
115
|
-
* @remarks
|
|
116
|
-
* - This method performs filesystem modifications via `folderManager` and `fileManager`.
|
|
117
|
-
* - Any errors thrown by `folderManager`, `fileManager`, `converter`, or `createIndex` will propagate to the caller.
|
|
118
|
-
* - Callers should `await` this method to ensure the initialization is complete before proceeding.
|
|
119
|
-
*
|
|
120
|
-
* @returns A Promise that resolves when initialization is complete.
|
|
121
|
-
*
|
|
122
|
-
* @throws Will reject if directory creation, file checks/writes, conversion, or index creation fails.
|
|
123
|
-
*
|
|
124
|
-
* @example
|
|
125
|
-
* // Ensure index folder and metadata exist before using the index service
|
|
126
|
-
* await indexService.generateIndexMeta();
|
|
127
65
|
*/
|
|
128
66
|
generateIndexMeta(): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* Streams index.meta.jsonl lines into an array of IndexMetaEntry objects.
|
|
69
|
+
*/
|
|
70
|
+
private listMetaEntries;
|
|
129
71
|
/**
|
|
130
72
|
* Finds index metadata entries that correspond to properties present on the provided document.
|
|
131
|
-
*
|
|
132
|
-
* Reads the index metadata file at `this.indexMetaPath`, converts its content into an object,
|
|
133
|
-
* and returns the subset of metadata entries whose `indexFieldName` is an own property of `doc`.
|
|
134
|
-
*
|
|
135
|
-
* @param doc - The document to check for matching index fields. The function tests own properties
|
|
136
|
-
* (via `Object.prototype.hasOwnProperty.call`) rather than inherited properties.
|
|
137
|
-
* @returns A Promise that resolves to an array of matching index metadata entries, or `undefined`
|
|
138
|
-
* if the index metadata file could not be successfully read. The array may be empty if
|
|
139
|
-
* no metadata entries match.
|
|
140
|
-
*
|
|
141
|
-
* @throws May propagate errors from `fileManager.ReadFile` or `converter.ToObject` if those
|
|
142
|
-
* operations throw or reject.
|
|
73
|
+
* Streams meta file, returns first match (doesn't parse the entire file).
|
|
143
74
|
*/
|
|
144
75
|
protected findMatchingIndexMeta(doc: any): Promise<any[] | undefined>;
|
|
145
76
|
}
|