@talkpilot/core-db 1.3.42 → 1.3.44
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/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/test-utils/factories/websitalk/knowledgeDocuments.d.ts +1 -1
- package/dist/test-utils/factories/websitalk/knowledgeDocuments.d.ts.map +1 -1
- package/dist/test-utils/factories/websitalk/knowledgeDocuments.js +4 -4
- package/dist/test-utils/factories/websitalk/knowledgeDocuments.js.map +1 -1
- package/dist/websitalk/knowledgeDocuments/index.d.ts +1 -1
- package/dist/websitalk/knowledgeDocuments/index.d.ts.map +1 -1
- package/dist/websitalk/knowledgeDocuments/index.js +1 -1
- package/dist/websitalk/knowledgeDocuments/index.js.map +1 -1
- package/dist/websitalk/knowledgeDocuments/knowledgeDocuments.constants.d.ts +3 -2
- package/dist/websitalk/knowledgeDocuments/knowledgeDocuments.constants.d.ts.map +1 -1
- package/dist/websitalk/knowledgeDocuments/knowledgeDocuments.constants.js +4 -1
- package/dist/websitalk/knowledgeDocuments/knowledgeDocuments.constants.js.map +1 -1
- package/dist/websitalk/knowledgeDocuments/knowledgeDocuments.getters.d.ts.map +1 -1
- package/dist/websitalk/knowledgeDocuments/knowledgeDocuments.getters.js +6 -14
- package/dist/websitalk/knowledgeDocuments/knowledgeDocuments.getters.js.map +1 -1
- package/dist/websitalk/knowledgeDocuments/knowledgeDocuments.types.d.ts +9 -5
- package/dist/websitalk/knowledgeDocuments/knowledgeDocuments.types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +3 -1
- package/src/test-utils/factories/websitalk/knowledgeDocuments.ts +4 -3
- package/src/websitalk/knowledgeDocuments/__tests__/knowledgeDocuments.spec.ts +87 -5
- package/src/websitalk/knowledgeDocuments/index.ts +1 -1
- package/src/websitalk/knowledgeDocuments/knowledgeDocuments.constants.ts +3 -5
- package/src/websitalk/knowledgeDocuments/knowledgeDocuments.getters.ts +6 -14
- package/src/websitalk/knowledgeDocuments/knowledgeDocuments.types.ts +30 -6
package/dist/index.d.ts
CHANGED
|
@@ -13,7 +13,9 @@ export { websitalkMongodbClient, getDb as getWebsitalkDb, setDb as setWebsitalkD
|
|
|
13
13
|
export * from "./websitalk/scans/scans.getters";
|
|
14
14
|
export type * from "./websitalk/scans/scans.types";
|
|
15
15
|
export * from "./websitalk/websiteUrls";
|
|
16
|
-
export * from "./websitalk/knowledgeDocuments";
|
|
16
|
+
export * from "./websitalk/knowledgeDocuments/knowledgeDocuments.constants";
|
|
17
|
+
export * from "./websitalk/knowledgeDocuments/knowledgeDocuments.getters";
|
|
18
|
+
export type * from "./websitalk/knowledgeDocuments/knowledgeDocuments.types";
|
|
17
19
|
export { configurationMongodbClient, getDb as getConfigurationDb, setDb as setConfigurationDb, } from "./configuration";
|
|
18
20
|
export * from "./configuration/prompts";
|
|
19
21
|
export * from "./configuration/models";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAE5B,OAAO,EACL,0BAA0B,EAC1B,KAAK,IAAI,kBAAkB,EAC3B,KAAK,IAAI,kBAAkB,EAC3B,QAAQ,IAAI,qBAAqB,GAClC,MAAM,aAAa,CAAC;AACrB,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AACpC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AAExC,OAAO,EACL,sBAAsB,EACtB,KAAK,IAAI,cAAc,EACvB,KAAK,IAAI,cAAc,EACvB,QAAQ,IAAI,iBAAiB,GAC9B,MAAM,aAAa,CAAC;AACrB,cAAc,iCAAiC,CAAC;AAChD,mBAAmB,+BAA+B,CAAC;AACnD,cAAc,yBAAyB,CAAC;AACxC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAE5B,OAAO,EACL,0BAA0B,EAC1B,KAAK,IAAI,kBAAkB,EAC3B,KAAK,IAAI,kBAAkB,EAC3B,QAAQ,IAAI,qBAAqB,GAClC,MAAM,aAAa,CAAC;AACrB,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AACpC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AAExC,OAAO,EACL,sBAAsB,EACtB,KAAK,IAAI,cAAc,EACvB,KAAK,IAAI,cAAc,EACvB,QAAQ,IAAI,iBAAiB,GAC9B,MAAM,aAAa,CAAC;AACrB,cAAc,iCAAiC,CAAC;AAChD,mBAAmB,+BAA+B,CAAC;AACnD,cAAc,yBAAyB,CAAC;AACxC,cAAc,6DAA6D,CAAC;AAC5E,cAAc,2DAA2D,CAAC;AAC1E,mBAAmB,yDAAyD,CAAC;AAE7E,OAAO,EACL,0BAA0B,EAC1B,KAAK,IAAI,kBAAkB,EAC3B,KAAK,IAAI,kBAAkB,GAC5B,MAAM,iBAAiB,CAAC;AACzB,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,YAAY,EAAE,qBAAqB,IAAI,WAAW,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,mBAAmB,IAAI,cAAc,EAAE,MAAM,SAAS,CAAC;AAChE,YAAY,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -38,7 +38,8 @@ Object.defineProperty(exports, "setWebsitalkDb", { enumerable: true, get: functi
|
|
|
38
38
|
Object.defineProperty(exports, "WebsitalkObjectId", { enumerable: true, get: function () { return websitalk_1.ObjectId; } });
|
|
39
39
|
__exportStar(require("./websitalk/scans/scans.getters"), exports);
|
|
40
40
|
__exportStar(require("./websitalk/websiteUrls"), exports);
|
|
41
|
-
__exportStar(require("./websitalk/knowledgeDocuments"), exports);
|
|
41
|
+
__exportStar(require("./websitalk/knowledgeDocuments/knowledgeDocuments.constants"), exports);
|
|
42
|
+
__exportStar(require("./websitalk/knowledgeDocuments/knowledgeDocuments.getters"), exports);
|
|
42
43
|
var configuration_1 = require("./configuration");
|
|
43
44
|
Object.defineProperty(exports, "configurationMongodbClient", { enumerable: true, get: function () { return configuration_1.configurationMongodbClient; } });
|
|
44
45
|
Object.defineProperty(exports, "getConfigurationDb", { enumerable: true, get: function () { return configuration_1.getDb; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,uBAAuB;AACvB,8CAA4B;AAC5B,+CAA6B;AAC7B,8CAA4B;AAE5B,yCAKqB;AAJnB,uHAAA,0BAA0B,OAAA;AAC1B,+GAAA,KAAK,OAAsB;AAC3B,+GAAA,KAAK,OAAsB;AAC3B,kHAAA,QAAQ,OAAyB;AAEnC,qDAAmC;AACnC,sDAAoC;AACpC,kEAAgD;AAChD,sDAAoC;AACpC,iEAA+C;AAC/C,yDAAuC;AACvC,0DAAwC;AAExC,yCAKqB;AAJnB,mHAAA,sBAAsB,OAAA;AACtB,2GAAA,KAAK,OAAkB;AACvB,2GAAA,KAAK,OAAkB;AACvB,8GAAA,QAAQ,OAAqB;AAE/B,kEAAgD;AAEhD,0DAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,uBAAuB;AACvB,8CAA4B;AAC5B,+CAA6B;AAC7B,8CAA4B;AAE5B,yCAKqB;AAJnB,uHAAA,0BAA0B,OAAA;AAC1B,+GAAA,KAAK,OAAsB;AAC3B,+GAAA,KAAK,OAAsB;AAC3B,kHAAA,QAAQ,OAAyB;AAEnC,qDAAmC;AACnC,sDAAoC;AACpC,kEAAgD;AAChD,sDAAoC;AACpC,iEAA+C;AAC/C,yDAAuC;AACvC,0DAAwC;AAExC,yCAKqB;AAJnB,mHAAA,sBAAsB,OAAA;AACtB,2GAAA,KAAK,OAAkB;AACvB,2GAAA,KAAK,OAAkB;AACvB,8GAAA,QAAQ,OAAqB;AAE/B,kEAAgD;AAEhD,0DAAwC;AACxC,8FAA4E;AAC5E,4FAA0E;AAG1E,iDAIyB;AAHvB,2HAAA,0BAA0B,OAAA;AAC1B,mHAAA,KAAK,OAAsB;AAC3B,mHAAA,KAAK,OAAsB;AAE7B,0DAAwC;AACxC,yDAAuC;AACvC,iEAA+C;AAE/C,mCAAmC;AAA1B,mGAAA,QAAQ,OAAA;AAGjB,mCAAgE;AAAvD,yGAAA,mBAAmB,OAAkB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Factory } from "fishery";
|
|
2
|
-
import {
|
|
2
|
+
import type { KnowledgeDocument } from "../../../websitalk/knowledgeDocuments/knowledgeDocuments.types";
|
|
3
3
|
export declare const knowledgeDocumentFactory: Factory<KnowledgeDocument, any, KnowledgeDocument, import("fishery").DeepPartialObject<KnowledgeDocument>>;
|
|
4
4
|
export declare function createKnowledgeDocumentFixture(overrides?: Partial<KnowledgeDocument>): KnowledgeDocument;
|
|
5
5
|
//# sourceMappingURL=knowledgeDocuments.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledgeDocuments.d.ts","sourceRoot":"","sources":["../../../../src/test-utils/factories/websitalk/knowledgeDocuments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"knowledgeDocuments.d.ts","sourceRoot":"","sources":["../../../../src/test-utils/factories/websitalk/knowledgeDocuments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAOlC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gEAAgE,CAAC;AAExG,eAAO,MAAM,wBAAwB,4GAapC,CAAC;AAEF,wBAAgB,8BAA8B,CAC5C,SAAS,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACrC,iBAAiB,CAEnB"}
|
|
@@ -4,15 +4,15 @@ exports.knowledgeDocumentFactory = void 0;
|
|
|
4
4
|
exports.createKnowledgeDocumentFixture = createKnowledgeDocumentFixture;
|
|
5
5
|
const fishery_1 = require("fishery");
|
|
6
6
|
const faker_1 = require("@faker-js/faker");
|
|
7
|
-
const
|
|
7
|
+
const knowledgeDocuments_constants_1 = require("../../../websitalk/knowledgeDocuments/knowledgeDocuments.constants");
|
|
8
8
|
exports.knowledgeDocumentFactory = fishery_1.Factory.define(() => ({
|
|
9
9
|
clientId: faker_1.faker.string.uuid(),
|
|
10
10
|
filename: `${faker_1.faker.system.fileName()}.pdf`,
|
|
11
|
-
contentType:
|
|
12
|
-
fileType:
|
|
11
|
+
contentType: knowledgeDocuments_constants_1.KNOWLEDGE_CONTENT_TYPES.PDF,
|
|
12
|
+
fileType: knowledgeDocuments_constants_1.KNOWLEDGE_FILE_TYPES.PDF,
|
|
13
13
|
storagePath: `websitalk/knowledge_files/${faker_1.faker.string.uuid()}/original.pdf`,
|
|
14
14
|
byteSize: faker_1.faker.number.int({ min: 1024, max: 5_000_000 }),
|
|
15
|
-
status:
|
|
15
|
+
status: knowledgeDocuments_constants_1.KNOWLEDGE_DOCUMENT_STATUSES.UPLOADING,
|
|
16
16
|
progressPercent: 0,
|
|
17
17
|
createdAt: new Date(),
|
|
18
18
|
updatedAt: new Date(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledgeDocuments.js","sourceRoot":"","sources":["../../../../src/test-utils/factories/websitalk/knowledgeDocuments.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"knowledgeDocuments.js","sourceRoot":"","sources":["../../../../src/test-utils/factories/websitalk/knowledgeDocuments.ts"],"names":[],"mappings":";;;AAwBA,wEAIC;AA5BD,qCAAkC;AAClC,2CAAwC;AACxC,qHAI4E;AAG/D,QAAA,wBAAwB,GAAG,iBAAO,CAAC,MAAM,CACpD,GAAG,EAAE,CAAC,CAAC;IACL,QAAQ,EAAE,aAAK,CAAC,MAAM,CAAC,IAAI,EAAE;IAC7B,QAAQ,EAAE,GAAG,aAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM;IAC1C,WAAW,EAAE,sDAAuB,CAAC,GAAG;IACxC,QAAQ,EAAE,mDAAoB,CAAC,GAAG;IAClC,WAAW,EAAE,6BAA6B,aAAK,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe;IAC5E,QAAQ,EAAE,aAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;IACzD,MAAM,EAAE,0DAA2B,CAAC,SAAS;IAC7C,eAAe,EAAE,CAAC;IAClB,SAAS,EAAE,IAAI,IAAI,EAAE;IACrB,SAAS,EAAE,IAAI,IAAI,EAAE;CACtB,CAAC,CACH,CAAC;AAEF,SAAgB,8BAA8B,CAC5C,SAAsC;IAEtC,OAAO,gCAAwB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/websitalk/knowledgeDocuments/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/websitalk/knowledgeDocuments/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC"}
|
|
@@ -15,6 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./knowledgeDocuments.constants"), exports);
|
|
18
|
-
__exportStar(require("./knowledgeDocuments.types"), exports);
|
|
19
18
|
__exportStar(require("./knowledgeDocuments.getters"), exports);
|
|
19
|
+
__exportStar(require("./knowledgeDocuments.types"), exports);
|
|
20
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/websitalk/knowledgeDocuments/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iEAA+C;AAC/C,6DAA2C
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/websitalk/knowledgeDocuments/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iEAA+C;AAC/C,+DAA6C;AAC7C,6DAA2C"}
|
|
@@ -6,9 +6,10 @@ export declare const KNOWLEDGE_DOCUMENT_STATUSES: {
|
|
|
6
6
|
readonly READY: "READY";
|
|
7
7
|
readonly FAILED: "FAILED";
|
|
8
8
|
};
|
|
9
|
-
export type KnowledgeDocumentStatus = (typeof KNOWLEDGE_DOCUMENT_STATUSES)[keyof typeof KNOWLEDGE_DOCUMENT_STATUSES];
|
|
10
9
|
export declare const KNOWLEDGE_FILE_TYPES: {
|
|
11
10
|
readonly PDF: "pdf";
|
|
12
11
|
};
|
|
13
|
-
export
|
|
12
|
+
export declare const KNOWLEDGE_CONTENT_TYPES: {
|
|
13
|
+
readonly PDF: "application/pdf";
|
|
14
|
+
};
|
|
14
15
|
//# sourceMappingURL=knowledgeDocuments.constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledgeDocuments.constants.d.ts","sourceRoot":"","sources":["../../../src/websitalk/knowledgeDocuments/knowledgeDocuments.constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,8BAA8B,uBAAuB,CAAC;AAEnE,eAAO,MAAM,2BAA2B;;;;;;CAM9B,CAAC;AAEX,
|
|
1
|
+
{"version":3,"file":"knowledgeDocuments.constants.d.ts","sourceRoot":"","sources":["../../../src/websitalk/knowledgeDocuments/knowledgeDocuments.constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,8BAA8B,uBAAuB,CAAC;AAEnE,eAAO,MAAM,2BAA2B;;;;;;CAM9B,CAAC;AAEX,eAAO,MAAM,oBAAoB;;CAEvB,CAAC;AAEX,eAAO,MAAM,uBAAuB;;CAE1B,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.KNOWLEDGE_FILE_TYPES = exports.KNOWLEDGE_DOCUMENT_STATUSES = exports.KNOWLEDGE_DOCUMENTS_COLLECTION = void 0;
|
|
3
|
+
exports.KNOWLEDGE_CONTENT_TYPES = exports.KNOWLEDGE_FILE_TYPES = exports.KNOWLEDGE_DOCUMENT_STATUSES = exports.KNOWLEDGE_DOCUMENTS_COLLECTION = void 0;
|
|
4
4
|
exports.KNOWLEDGE_DOCUMENTS_COLLECTION = "knowledgeDocuments";
|
|
5
5
|
exports.KNOWLEDGE_DOCUMENT_STATUSES = {
|
|
6
6
|
UPLOADING: "UPLOADING",
|
|
@@ -12,4 +12,7 @@ exports.KNOWLEDGE_DOCUMENT_STATUSES = {
|
|
|
12
12
|
exports.KNOWLEDGE_FILE_TYPES = {
|
|
13
13
|
PDF: "pdf",
|
|
14
14
|
};
|
|
15
|
+
exports.KNOWLEDGE_CONTENT_TYPES = {
|
|
16
|
+
PDF: "application/pdf",
|
|
17
|
+
};
|
|
15
18
|
//# sourceMappingURL=knowledgeDocuments.constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledgeDocuments.constants.js","sourceRoot":"","sources":["../../../src/websitalk/knowledgeDocuments/knowledgeDocuments.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,8BAA8B,GAAG,oBAAoB,CAAC;AAEtD,QAAA,2BAA2B,GAAG;IACzC,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;CACR,CAAC;
|
|
1
|
+
{"version":3,"file":"knowledgeDocuments.constants.js","sourceRoot":"","sources":["../../../src/websitalk/knowledgeDocuments/knowledgeDocuments.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,8BAA8B,GAAG,oBAAoB,CAAC;AAEtD,QAAA,2BAA2B,GAAG;IACzC,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;CACR,CAAC;AAEE,QAAA,oBAAoB,GAAG;IAClC,GAAG,EAAE,KAAK;CACF,CAAC;AAEE,QAAA,uBAAuB,GAAG;IACrC,GAAG,EAAE,iBAAiB;CACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledgeDocuments.getters.d.ts","sourceRoot":"","sources":["../../../src/websitalk/knowledgeDocuments/knowledgeDocuments.getters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,SAAS,CAAC;AAMhE,OAAO,KAAK,EACV,4BAA4B,EAC5B,iBAAiB,EACjB,oBAAoB,EACpB,4BAA4B,EAC7B,MAAM,4BAA4B,CAAC;AAEpC,eAAO,MAAM,+BAA+B,QAAO,UAAU,CAAC,iBAAiB,CAE9E,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,OAAO,4BAA4B,KAClC,OAAO,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"knowledgeDocuments.getters.d.ts","sourceRoot":"","sources":["../../../src/websitalk/knowledgeDocuments/knowledgeDocuments.getters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,SAAS,CAAC;AAMhE,OAAO,KAAK,EACV,4BAA4B,EAC5B,iBAAiB,EACjB,oBAAoB,EACpB,4BAA4B,EAC7B,MAAM,4BAA4B,CAAC;AAEpC,eAAO,MAAM,+BAA+B,QAAO,UAAU,CAAC,iBAAiB,CAE9E,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,OAAO,4BAA4B,KAClC,OAAO,CAAC,aAAa,CAYvB,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,IAAI,MAAM,KACT,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAErC,CAAC;AAEF,eAAO,MAAM,gCAAgC,GAC3C,UAAU,MAAM,KACf,OAAO,CAAC,oBAAoB,EAAE,CAKhC,CAAC;AAEF,eAAO,MAAM,uCAAuC,GAClD,UAAU,MAAM,KACf,OAAO,CAAC,MAAM,EAAE,CASlB,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,IAAI,MAAM,EACV,SAAS,4BAA4B,KACpC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAMrC,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAU,IAAI,MAAM,KAAG,OAAO,CAAC,OAAO,CAKzE,CAAC"}
|
|
@@ -9,21 +9,12 @@ const getKnowledgeDocumentsCollection = () => {
|
|
|
9
9
|
exports.getKnowledgeDocumentsCollection = getKnowledgeDocumentsCollection;
|
|
10
10
|
const createKnowledgeDocument = async (input) => {
|
|
11
11
|
const now = new Date();
|
|
12
|
+
const { status, progressPercent, _id, ...rest } = input;
|
|
12
13
|
const { insertedId } = await (0, exports.getKnowledgeDocumentsCollection)().insertOne({
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
storagePath: input.storagePath,
|
|
18
|
-
markdownStoragePath: input.markdownStoragePath,
|
|
19
|
-
byteSize: input.byteSize,
|
|
20
|
-
pageCount: input.pageCount,
|
|
21
|
-
pagesExtracted: input.pagesExtracted,
|
|
22
|
-
charCount: input.charCount,
|
|
23
|
-
contentHash: input.contentHash,
|
|
24
|
-
status: input.status ?? knowledgeDocuments_constants_1.KNOWLEDGE_DOCUMENT_STATUSES.UPLOADING,
|
|
25
|
-
errorMessage: input.errorMessage,
|
|
26
|
-
progressPercent: input.progressPercent ?? 0,
|
|
14
|
+
...(_id ? { _id } : {}),
|
|
15
|
+
...rest,
|
|
16
|
+
status: status ?? knowledgeDocuments_constants_1.KNOWLEDGE_DOCUMENT_STATUSES.UPLOADING,
|
|
17
|
+
progressPercent: progressPercent ?? 0,
|
|
27
18
|
createdAt: now,
|
|
28
19
|
updatedAt: now,
|
|
29
20
|
});
|
|
@@ -44,6 +35,7 @@ exports.listKnowledgeDocumentsByClientId = listKnowledgeDocumentsByClientId;
|
|
|
44
35
|
const listReadyKnowledgeDocumentIdsByClientId = async (clientId) => {
|
|
45
36
|
const docs = await (0, exports.getKnowledgeDocumentsCollection)()
|
|
46
37
|
.find({ clientId, status: knowledgeDocuments_constants_1.KNOWLEDGE_DOCUMENT_STATUSES.READY }, { projection: { _id: 1 } })
|
|
38
|
+
.sort({ createdAt: -1 })
|
|
47
39
|
.toArray();
|
|
48
40
|
return docs.map((doc) => doc._id.toString());
|
|
49
41
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledgeDocuments.getters.js","sourceRoot":"","sources":["../../../src/websitalk/knowledgeDocuments/knowledgeDocuments.getters.ts"],"names":[],"mappings":";;;AACA,oCAA2C;AAC3C,iFAGwC;AAQjC,MAAM,+BAA+B,GAAG,GAAkC,EAAE;IACjF,OAAO,IAAA,aAAK,GAAE,CAAC,UAAU,CAAoB,6DAA8B,CAAC,CAAC;AAC/E,CAAC,CAAC;AAFW,QAAA,+BAA+B,mCAE1C;AAEK,MAAM,uBAAuB,GAAG,KAAK,EAC1C,KAAmC,EACX,EAAE;IAC1B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"knowledgeDocuments.getters.js","sourceRoot":"","sources":["../../../src/websitalk/knowledgeDocuments/knowledgeDocuments.getters.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import { ObjectId } from "mongodb";
|
|
2
|
-
import type {
|
|
1
|
+
import { ObjectId as MongoObjectId } from "mongodb";
|
|
2
|
+
import type { KNOWLEDGE_CONTENT_TYPES, KNOWLEDGE_DOCUMENT_STATUSES, KNOWLEDGE_FILE_TYPES } from "./knowledgeDocuments.constants";
|
|
3
|
+
export type KnowledgeDocumentStatus = (typeof KNOWLEDGE_DOCUMENT_STATUSES)[keyof typeof KNOWLEDGE_DOCUMENT_STATUSES];
|
|
4
|
+
export type KnowledgeFileType = (typeof KNOWLEDGE_FILE_TYPES)[keyof typeof KNOWLEDGE_FILE_TYPES];
|
|
5
|
+
export type KnowledgeContentType = (typeof KNOWLEDGE_CONTENT_TYPES)[keyof typeof KNOWLEDGE_CONTENT_TYPES];
|
|
3
6
|
export type KnowledgeDocument = {
|
|
4
7
|
clientId: string;
|
|
5
8
|
filename: string;
|
|
6
|
-
contentType:
|
|
9
|
+
contentType: KnowledgeContentType;
|
|
7
10
|
fileType: KnowledgeFileType;
|
|
8
11
|
storagePath: string;
|
|
9
12
|
markdownStoragePath?: string;
|
|
@@ -19,11 +22,12 @@ export type KnowledgeDocument = {
|
|
|
19
22
|
updatedAt: Date;
|
|
20
23
|
};
|
|
21
24
|
export type KnowledgeDocumentDoc = KnowledgeDocument & {
|
|
22
|
-
_id:
|
|
25
|
+
_id: MongoObjectId;
|
|
23
26
|
};
|
|
24
27
|
export type CreateKnowledgeDocumentInput = Omit<KnowledgeDocument, "createdAt" | "updatedAt" | "progressPercent" | "status"> & {
|
|
25
28
|
status?: KnowledgeDocumentStatus;
|
|
26
29
|
progressPercent?: number;
|
|
30
|
+
_id?: MongoObjectId;
|
|
27
31
|
};
|
|
28
|
-
export type UpdateKnowledgeDocumentInput = Partial<
|
|
32
|
+
export type UpdateKnowledgeDocumentInput = Partial<Pick<KnowledgeDocument, "storagePath" | "markdownStoragePath" | "byteSize" | "pageCount" | "pagesExtracted" | "charCount" | "contentHash" | "status" | "errorMessage" | "progressPercent">>;
|
|
29
33
|
//# sourceMappingURL=knowledgeDocuments.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledgeDocuments.types.d.ts","sourceRoot":"","sources":["../../../src/websitalk/knowledgeDocuments/knowledgeDocuments.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"knowledgeDocuments.types.d.ts","sourceRoot":"","sources":["../../../src/websitalk/knowledgeDocuments/knowledgeDocuments.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,SAAS,CAAC;AAEpD,OAAO,KAAK,EACV,uBAAuB,EACvB,2BAA2B,EAC3B,oBAAoB,EACrB,MAAM,gCAAgC,CAAC;AAExC,MAAM,MAAM,uBAAuB,GACjC,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,OAAO,2BAA2B,CAAC,CAAC;AAEjF,MAAM,MAAM,iBAAiB,GAC3B,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,OAAO,oBAAoB,CAAC,CAAC;AAEnE,MAAM,MAAM,oBAAoB,GAC9B,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,OAAO,uBAAuB,CAAC,CAAC;AAEzE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,oBAAoB,CAAC;IAClC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,uBAAuB,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAAG;IAAE,GAAG,EAAE,aAAa,CAAA;CAAE,CAAC;AAE9E,MAAM,MAAM,4BAA4B,GAAG,IAAI,CAC7C,iBAAiB,EACjB,WAAW,GAAG,WAAW,GAAG,iBAAiB,GAAG,QAAQ,CACzD,GAAG;IACF,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,aAAa,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAChD,IAAI,CACF,iBAAiB,EACf,aAAa,GACb,qBAAqB,GACrB,UAAU,GACV,WAAW,GACX,gBAAgB,GAChB,WAAW,GACX,aAAa,GACb,QAAQ,GACR,cAAc,GACd,iBAAiB,CACpB,CACF,CAAC"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -26,7 +26,9 @@ export {
|
|
|
26
26
|
export * from "./websitalk/scans/scans.getters";
|
|
27
27
|
export type * from "./websitalk/scans/scans.types";
|
|
28
28
|
export * from "./websitalk/websiteUrls";
|
|
29
|
-
export * from "./websitalk/knowledgeDocuments";
|
|
29
|
+
export * from "./websitalk/knowledgeDocuments/knowledgeDocuments.constants";
|
|
30
|
+
export * from "./websitalk/knowledgeDocuments/knowledgeDocuments.getters";
|
|
31
|
+
export type * from "./websitalk/knowledgeDocuments/knowledgeDocuments.types";
|
|
30
32
|
|
|
31
33
|
export {
|
|
32
34
|
configurationMongodbClient,
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { Factory } from "fishery";
|
|
2
2
|
import { faker } from "@faker-js/faker";
|
|
3
3
|
import {
|
|
4
|
+
KNOWLEDGE_CONTENT_TYPES,
|
|
4
5
|
KNOWLEDGE_DOCUMENT_STATUSES,
|
|
5
6
|
KNOWLEDGE_FILE_TYPES,
|
|
6
|
-
|
|
7
|
-
} from "../../../websitalk/knowledgeDocuments";
|
|
7
|
+
} from "../../../websitalk/knowledgeDocuments/knowledgeDocuments.constants";
|
|
8
|
+
import type { KnowledgeDocument } from "../../../websitalk/knowledgeDocuments/knowledgeDocuments.types";
|
|
8
9
|
|
|
9
10
|
export const knowledgeDocumentFactory = Factory.define<KnowledgeDocument>(
|
|
10
11
|
() => ({
|
|
11
12
|
clientId: faker.string.uuid(),
|
|
12
13
|
filename: `${faker.system.fileName()}.pdf`,
|
|
13
|
-
contentType:
|
|
14
|
+
contentType: KNOWLEDGE_CONTENT_TYPES.PDF,
|
|
14
15
|
fileType: KNOWLEDGE_FILE_TYPES.PDF,
|
|
15
16
|
storagePath: `websitalk/knowledge_files/${faker.string.uuid()}/original.pdf`,
|
|
16
17
|
byteSize: faker.number.int({ min: 1024, max: 5_000_000 }),
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
+
KNOWLEDGE_CONTENT_TYPES,
|
|
2
3
|
KNOWLEDGE_DOCUMENT_STATUSES,
|
|
3
4
|
KNOWLEDGE_FILE_TYPES,
|
|
4
5
|
} from "../knowledgeDocuments.constants";
|
|
@@ -15,13 +16,14 @@ import { createKnowledgeDocumentFixture } from "../../../test-utils/factories/we
|
|
|
15
16
|
|
|
16
17
|
describe("db.websitalk.knowledgeDocuments", () => {
|
|
17
18
|
const clientId = "test-client";
|
|
19
|
+
const nonExistentId = "507f1f77bcf86cd799439011";
|
|
18
20
|
|
|
19
21
|
describe("createKnowledgeDocument", () => {
|
|
20
22
|
it("should create a knowledge document", async () => {
|
|
21
23
|
const id = await createKnowledgeDocument({
|
|
22
24
|
clientId,
|
|
23
25
|
filename: "faq.pdf",
|
|
24
|
-
contentType:
|
|
26
|
+
contentType: KNOWLEDGE_CONTENT_TYPES.PDF,
|
|
25
27
|
fileType: KNOWLEDGE_FILE_TYPES.PDF,
|
|
26
28
|
storagePath: "websitalk/knowledge_files/test/faq.pdf",
|
|
27
29
|
byteSize: 2048,
|
|
@@ -38,6 +40,27 @@ describe("db.websitalk.knowledgeDocuments", () => {
|
|
|
38
40
|
expect(saved?.createdAt).toBeInstanceOf(Date);
|
|
39
41
|
expect(saved?.updatedAt).toBeInstanceOf(Date);
|
|
40
42
|
});
|
|
43
|
+
|
|
44
|
+
it("should create a knowledge document with a preset _id", async () => {
|
|
45
|
+
const presetId = new (await import("mongodb")).ObjectId();
|
|
46
|
+
const id = await createKnowledgeDocument({
|
|
47
|
+
_id: presetId,
|
|
48
|
+
clientId,
|
|
49
|
+
filename: "preset.pdf",
|
|
50
|
+
contentType: KNOWLEDGE_CONTENT_TYPES.PDF,
|
|
51
|
+
fileType: KNOWLEDGE_FILE_TYPES.PDF,
|
|
52
|
+
storagePath: `websitalk/knowledge_files/test/${presetId.toString()}/original.pdf`,
|
|
53
|
+
byteSize: 512,
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
expect(id.toString()).toBe(presetId.toString());
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
describe("getKnowledgeDocumentById", () => {
|
|
61
|
+
it("should throw for an invalid id", async () => {
|
|
62
|
+
await expect(getKnowledgeDocumentById("invalid-id")).rejects.toThrow();
|
|
63
|
+
});
|
|
41
64
|
});
|
|
42
65
|
|
|
43
66
|
describe("listKnowledgeDocumentsByClientId", () => {
|
|
@@ -58,14 +81,45 @@ describe("db.websitalk.knowledgeDocuments", () => {
|
|
|
58
81
|
"b.pdf",
|
|
59
82
|
]);
|
|
60
83
|
});
|
|
84
|
+
|
|
85
|
+
it("should return documents sorted by createdAt descending", async () => {
|
|
86
|
+
await getKnowledgeDocumentsCollection().insertMany([
|
|
87
|
+
createKnowledgeDocumentFixture({
|
|
88
|
+
clientId,
|
|
89
|
+
filename: "older.pdf",
|
|
90
|
+
createdAt: new Date("2024-01-01"),
|
|
91
|
+
updatedAt: new Date("2024-01-01"),
|
|
92
|
+
}),
|
|
93
|
+
createKnowledgeDocumentFixture({
|
|
94
|
+
clientId,
|
|
95
|
+
filename: "newer.pdf",
|
|
96
|
+
createdAt: new Date("2024-06-01"),
|
|
97
|
+
updatedAt: new Date("2024-06-01"),
|
|
98
|
+
}),
|
|
99
|
+
]);
|
|
100
|
+
|
|
101
|
+
const results = await listKnowledgeDocumentsByClientId(clientId);
|
|
102
|
+
expect(results.map((doc) => doc.filename)).toEqual([
|
|
103
|
+
"newer.pdf",
|
|
104
|
+
"older.pdf",
|
|
105
|
+
]);
|
|
106
|
+
});
|
|
61
107
|
});
|
|
62
108
|
|
|
63
109
|
describe("listReadyKnowledgeDocumentIdsByClientId", () => {
|
|
64
|
-
it("should return only READY document ids", async () => {
|
|
110
|
+
it("should return only READY document ids sorted by createdAt descending", async () => {
|
|
65
111
|
await getKnowledgeDocumentsCollection().insertMany([
|
|
66
112
|
createKnowledgeDocumentFixture({
|
|
67
113
|
clientId,
|
|
68
114
|
status: KNOWLEDGE_DOCUMENT_STATUSES.READY,
|
|
115
|
+
createdAt: new Date("2024-01-01"),
|
|
116
|
+
updatedAt: new Date("2024-01-01"),
|
|
117
|
+
}),
|
|
118
|
+
createKnowledgeDocumentFixture({
|
|
119
|
+
clientId,
|
|
120
|
+
status: KNOWLEDGE_DOCUMENT_STATUSES.READY,
|
|
121
|
+
createdAt: new Date("2024-06-01"),
|
|
122
|
+
updatedAt: new Date("2024-06-01"),
|
|
69
123
|
}),
|
|
70
124
|
createKnowledgeDocumentFixture({
|
|
71
125
|
clientId,
|
|
@@ -77,8 +131,15 @@ describe("db.websitalk.knowledgeDocuments", () => {
|
|
|
77
131
|
}),
|
|
78
132
|
]);
|
|
79
133
|
|
|
134
|
+
const readyDocs = await getKnowledgeDocumentsCollection()
|
|
135
|
+
.find({ clientId, status: KNOWLEDGE_DOCUMENT_STATUSES.READY })
|
|
136
|
+
.sort({ createdAt: -1 })
|
|
137
|
+
.toArray();
|
|
138
|
+
const expectedIds = readyDocs.map((doc) => doc._id.toString());
|
|
139
|
+
|
|
80
140
|
const ids = await listReadyKnowledgeDocumentIdsByClientId(clientId);
|
|
81
|
-
expect(ids).toHaveLength(
|
|
141
|
+
expect(ids).toHaveLength(2);
|
|
142
|
+
expect(ids).toEqual(expectedIds);
|
|
82
143
|
});
|
|
83
144
|
});
|
|
84
145
|
|
|
@@ -87,21 +148,38 @@ describe("db.websitalk.knowledgeDocuments", () => {
|
|
|
87
148
|
const id = await createKnowledgeDocument({
|
|
88
149
|
clientId,
|
|
89
150
|
filename: "doc.pdf",
|
|
90
|
-
contentType:
|
|
151
|
+
contentType: KNOWLEDGE_CONTENT_TYPES.PDF,
|
|
91
152
|
fileType: KNOWLEDGE_FILE_TYPES.PDF,
|
|
92
153
|
storagePath: "websitalk/knowledge_files/test/doc.pdf",
|
|
93
154
|
byteSize: 100,
|
|
94
155
|
});
|
|
95
156
|
|
|
157
|
+
const before = await getKnowledgeDocumentById(id.toString());
|
|
158
|
+
|
|
96
159
|
const updated = await updateKnowledgeDocument(id.toString(), {
|
|
97
160
|
status: KNOWLEDGE_DOCUMENT_STATUSES.READY,
|
|
98
161
|
progressPercent: 100,
|
|
99
162
|
pageCount: 12,
|
|
163
|
+
byteSize: 2048,
|
|
164
|
+
storagePath: "websitalk/knowledge_files/test/doc-updated.pdf",
|
|
100
165
|
});
|
|
101
166
|
|
|
102
167
|
expect(updated?.status).toBe(KNOWLEDGE_DOCUMENT_STATUSES.READY);
|
|
103
168
|
expect(updated?.progressPercent).toBe(100);
|
|
104
169
|
expect(updated?.pageCount).toBe(12);
|
|
170
|
+
expect(updated?.byteSize).toBe(2048);
|
|
171
|
+
expect(updated?.storagePath).toBe("websitalk/knowledge_files/test/doc-updated.pdf");
|
|
172
|
+
expect(updated?.updatedAt.getTime()).toBeGreaterThanOrEqual(
|
|
173
|
+
before!.updatedAt.getTime(),
|
|
174
|
+
);
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
it("should return null when the document does not exist", async () => {
|
|
178
|
+
expect(
|
|
179
|
+
await updateKnowledgeDocument(nonExistentId, {
|
|
180
|
+
status: KNOWLEDGE_DOCUMENT_STATUSES.READY,
|
|
181
|
+
}),
|
|
182
|
+
).toBeNull();
|
|
105
183
|
});
|
|
106
184
|
});
|
|
107
185
|
|
|
@@ -110,7 +188,7 @@ describe("db.websitalk.knowledgeDocuments", () => {
|
|
|
110
188
|
const id = await createKnowledgeDocument({
|
|
111
189
|
clientId: "delete-client",
|
|
112
190
|
filename: "gone.pdf",
|
|
113
|
-
contentType:
|
|
191
|
+
contentType: KNOWLEDGE_CONTENT_TYPES.PDF,
|
|
114
192
|
fileType: KNOWLEDGE_FILE_TYPES.PDF,
|
|
115
193
|
storagePath: "websitalk/knowledge_files/delete/gone.pdf",
|
|
116
194
|
byteSize: 10,
|
|
@@ -119,5 +197,9 @@ describe("db.websitalk.knowledgeDocuments", () => {
|
|
|
119
197
|
expect(await deleteKnowledgeDocument(id.toString())).toBe(true);
|
|
120
198
|
expect(await getKnowledgeDocumentById(id.toString())).toBeNull();
|
|
121
199
|
});
|
|
200
|
+
|
|
201
|
+
it("should return false when the document does not exist", async () => {
|
|
202
|
+
expect(await deleteKnowledgeDocument(nonExistentId)).toBe(false);
|
|
203
|
+
});
|
|
122
204
|
});
|
|
123
205
|
});
|
|
@@ -8,12 +8,10 @@ export const KNOWLEDGE_DOCUMENT_STATUSES = {
|
|
|
8
8
|
FAILED: "FAILED",
|
|
9
9
|
} as const;
|
|
10
10
|
|
|
11
|
-
export type KnowledgeDocumentStatus =
|
|
12
|
-
(typeof KNOWLEDGE_DOCUMENT_STATUSES)[keyof typeof KNOWLEDGE_DOCUMENT_STATUSES];
|
|
13
|
-
|
|
14
11
|
export const KNOWLEDGE_FILE_TYPES = {
|
|
15
12
|
PDF: "pdf",
|
|
16
13
|
} as const;
|
|
17
14
|
|
|
18
|
-
export
|
|
19
|
-
|
|
15
|
+
export const KNOWLEDGE_CONTENT_TYPES = {
|
|
16
|
+
PDF: "application/pdf",
|
|
17
|
+
} as const;
|
|
@@ -19,21 +19,12 @@ export const createKnowledgeDocument = async (
|
|
|
19
19
|
input: CreateKnowledgeDocumentInput,
|
|
20
20
|
): Promise<MongoObjectId> => {
|
|
21
21
|
const now = new Date();
|
|
22
|
+
const { status, progressPercent, _id, ...rest } = input;
|
|
22
23
|
const { insertedId } = await getKnowledgeDocumentsCollection().insertOne({
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
storagePath: input.storagePath,
|
|
28
|
-
markdownStoragePath: input.markdownStoragePath,
|
|
29
|
-
byteSize: input.byteSize,
|
|
30
|
-
pageCount: input.pageCount,
|
|
31
|
-
pagesExtracted: input.pagesExtracted,
|
|
32
|
-
charCount: input.charCount,
|
|
33
|
-
contentHash: input.contentHash,
|
|
34
|
-
status: input.status ?? KNOWLEDGE_DOCUMENT_STATUSES.UPLOADING,
|
|
35
|
-
errorMessage: input.errorMessage,
|
|
36
|
-
progressPercent: input.progressPercent ?? 0,
|
|
24
|
+
...(_id ? { _id } : {}),
|
|
25
|
+
...rest,
|
|
26
|
+
status: status ?? KNOWLEDGE_DOCUMENT_STATUSES.UPLOADING,
|
|
27
|
+
progressPercent: progressPercent ?? 0,
|
|
37
28
|
createdAt: now,
|
|
38
29
|
updatedAt: now,
|
|
39
30
|
});
|
|
@@ -63,6 +54,7 @@ export const listReadyKnowledgeDocumentIdsByClientId = async (
|
|
|
63
54
|
{ clientId, status: KNOWLEDGE_DOCUMENT_STATUSES.READY },
|
|
64
55
|
{ projection: { _id: 1 } },
|
|
65
56
|
)
|
|
57
|
+
.sort({ createdAt: -1 })
|
|
66
58
|
.toArray();
|
|
67
59
|
return docs.map((doc) => doc._id.toString());
|
|
68
60
|
};
|
|
@@ -1,13 +1,24 @@
|
|
|
1
|
-
import { ObjectId } from "mongodb";
|
|
1
|
+
import { ObjectId as MongoObjectId } from "mongodb";
|
|
2
|
+
|
|
2
3
|
import type {
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
KNOWLEDGE_CONTENT_TYPES,
|
|
5
|
+
KNOWLEDGE_DOCUMENT_STATUSES,
|
|
6
|
+
KNOWLEDGE_FILE_TYPES,
|
|
5
7
|
} from "./knowledgeDocuments.constants";
|
|
6
8
|
|
|
9
|
+
export type KnowledgeDocumentStatus =
|
|
10
|
+
(typeof KNOWLEDGE_DOCUMENT_STATUSES)[keyof typeof KNOWLEDGE_DOCUMENT_STATUSES];
|
|
11
|
+
|
|
12
|
+
export type KnowledgeFileType =
|
|
13
|
+
(typeof KNOWLEDGE_FILE_TYPES)[keyof typeof KNOWLEDGE_FILE_TYPES];
|
|
14
|
+
|
|
15
|
+
export type KnowledgeContentType =
|
|
16
|
+
(typeof KNOWLEDGE_CONTENT_TYPES)[keyof typeof KNOWLEDGE_CONTENT_TYPES];
|
|
17
|
+
|
|
7
18
|
export type KnowledgeDocument = {
|
|
8
19
|
clientId: string;
|
|
9
20
|
filename: string;
|
|
10
|
-
contentType:
|
|
21
|
+
contentType: KnowledgeContentType;
|
|
11
22
|
fileType: KnowledgeFileType;
|
|
12
23
|
storagePath: string;
|
|
13
24
|
markdownStoragePath?: string;
|
|
@@ -23,7 +34,7 @@ export type KnowledgeDocument = {
|
|
|
23
34
|
updatedAt: Date;
|
|
24
35
|
};
|
|
25
36
|
|
|
26
|
-
export type KnowledgeDocumentDoc = KnowledgeDocument & { _id:
|
|
37
|
+
export type KnowledgeDocumentDoc = KnowledgeDocument & { _id: MongoObjectId };
|
|
27
38
|
|
|
28
39
|
export type CreateKnowledgeDocumentInput = Omit<
|
|
29
40
|
KnowledgeDocument,
|
|
@@ -31,8 +42,21 @@ export type CreateKnowledgeDocumentInput = Omit<
|
|
|
31
42
|
> & {
|
|
32
43
|
status?: KnowledgeDocumentStatus;
|
|
33
44
|
progressPercent?: number;
|
|
45
|
+
_id?: MongoObjectId;
|
|
34
46
|
};
|
|
35
47
|
|
|
36
48
|
export type UpdateKnowledgeDocumentInput = Partial<
|
|
37
|
-
|
|
49
|
+
Pick<
|
|
50
|
+
KnowledgeDocument,
|
|
51
|
+
| "storagePath"
|
|
52
|
+
| "markdownStoragePath"
|
|
53
|
+
| "byteSize"
|
|
54
|
+
| "pageCount"
|
|
55
|
+
| "pagesExtracted"
|
|
56
|
+
| "charCount"
|
|
57
|
+
| "contentHash"
|
|
58
|
+
| "status"
|
|
59
|
+
| "errorMessage"
|
|
60
|
+
| "progressPercent"
|
|
61
|
+
>
|
|
38
62
|
>;
|