@talkpilot/core-db 1.3.5 → 1.3.7
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/.cursor/rules/development.mdc +65 -65
- package/DEVELOPMENT.md +141 -126
- package/README.md +190 -190
- package/README_OLD.md +160 -160
- package/dist/talkpilot/calls/calls.types.d.ts +5 -0
- package/dist/talkpilot/calls/calls.types.d.ts.map +1 -1
- package/dist/talkpilot/contextNotes/contextNotes.getters.d.ts +19 -0
- package/dist/talkpilot/contextNotes/contextNotes.getters.d.ts.map +1 -0
- package/dist/talkpilot/contextNotes/contextNotes.getters.js +57 -0
- package/dist/talkpilot/contextNotes/contextNotes.getters.js.map +1 -0
- package/dist/talkpilot/contextNotes/contextNotes.types.d.ts +19 -0
- package/dist/talkpilot/contextNotes/contextNotes.types.d.ts.map +1 -0
- package/dist/talkpilot/contextNotes/contextNotes.types.js +3 -0
- package/dist/talkpilot/contextNotes/contextNotes.types.js.map +1 -0
- package/dist/talkpilot/contextNotes/index.d.ts +3 -0
- package/dist/talkpilot/contextNotes/index.d.ts.map +1 -0
- package/dist/talkpilot/contextNotes/index.js +19 -0
- package/dist/talkpilot/contextNotes/index.js.map +1 -0
- package/dist/talkpilot/flows/flows.schema.d.ts +3 -0
- package/dist/talkpilot/flows/flows.schema.d.ts.map +1 -1
- package/dist/talkpilot/flows/flows.schema.js +1 -0
- package/dist/talkpilot/flows/flows.schema.js.map +1 -1
- package/dist/talkpilot/flows/flows.types.d.ts +2 -0
- package/dist/talkpilot/flows/flows.types.d.ts.map +1 -1
- package/dist/talkpilot/index.d.ts +2 -0
- package/dist/talkpilot/index.d.ts.map +1 -1
- package/dist/talkpilot/index.js +2 -0
- package/dist/talkpilot/index.js.map +1 -1
- package/dist/talkpilot/products/index.d.ts +3 -0
- package/dist/talkpilot/products/index.d.ts.map +1 -0
- package/dist/talkpilot/products/index.js +19 -0
- package/dist/talkpilot/products/index.js.map +1 -0
- package/dist/talkpilot/products/products.getters.d.ts +6 -0
- package/dist/talkpilot/products/products.getters.d.ts.map +1 -0
- package/dist/talkpilot/products/products.getters.js +14 -0
- package/dist/talkpilot/products/products.getters.js.map +1 -0
- package/dist/talkpilot/products/products.types.d.ts +9 -0
- package/dist/talkpilot/products/products.types.d.ts.map +1 -0
- package/dist/talkpilot/products/products.types.js +3 -0
- package/dist/talkpilot/products/products.types.js.map +1 -0
- package/dist/test-utils/factories/index.d.ts +1 -0
- package/dist/test-utils/factories/index.d.ts.map +1 -1
- package/dist/test-utils/factories/index.js +1 -0
- package/dist/test-utils/factories/index.js.map +1 -1
- package/dist/test-utils/factories/talkpilot/contextNotes.d.ts +16 -0
- package/dist/test-utils/factories/talkpilot/contextNotes.d.ts.map +1 -0
- package/dist/test-utils/factories/talkpilot/contextNotes.js +30 -0
- package/dist/test-utils/factories/talkpilot/contextNotes.js.map +1 -0
- package/jest.config.js +20 -19
- package/package.json +46 -46
- package/src/__tests__/setup.ts +20 -20
- package/src/connection.ts +54 -54
- package/src/index.ts +26 -26
- package/src/municipal/__tests__/validation.spec.ts +62 -62
- package/src/municipal/cities/cities.getters.ts +50 -50
- package/src/municipal/cities/cities.types.ts +11 -11
- package/src/municipal/cities/index.ts +2 -2
- package/src/municipal/departmentsSubjects/departmentsSubjects.getters.ts +282 -282
- package/src/municipal/departmentsSubjects/departmentsSubjects.types.ts +72 -72
- package/src/municipal/departmentsSubjects/index.ts +9 -9
- package/src/municipal/index.ts +22 -22
- package/src/municipal/mongodb-client.ts +61 -61
- package/src/municipal/muniIssues/__tests__/muniIssues.setters.spec.ts +92 -92
- package/src/municipal/muniIssues/__tests__/muniIssues.setup.spec.ts +92 -92
- package/src/municipal/muniIssues/index.ts +17 -17
- package/src/municipal/muniIssues/muniIssues.constants.ts +18 -18
- package/src/municipal/muniIssues/muniIssues.getters.ts +24 -24
- package/src/municipal/muniIssues/muniIssues.schema.ts +66 -66
- package/src/municipal/muniIssues/muniIssues.setters.ts +24 -24
- package/src/municipal/muniIssues/muniIssues.setup.ts +65 -65
- package/src/municipal/muniIssues/muniIssues.types.ts +37 -37
- package/src/municipal/streets/index.ts +2 -2
- package/src/municipal/streets/streets.getters.ts +125 -125
- package/src/municipal/streets/streets.types.ts +18 -18
- package/src/municipal/systemInstructions/__tests__/getters.spec.ts +113 -113
- package/src/municipal/systemInstructions/__tests__/setters.spec.ts +274 -274
- package/src/municipal/systemInstructions/index.ts +7 -7
- package/src/municipal/systemInstructions/instructions.getters.ts +57 -57
- package/src/municipal/systemInstructions/instructions.setters.ts +119 -119
- package/src/municipal/systemInstructions/instructions.types.ts +30 -30
- package/src/municipal/tickets/__tests__/tickets.getters.spec.ts +30 -30
- package/src/municipal/tickets/__tests__/tickets.statistics.spec.ts +51 -51
- package/src/municipal/tickets/index.ts +3 -3
- package/src/municipal/tickets/tickets.constants.ts +8 -8
- package/src/municipal/tickets/tickets.getters.ts +121 -121
- package/src/municipal/tickets/tickets.statistics.aggregation.ts +96 -96
- package/src/municipal/tickets/tickets.statistics.getters.ts +71 -71
- package/src/municipal/tickets/tickets.types.ts +53 -53
- package/src/municipal/utils/types.ts +11 -11
- package/src/talkpilot/__tests__/db.spec.ts +38 -38
- package/src/talkpilot/__tests__/mongodb-client.spec.ts +18 -18
- package/src/talkpilot/__tests__/validation.spec.ts +68 -68
- package/src/talkpilot/agents/__tests__/agents.getters.spec.ts +29 -29
- package/src/talkpilot/agents/agents.getters.ts +34 -34
- package/src/talkpilot/agents/agents.types.ts +14 -14
- package/src/talkpilot/agents/index.ts +2 -2
- package/src/talkpilot/backgroundToolResults/__tests__/backgroundToolResults.getters.spec.ts +147 -147
- package/src/talkpilot/backgroundToolResults/backgroundToolResults.getters.ts +65 -65
- package/src/talkpilot/backgroundToolResults/backgroundToolResults.types.ts +23 -23
- package/src/talkpilot/backgroundToolResults/index.ts +2 -2
- package/src/talkpilot/calls/__tests__/callStats.utils.spec.ts +128 -128
- package/src/talkpilot/calls/__tests__/calls.dashboard.spec.ts +149 -149
- package/src/talkpilot/calls/__tests__/calls.spec.ts +270 -270
- package/src/talkpilot/calls/__tests__/calls.statistics.spec.ts +344 -344
- package/src/talkpilot/calls/calls.constants.ts +20 -20
- package/src/talkpilot/calls/calls.getters.ts +248 -248
- package/src/talkpilot/calls/calls.statistics.getters.ts +587 -587
- package/src/talkpilot/calls/calls.statistics.types.ts +44 -44
- package/src/talkpilot/calls/calls.types.ts +119 -116
- package/src/talkpilot/calls/dashboard/calls.dashboard.ts +292 -292
- package/src/talkpilot/calls/dashboard/calls.dashboard.types.ts +57 -57
- package/src/talkpilot/calls/index.ts +6 -6
- package/src/talkpilot/clientAudioBuffers/__tests__/clientAudioBuffer.getters.spec.ts +160 -160
- package/src/talkpilot/clientAudioBuffers/clientAudioBuffer.getters.ts +117 -117
- package/src/talkpilot/clientAudioBuffers/clientsAudioBuffers.types.ts +25 -25
- package/src/talkpilot/clientAudioBuffers/index.ts +2 -2
- package/src/talkpilot/clients/clients.getters.ts +16 -16
- package/src/talkpilot/clients/clients.types.ts +14 -14
- package/src/talkpilot/clients/index.ts +2 -2
- package/src/talkpilot/clientsConfig/__tests__/clientsConfig.getters.spec.ts +53 -53
- package/src/talkpilot/clientsConfig/__tests__/clientsConfig.spec.ts +190 -190
- package/src/talkpilot/clientsConfig/clientsConfig.getters.ts +55 -55
- package/src/talkpilot/clientsConfig/clientsConfig.types.ts +127 -127
- package/src/talkpilot/clientsConfig/index.ts +2 -2
- package/src/talkpilot/contextNotes/__tests__/contextNotes.getters.spec.ts +176 -0
- package/src/talkpilot/contextNotes/contextNotes.getters.ts +86 -0
- package/src/talkpilot/contextNotes/contextNotes.types.ts +20 -0
- package/src/talkpilot/contextNotes/index.ts +2 -0
- package/src/talkpilot/flows/__tests__/flows.schema.spec.ts +96 -71
- package/src/talkpilot/flows/flows.getter.ts +14 -14
- package/src/talkpilot/flows/flows.schema.ts +154 -153
- package/src/talkpilot/flows/flows.types.ts +187 -184
- package/src/talkpilot/flows/index.ts +2 -2
- package/src/talkpilot/groups/__tests__/groups.spec.ts +90 -90
- package/src/talkpilot/groups/__tests__/phone.utils.spec.ts +32 -32
- package/src/talkpilot/groups/groups.getters.ts +30 -30
- package/src/talkpilot/groups/groups.types.ts +29 -29
- package/src/talkpilot/groups/index.ts +3 -3
- package/src/talkpilot/groups/phone.utils.ts +46 -46
- package/src/talkpilot/index.ts +31 -29
- package/src/talkpilot/leads/index.ts +2 -2
- package/src/talkpilot/leads/leads.getter.ts +6 -6
- package/src/talkpilot/leads/leads.schema.ts +33 -33
- package/src/talkpilot/leads/leads.types.ts +20 -20
- package/src/talkpilot/mongodb-client.ts +78 -78
- package/src/talkpilot/phone_numbers/__tests__/phone_numbers.spec.ts +252 -252
- package/src/talkpilot/phone_numbers/index.ts +2 -2
- package/src/talkpilot/phone_numbers/phone_numbers.getter.ts +158 -158
- package/src/talkpilot/phone_numbers/phone_numbers.schema.ts +17 -17
- package/src/talkpilot/phone_numbers/phone_numbers.types.ts +30 -30
- package/src/talkpilot/plans/__tests__/plans.spec.ts +70 -70
- package/src/talkpilot/plans/index.ts +2 -2
- package/src/talkpilot/plans/plans.getters.ts +132 -132
- package/src/talkpilot/plans/plans.types.ts +89 -89
- package/src/talkpilot/products/__tests__/products.getters.spec.ts +45 -0
- package/src/talkpilot/products/index.ts +2 -0
- package/src/talkpilot/products/products.getters.ts +12 -0
- package/src/talkpilot/products/products.types.ts +9 -0
- package/src/talkpilot/results/index.ts +7 -7
- package/src/talkpilot/results/results.getter.ts +39 -39
- package/src/talkpilot/results/results.schema.ts +25 -25
- package/src/talkpilot/results/results.types.ts +34 -34
- package/src/talkpilot/retry_analyze/__tests__/retryAnalyze.getters.spec.ts +156 -156
- package/src/talkpilot/retry_analyze/index.ts +2 -2
- package/src/talkpilot/retry_analyze/retryAnalyze.getters.ts +84 -84
- package/src/talkpilot/retry_analyze/retryAnalyze.types.ts +13 -13
- package/src/talkpilot/sessions/__tests__/sessions.spec.ts +147 -147
- package/src/talkpilot/sessions/index.ts +2 -2
- package/src/talkpilot/sessions/sessions.getter.ts +92 -92
- package/src/talkpilot/sessions/sessions.schema.ts +34 -34
- package/src/talkpilot/sessions/sessions.types.ts +30 -30
- package/src/talkpilot/subscriptions/__tests__/subscriptions.getters.utils.spec.ts +45 -45
- package/src/talkpilot/subscriptions/index.ts +3 -3
- package/src/talkpilot/subscriptions/subscriptions.getters.ts +146 -146
- package/src/talkpilot/subscriptions/subscriptions.getters.utils.ts +33 -33
- package/src/talkpilot/subscriptions/subscriptions.types.ts +66 -66
- package/src/talkpilot/utils/__tests__/query.utils.spec.ts +49 -49
- package/src/talkpilot/utils/query.utils.ts +21 -21
- package/src/test-utils/db-utils.ts +26 -26
- package/src/test-utils/factories/index.ts +15 -14
- package/src/test-utils/factories/municipal/cities.ts +16 -16
- package/src/test-utils/factories/municipal/departmentsSubjects.ts +37 -37
- package/src/test-utils/factories/municipal/muniIssues.ts +32 -32
- package/src/test-utils/factories/municipal/streets.ts +22 -22
- package/src/test-utils/factories/municipal/tickets.ts +39 -39
- package/src/test-utils/factories/talkpilot/agents.ts +19 -19
- package/src/test-utils/factories/talkpilot/calls.ts +37 -37
- package/src/test-utils/factories/talkpilot/clientAudioBuffers.ts +20 -20
- package/src/test-utils/factories/talkpilot/clientsConfig.ts +18 -18
- package/src/test-utils/factories/talkpilot/contextNotes.ts +33 -0
- package/src/test-utils/factories/talkpilot/flows.ts +33 -33
- package/src/test-utils/factories/talkpilot/groups.ts +33 -33
- package/src/test-utils/factories/talkpilot/phone_numbers.ts +22 -22
- package/src/test-utils/factories/talkpilot/sessions.ts +35 -35
- package/src/test-utils/factories/websitalk/scans.ts +23 -23
- package/src/utils/date.utils.ts +116 -116
- package/src/utils/shared.types.ts +4 -4
- package/src/utils/validation.ts +23 -23
- package/src/websitalk/index.ts +15 -15
- package/src/websitalk/mongodb-client.ts +61 -61
- package/src/websitalk/scans/__tests__/scans.spec.ts +218 -218
- package/src/websitalk/scans/index.ts +2 -2
- package/src/websitalk/scans/scans.getters.ts +113 -113
- package/src/websitalk/scans/scans.types.ts +53 -53
- package/tsconfig.json +23 -23
- package/.claude/settings.local.json +0 -11
- package/dist/municipal/tickets/tickets.deprecated.getters.d.ts +0 -12
- package/dist/municipal/tickets/tickets.deprecated.getters.d.ts.map +0 -1
- package/dist/municipal/tickets/tickets.deprecated.getters.js +0 -131
- package/dist/municipal/tickets/tickets.deprecated.getters.js.map +0 -1
- package/dist/municipal/tickets/tickets.statistics.dates.d.ts +0 -7
- package/dist/municipal/tickets/tickets.statistics.dates.d.ts.map +0 -1
- package/dist/municipal/tickets/tickets.statistics.dates.js +0 -40
- package/dist/municipal/tickets/tickets.statistics.dates.js.map +0 -1
- package/dist/municipal/tickets/tickets.statistics.pipeline.d.ts +0 -53
- package/dist/municipal/tickets/tickets.statistics.pipeline.d.ts.map +0 -1
- package/dist/municipal/tickets/tickets.statistics.pipeline.js +0 -112
- package/dist/municipal/tickets/tickets.statistics.pipeline.js.map +0 -1
- package/dist/municipal/tickets/tickets.statistics.utils.d.ts +0 -7
- package/dist/municipal/tickets/tickets.statistics.utils.d.ts.map +0 -1
- package/dist/municipal/tickets/tickets.statistics.utils.js +0 -40
- package/dist/municipal/tickets/tickets.statistics.utils.js.map +0 -1
- package/dist/talkpilot/calls/calls.statistics.ticketScope.d.ts +0 -12
- package/dist/talkpilot/calls/calls.statistics.ticketScope.d.ts.map +0 -1
- package/dist/talkpilot/calls/calls.statistics.ticketScope.js +0 -37
- package/dist/talkpilot/calls/calls.statistics.ticketScope.js.map +0 -1
- package/dist/talkpilot/calls/calls.statistics.tickets.d.ts +0 -17
- package/dist/talkpilot/calls/calls.statistics.tickets.d.ts.map +0 -1
- package/dist/talkpilot/calls/calls.statistics.tickets.js +0 -33
- package/dist/talkpilot/calls/calls.statistics.tickets.js.map +0 -1
- package/dist/utils/statistics.aggregation.d.ts +0 -20
- package/dist/utils/statistics.aggregation.d.ts.map +0 -1
- package/dist/utils/statistics.aggregation.js +0 -43
- package/dist/utils/statistics.aggregation.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/products/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./products.types"), exports);
|
|
18
|
+
__exportStar(require("./products.getters"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/talkpilot/products/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,qDAAmC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Collection, WithId } from "mongodb";
|
|
2
|
+
import type { Product } from "./products.types";
|
|
3
|
+
export declare const getProductsCollection: () => Collection<Product>;
|
|
4
|
+
/** Returns all product documents */
|
|
5
|
+
export declare const getAllProducts: () => Promise<WithId<Product>[]>;
|
|
6
|
+
//# sourceMappingURL=products.getters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"products.getters.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/products/products.getters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAE7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,eAAO,MAAM,qBAAqB,QAAO,UAAU,CAAC,OAAO,CAE1D,CAAC;AAEF,oCAAoC;AACpC,eAAO,MAAM,cAAc,QAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAE1D,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAllProducts = exports.getProductsCollection = void 0;
|
|
4
|
+
const index_1 = require("../index");
|
|
5
|
+
const getProductsCollection = () => {
|
|
6
|
+
return (0, index_1.getDb)().collection("products");
|
|
7
|
+
};
|
|
8
|
+
exports.getProductsCollection = getProductsCollection;
|
|
9
|
+
/** Returns all product documents */
|
|
10
|
+
const getAllProducts = () => {
|
|
11
|
+
return (0, exports.getProductsCollection)().find().toArray();
|
|
12
|
+
};
|
|
13
|
+
exports.getAllProducts = getAllProducts;
|
|
14
|
+
//# sourceMappingURL=products.getters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"products.getters.js","sourceRoot":"","sources":["../../../src/talkpilot/products/products.getters.ts"],"names":[],"mappings":";;;AACA,oCAAiC;AAG1B,MAAM,qBAAqB,GAAG,GAAwB,EAAE;IAC7D,OAAO,IAAA,aAAK,GAAE,CAAC,UAAU,CAAU,UAAU,CAAC,CAAC;AACjD,CAAC,CAAC;AAFW,QAAA,qBAAqB,yBAEhC;AAEF,oCAAoC;AAC7B,MAAM,cAAc,GAAG,GAA+B,EAAE;IAC7D,OAAO,IAAA,6BAAqB,GAAE,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AAClD,CAAC,CAAC;AAFW,QAAA,cAAc,kBAEzB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ObjectId } from "mongodb";
|
|
2
|
+
export type Product = {
|
|
3
|
+
_id: ObjectId;
|
|
4
|
+
/** Internal product name */
|
|
5
|
+
name: string;
|
|
6
|
+
/** Map from language name to display name, e.g. {en, Municipal} */
|
|
7
|
+
displayName?: Record<string, string>;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=products.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"products.types.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/products/products.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,MAAM,OAAO,GAAG;IACpB,GAAG,EAAE,QAAQ,CAAC;IACd,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"products.types.js","sourceRoot":"","sources":["../../../src/talkpilot/products/products.types.ts"],"names":[],"mappings":""}
|
|
@@ -3,6 +3,7 @@ export * from "./talkpilot/calls";
|
|
|
3
3
|
export * from "./talkpilot/clientAudioBuffers";
|
|
4
4
|
export * from "./talkpilot/clientsConfig";
|
|
5
5
|
export * from "./talkpilot/flows";
|
|
6
|
+
export * from "./talkpilot/contextNotes";
|
|
6
7
|
export * from "./talkpilot/groups";
|
|
7
8
|
export * from "./talkpilot/phone_numbers";
|
|
8
9
|
export * from "./talkpilot/sessions";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/test-utils/factories/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/test-utils/factories/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
|
|
@@ -19,6 +19,7 @@ __exportStar(require("./talkpilot/calls"), exports);
|
|
|
19
19
|
__exportStar(require("./talkpilot/clientAudioBuffers"), exports);
|
|
20
20
|
__exportStar(require("./talkpilot/clientsConfig"), exports);
|
|
21
21
|
__exportStar(require("./talkpilot/flows"), exports);
|
|
22
|
+
__exportStar(require("./talkpilot/contextNotes"), exports);
|
|
22
23
|
__exportStar(require("./talkpilot/groups"), exports);
|
|
23
24
|
__exportStar(require("./talkpilot/phone_numbers"), exports);
|
|
24
25
|
__exportStar(require("./talkpilot/sessions"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/test-utils/factories/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,oDAAkC;AAClC,iEAA+C;AAC/C,4DAA0C;AAC1C,oDAAkC;AAClC,qDAAmC;AACnC,4DAA0C;AAC1C,uDAAqC;AACrC,qDAAmC;AACnC,kEAAgD;AAChD,yDAAuC;AACvC,sDAAoC;AACpC,sDAAoC;AACpC,oDAAkC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/test-utils/factories/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,oDAAkC;AAClC,iEAA+C;AAC/C,4DAA0C;AAC1C,oDAAkC;AAClC,2DAAyC;AACzC,qDAAmC;AACnC,4DAA0C;AAC1C,uDAAqC;AACrC,qDAAmC;AACnC,kEAAgD;AAChD,yDAAuC;AACvC,sDAAoC;AACpC,sDAAoC;AACpC,oDAAkC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Factory } from "fishery";
|
|
2
|
+
import { ObjectId } from "mongodb";
|
|
3
|
+
import type { ContextNote, ContextNoteEntry } from "../../../talkpilot";
|
|
4
|
+
export declare const contextNoteEntryFactory: Factory<ContextNoteEntry, any, ContextNoteEntry, import("fishery").DeepPartialObject<ContextNoteEntry>>;
|
|
5
|
+
export declare const contextNoteFactory: Factory<ContextNote & {
|
|
6
|
+
_id: ObjectId;
|
|
7
|
+
}, any, ContextNote & {
|
|
8
|
+
_id: ObjectId;
|
|
9
|
+
}, import("fishery").DeepPartialObject<ContextNote & {
|
|
10
|
+
_id: ObjectId;
|
|
11
|
+
}>>;
|
|
12
|
+
export declare function createContextNoteEntry(overrides?: Partial<ContextNoteEntry>): ContextNoteEntry;
|
|
13
|
+
export declare function createContextNote(overrides?: Partial<ContextNote>): ContextNote & {
|
|
14
|
+
_id: ObjectId;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=contextNotes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextNotes.d.ts","sourceRoot":"","sources":["../../../../src/test-utils/factories/talkpilot/contextNotes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAExE,eAAO,MAAM,uBAAuB,yGAQjC,CAAC;AAEJ,eAAO,MAAM,kBAAkB;SAAuC,QAAQ;;SAAR,QAAQ;;SAAR,QAAQ;GAK3E,CAAC;AAEJ,wBAAgB,sBAAsB,CACpC,SAAS,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GACpC,gBAAgB,CAElB;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC/B,WAAW,GAAG;IAAE,GAAG,EAAE,QAAQ,CAAA;CAAE,CAEjC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.contextNoteFactory = exports.contextNoteEntryFactory = void 0;
|
|
4
|
+
exports.createContextNoteEntry = createContextNoteEntry;
|
|
5
|
+
exports.createContextNote = createContextNote;
|
|
6
|
+
const fishery_1 = require("fishery");
|
|
7
|
+
const mongodb_1 = require("mongodb");
|
|
8
|
+
const faker_1 = require("@faker-js/faker");
|
|
9
|
+
exports.contextNoteEntryFactory = fishery_1.Factory.define(() => ({
|
|
10
|
+
_id: new mongodb_1.ObjectId(),
|
|
11
|
+
title: faker_1.faker.lorem.words(3),
|
|
12
|
+
content: faker_1.faker.lorem.sentences(2),
|
|
13
|
+
activeFrom: new Date(),
|
|
14
|
+
expiresAt: null,
|
|
15
|
+
createdAt: new Date(),
|
|
16
|
+
updatedAt: new Date(),
|
|
17
|
+
}));
|
|
18
|
+
exports.contextNoteFactory = fishery_1.Factory.define(() => ({
|
|
19
|
+
_id: new mongodb_1.ObjectId(),
|
|
20
|
+
clientId: faker_1.faker.string.uuid(),
|
|
21
|
+
product: "Municipal",
|
|
22
|
+
notes: [],
|
|
23
|
+
}));
|
|
24
|
+
function createContextNoteEntry(overrides) {
|
|
25
|
+
return { ...exports.contextNoteEntryFactory.build(), ...overrides };
|
|
26
|
+
}
|
|
27
|
+
function createContextNote(overrides) {
|
|
28
|
+
return { ...exports.contextNoteFactory.build(), ...overrides };
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=contextNotes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextNotes.js","sourceRoot":"","sources":["../../../../src/test-utils/factories/talkpilot/contextNotes.ts"],"names":[],"mappings":";;;AAsBA,wDAIC;AAED,8CAIC;AAhCD,qCAAkC;AAClC,qCAAmC;AACnC,2CAAwC;AAG3B,QAAA,uBAAuB,GAAG,iBAAO,CAAC,MAAM,CAAmB,GAAG,EAAE,CAAC,CAAC;IAC7E,GAAG,EAAE,IAAI,kBAAQ,EAAE;IACnB,KAAK,EAAE,aAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3B,OAAO,EAAE,aAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACjC,UAAU,EAAE,IAAI,IAAI,EAAE;IACtB,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI,IAAI,EAAE;IACrB,SAAS,EAAE,IAAI,IAAI,EAAE;CACtB,CAAC,CAAC,CAAC;AAES,QAAA,kBAAkB,GAAG,iBAAO,CAAC,MAAM,CAAkC,GAAG,EAAE,CAAC,CAAC;IACvF,GAAG,EAAE,IAAI,kBAAQ,EAAE;IACnB,QAAQ,EAAE,aAAK,CAAC,MAAM,CAAC,IAAI,EAAE;IAC7B,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,EAAE;CACV,CAAC,CAAC,CAAC;AAEJ,SAAgB,sBAAsB,CACpC,SAAqC;IAErC,OAAO,EAAE,GAAG,+BAAuB,CAAC,KAAK,EAAE,EAAE,GAAG,SAAS,EAAsB,CAAC;AAClF,CAAC;AAED,SAAgB,iBAAiB,CAC/B,SAAgC;IAEhC,OAAO,EAAE,GAAG,0BAAkB,CAAC,KAAK,EAAE,EAAE,GAAG,SAAS,EAAqC,CAAC;AAC5F,CAAC"}
|
package/jest.config.js
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
/** @type {import('ts-jest').JestConfigWithTsJest} */
|
|
2
|
-
module.exports = {
|
|
3
|
-
preset: 'ts-jest',
|
|
4
|
-
testEnvironment: 'node',
|
|
5
|
-
roots: ['<rootDir>/src'],
|
|
6
|
-
testPathIgnorePatterns: ['<rootDir>/src/__tests__/legacy/'],
|
|
7
|
-
testMatch: ['**/__tests__/**/*.spec.ts', '**/*.spec.ts'],
|
|
8
|
-
transform: {
|
|
9
|
-
'^.+\\.tsx?$': ['ts-jest', {
|
|
10
|
-
tsconfig: 'tsconfig.json',
|
|
11
|
-
}],
|
|
12
|
-
},
|
|
13
|
-
setupFilesAfterEnv: ['<rootDir>/src/__tests__/setup.ts'],
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
1
|
+
/** @type {import('ts-jest').JestConfigWithTsJest} */
|
|
2
|
+
module.exports = {
|
|
3
|
+
preset: 'ts-jest',
|
|
4
|
+
testEnvironment: 'node',
|
|
5
|
+
roots: ['<rootDir>/src'],
|
|
6
|
+
testPathIgnorePatterns: ['<rootDir>/src/__tests__/legacy/'],
|
|
7
|
+
testMatch: ['**/__tests__/**/*.spec.ts', '**/*.spec.ts'],
|
|
8
|
+
transform: {
|
|
9
|
+
'^.+\\.tsx?$': ['ts-jest', {
|
|
10
|
+
tsconfig: 'tsconfig.json',
|
|
11
|
+
}],
|
|
12
|
+
},
|
|
13
|
+
setupFilesAfterEnv: ['<rootDir>/src/__tests__/setup.ts'],
|
|
14
|
+
maxWorkers: 1,
|
|
15
|
+
verbose: true,
|
|
16
|
+
forceExit: true,
|
|
17
|
+
clearMocks: true,
|
|
18
|
+
resetMocks: true,
|
|
19
|
+
restoreMocks: true,
|
|
20
|
+
};
|
package/package.json
CHANGED
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@talkpilot/core-db",
|
|
3
|
-
"version": "1.3.
|
|
4
|
-
"description": "Core database package for centralized connections and ORM integration.",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"types": "dist/index.d.ts",
|
|
7
|
-
"scripts": {
|
|
8
|
-
"build": "tsc",
|
|
9
|
-
"dev": "tsc --watch",
|
|
10
|
-
"test": "jest",
|
|
11
|
-
"lint": "eslint 'src/**/*.{ts,tsx}'",
|
|
12
|
-
"format": "prettier --write \"src/**/*.{ts,tsx}\"",
|
|
13
|
-
"prepare": "npm run build"
|
|
14
|
-
},
|
|
15
|
-
"keywords": [
|
|
16
|
-
"database",
|
|
17
|
-
"orm",
|
|
18
|
-
"typescript",
|
|
19
|
-
"postgres",
|
|
20
|
-
"db-client"
|
|
21
|
-
],
|
|
22
|
-
"author": "",
|
|
23
|
-
"license": "MIT",
|
|
24
|
-
"dependencies": {
|
|
25
|
-
"dayjs": "^1.11.21",
|
|
26
|
-
"express": "^4.18.0",
|
|
27
|
-
"google-libphonenumber": "^3.2.0",
|
|
28
|
-
"mongodb": "^6.11.0"
|
|
29
|
-
},
|
|
30
|
-
"devDependencies": {
|
|
31
|
-
"@faker-js/faker": "^8.0.0",
|
|
32
|
-
"@types/express": "^4.17.0",
|
|
33
|
-
"@types/google-libphonenumber": "^7.4.0",
|
|
34
|
-
"@types/jest": "^29.0.0",
|
|
35
|
-
"@types/node": "^20.0.0",
|
|
36
|
-
"fishery": "^2.4.0",
|
|
37
|
-
"jest": "^29.0.0",
|
|
38
|
-
"mongodb-memory-server": "^10.0.0",
|
|
39
|
-
"prettier": "^3.8.2",
|
|
40
|
-
"ts-jest": "^29.0.0",
|
|
41
|
-
"typescript": "^5.0.0"
|
|
42
|
-
},
|
|
43
|
-
"publishConfig": {
|
|
44
|
-
"access": "public"
|
|
45
|
-
}
|
|
46
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@talkpilot/core-db",
|
|
3
|
+
"version": "1.3.7",
|
|
4
|
+
"description": "Core database package for centralized connections and ORM integration.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "tsc",
|
|
9
|
+
"dev": "tsc --watch",
|
|
10
|
+
"test": "jest",
|
|
11
|
+
"lint": "eslint 'src/**/*.{ts,tsx}'",
|
|
12
|
+
"format": "prettier --write \"src/**/*.{ts,tsx}\"",
|
|
13
|
+
"prepare": "npm run build"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"database",
|
|
17
|
+
"orm",
|
|
18
|
+
"typescript",
|
|
19
|
+
"postgres",
|
|
20
|
+
"db-client"
|
|
21
|
+
],
|
|
22
|
+
"author": "",
|
|
23
|
+
"license": "MIT",
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"dayjs": "^1.11.21",
|
|
26
|
+
"express": "^4.18.0",
|
|
27
|
+
"google-libphonenumber": "^3.2.0",
|
|
28
|
+
"mongodb": "^6.11.0"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@faker-js/faker": "^8.0.0",
|
|
32
|
+
"@types/express": "^4.17.0",
|
|
33
|
+
"@types/google-libphonenumber": "^7.4.0",
|
|
34
|
+
"@types/jest": "^29.0.0",
|
|
35
|
+
"@types/node": "^20.0.0",
|
|
36
|
+
"fishery": "^2.4.0",
|
|
37
|
+
"jest": "^29.0.0",
|
|
38
|
+
"mongodb-memory-server": "^10.0.0",
|
|
39
|
+
"prettier": "^3.8.2",
|
|
40
|
+
"ts-jest": "^29.0.0",
|
|
41
|
+
"typescript": "^5.0.0"
|
|
42
|
+
},
|
|
43
|
+
"publishConfig": {
|
|
44
|
+
"access": "public"
|
|
45
|
+
}
|
|
46
|
+
}
|
package/src/__tests__/setup.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { initTestDb, closeTestDb } from "../test-utils/db-utils";
|
|
2
|
-
|
|
3
|
-
declare global {
|
|
4
|
-
// eslint-disable-next-line no-var
|
|
5
|
-
var db: import("mongodb").Db;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
// Set up global mocks if needed
|
|
9
|
-
// global.fetch = jest.fn();
|
|
10
|
-
|
|
11
|
-
beforeEach(async () => {
|
|
12
|
-
global.db = await initTestDb();
|
|
13
|
-
}, 30_000);
|
|
14
|
-
|
|
15
|
-
afterEach(async () => {
|
|
16
|
-
await closeTestDb();
|
|
17
|
-
jest.resetAllMocks();
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
process.env.NODE_ENV = "test";
|
|
1
|
+
import { initTestDb, closeTestDb } from "../test-utils/db-utils";
|
|
2
|
+
|
|
3
|
+
declare global {
|
|
4
|
+
// eslint-disable-next-line no-var
|
|
5
|
+
var db: import("mongodb").Db;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
// Set up global mocks if needed
|
|
9
|
+
// global.fetch = jest.fn();
|
|
10
|
+
|
|
11
|
+
beforeEach(async () => {
|
|
12
|
+
global.db = await initTestDb();
|
|
13
|
+
}, 30_000);
|
|
14
|
+
|
|
15
|
+
afterEach(async () => {
|
|
16
|
+
await closeTestDb();
|
|
17
|
+
jest.resetAllMocks();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
process.env.NODE_ENV = "test";
|
package/src/connection.ts
CHANGED
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
import { mongodbClient } from "./talkpilot";
|
|
2
|
-
import { municipalDataMongodbClient } from "./municipal";
|
|
3
|
-
import { websitalkMongodbClient } from "./websitalk";
|
|
4
|
-
|
|
5
|
-
let isConnected = false;
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Ensures the database clients are initialized.
|
|
9
|
-
* This function reads from MONGO_URI.
|
|
10
|
-
*/
|
|
11
|
-
export async function ensureDbConnected() {
|
|
12
|
-
if (isConnected) {
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const mongoUri = process.env.MONGO_URI || process.env.MONGODB_URI;
|
|
17
|
-
const talkpilotUri = mongoUri;
|
|
18
|
-
const municipalUri = mongoUri;
|
|
19
|
-
const websiteTalkUri = mongoUri;
|
|
20
|
-
|
|
21
|
-
if (!talkpilotUri) {
|
|
22
|
-
console.warn("[core-db] MONGO_URI is not set");
|
|
23
|
-
} else {
|
|
24
|
-
const dbNameFromUri = talkpilotUri.split("/").pop()?.split("?")[0];
|
|
25
|
-
const dbName = dbNameFromUri || process.env.TALKPILOT_DB_NAME;
|
|
26
|
-
await mongodbClient.connect(talkpilotUri, dbName);
|
|
27
|
-
console.info(
|
|
28
|
-
`[core-db] Connected to TalkPilot MongoDB: ${dbName || "via env"}`,
|
|
29
|
-
);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
if (!municipalUri) {
|
|
33
|
-
console.warn("[core-db] MONGO_URI is not set");
|
|
34
|
-
} else {
|
|
35
|
-
const dbNameFromUri = municipalUri.split("/").pop()?.split("?")[0];
|
|
36
|
-
const dbName = dbNameFromUri || process.env.MUNICIPAL_DB_NAME;
|
|
37
|
-
await municipalDataMongodbClient.connect(municipalUri, dbName);
|
|
38
|
-
console.info(
|
|
39
|
-
`[core-db] Connected to Municipal Data MongoDB: ${dbName || "via env"}`,
|
|
40
|
-
);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
if (!websiteTalkUri) {
|
|
44
|
-
console.warn("[core-db] MONGO_URI is not set");
|
|
45
|
-
} else {
|
|
46
|
-
const dbName = process.env.WEBSITALK_DB_NAME;
|
|
47
|
-
await websitalkMongodbClient.connect(websiteTalkUri, dbName);
|
|
48
|
-
console.info(
|
|
49
|
-
`[core-db] Connected to Website Talk MongoDB: ${dbName || "website-talk (default)"}`,
|
|
50
|
-
);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
isConnected = true;
|
|
54
|
-
}
|
|
1
|
+
import { mongodbClient } from "./talkpilot";
|
|
2
|
+
import { municipalDataMongodbClient } from "./municipal";
|
|
3
|
+
import { websitalkMongodbClient } from "./websitalk";
|
|
4
|
+
|
|
5
|
+
let isConnected = false;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Ensures the database clients are initialized.
|
|
9
|
+
* This function reads from MONGO_URI.
|
|
10
|
+
*/
|
|
11
|
+
export async function ensureDbConnected() {
|
|
12
|
+
if (isConnected) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const mongoUri = process.env.MONGO_URI || process.env.MONGODB_URI;
|
|
17
|
+
const talkpilotUri = mongoUri;
|
|
18
|
+
const municipalUri = mongoUri;
|
|
19
|
+
const websiteTalkUri = mongoUri;
|
|
20
|
+
|
|
21
|
+
if (!talkpilotUri) {
|
|
22
|
+
console.warn("[core-db] MONGO_URI is not set");
|
|
23
|
+
} else {
|
|
24
|
+
const dbNameFromUri = talkpilotUri.split("/").pop()?.split("?")[0];
|
|
25
|
+
const dbName = dbNameFromUri || process.env.TALKPILOT_DB_NAME;
|
|
26
|
+
await mongodbClient.connect(talkpilotUri, dbName);
|
|
27
|
+
console.info(
|
|
28
|
+
`[core-db] Connected to TalkPilot MongoDB: ${dbName || "via env"}`,
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (!municipalUri) {
|
|
33
|
+
console.warn("[core-db] MONGO_URI is not set");
|
|
34
|
+
} else {
|
|
35
|
+
const dbNameFromUri = municipalUri.split("/").pop()?.split("?")[0];
|
|
36
|
+
const dbName = dbNameFromUri || process.env.MUNICIPAL_DB_NAME;
|
|
37
|
+
await municipalDataMongodbClient.connect(municipalUri, dbName);
|
|
38
|
+
console.info(
|
|
39
|
+
`[core-db] Connected to Municipal Data MongoDB: ${dbName || "via env"}`,
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (!websiteTalkUri) {
|
|
44
|
+
console.warn("[core-db] MONGO_URI is not set");
|
|
45
|
+
} else {
|
|
46
|
+
const dbName = process.env.WEBSITALK_DB_NAME;
|
|
47
|
+
await websitalkMongodbClient.connect(websiteTalkUri, dbName);
|
|
48
|
+
console.info(
|
|
49
|
+
`[core-db] Connected to Website Talk MongoDB: ${dbName || "website-talk (default)"}`,
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
isConnected = true;
|
|
54
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
// TalkPilot DB exports
|
|
2
|
-
export * from "./talkpilot";
|
|
3
|
-
export * from "./connection";
|
|
4
|
-
|
|
5
|
-
export {
|
|
6
|
-
municipalDataMongodbClient,
|
|
7
|
-
getDb as getMunicipalDataDb,
|
|
8
|
-
setDb as setMunicipalDataDb,
|
|
9
|
-
ObjectId as MunicipalDataObjectId,
|
|
10
|
-
} from "./municipal";
|
|
11
|
-
export * from "./municipal/cities";
|
|
12
|
-
export * from "./municipal/streets";
|
|
13
|
-
export * from "./municipal/departmentsSubjects";
|
|
14
|
-
export * from "./municipal/tickets";
|
|
15
|
-
export * from "./municipal/systemInstructions";
|
|
16
|
-
export * from "./municipal/muniIssues";
|
|
17
|
-
export * from "./municipal/utils/types";
|
|
18
|
-
|
|
19
|
-
export {
|
|
20
|
-
websitalkMongodbClient,
|
|
21
|
-
getDb as getWebsitalkDb,
|
|
22
|
-
setDb as setWebsitalkDb,
|
|
23
|
-
ObjectId as WebsitalkObjectId,
|
|
24
|
-
} from "./websitalk";
|
|
25
|
-
export * from "./websitalk/scans/scans.getters";
|
|
26
|
-
export type * from "./websitalk/scans/scans.types";
|
|
1
|
+
// TalkPilot DB exports
|
|
2
|
+
export * from "./talkpilot";
|
|
3
|
+
export * from "./connection";
|
|
4
|
+
|
|
5
|
+
export {
|
|
6
|
+
municipalDataMongodbClient,
|
|
7
|
+
getDb as getMunicipalDataDb,
|
|
8
|
+
setDb as setMunicipalDataDb,
|
|
9
|
+
ObjectId as MunicipalDataObjectId,
|
|
10
|
+
} from "./municipal";
|
|
11
|
+
export * from "./municipal/cities";
|
|
12
|
+
export * from "./municipal/streets";
|
|
13
|
+
export * from "./municipal/departmentsSubjects";
|
|
14
|
+
export * from "./municipal/tickets";
|
|
15
|
+
export * from "./municipal/systemInstructions";
|
|
16
|
+
export * from "./municipal/muniIssues";
|
|
17
|
+
export * from "./municipal/utils/types";
|
|
18
|
+
|
|
19
|
+
export {
|
|
20
|
+
websitalkMongodbClient,
|
|
21
|
+
getDb as getWebsitalkDb,
|
|
22
|
+
setDb as setWebsitalkDb,
|
|
23
|
+
ObjectId as WebsitalkObjectId,
|
|
24
|
+
} from "./websitalk";
|
|
25
|
+
export * from "./websitalk/scans/scans.getters";
|
|
26
|
+
export type * from "./websitalk/scans/scans.types";
|
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
import { municipalDataMongodbClient } from "../mongodb-client";
|
|
2
|
-
import { MongoClient } from "mongodb";
|
|
3
|
-
|
|
4
|
-
describe("MunicipalDataMongoDBClient Validation", () => {
|
|
5
|
-
const originalEnv = process.env;
|
|
6
|
-
|
|
7
|
-
beforeEach(() => {
|
|
8
|
-
process.env = { ...originalEnv };
|
|
9
|
-
delete process.env.MONGO_URI;
|
|
10
|
-
delete process.env.MONGODB_URI;
|
|
11
|
-
|
|
12
|
-
// Force reset singleton state
|
|
13
|
-
(municipalDataMongodbClient as any).client = null;
|
|
14
|
-
(municipalDataMongodbClient as any).db = null;
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
afterAll(async () => {
|
|
18
|
-
process.env = originalEnv;
|
|
19
|
-
await municipalDataMongodbClient.disconnect();
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it("should succeed with default database name if only URI is provided", async () => {
|
|
23
|
-
const mockDb = { databaseName: "municipal-data" };
|
|
24
|
-
const connectSpy = jest
|
|
25
|
-
.spyOn(MongoClient.prototype, "connect")
|
|
26
|
-
.mockResolvedValue({} as any);
|
|
27
|
-
const dbSpy = jest
|
|
28
|
-
.spyOn(MongoClient.prototype, "db")
|
|
29
|
-
.mockReturnValue(mockDb as any);
|
|
30
|
-
|
|
31
|
-
const validUri = "mongodb://127.0.0.1:27017";
|
|
32
|
-
await municipalDataMongodbClient.connect(validUri);
|
|
33
|
-
|
|
34
|
-
expect(municipalDataMongodbClient.getDb()).toBeDefined();
|
|
35
|
-
expect(municipalDataMongodbClient.getDb().databaseName).toBe(
|
|
36
|
-
"municipal-data",
|
|
37
|
-
);
|
|
38
|
-
|
|
39
|
-
connectSpy.mockRestore();
|
|
40
|
-
dbSpy.mockRestore();
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it("should allow overriding the default database name", async () => {
|
|
44
|
-
const mockDb = { databaseName: "custom-municipal-db" };
|
|
45
|
-
const connectSpy = jest
|
|
46
|
-
.spyOn(MongoClient.prototype, "connect")
|
|
47
|
-
.mockResolvedValue({} as any);
|
|
48
|
-
const dbSpy = jest
|
|
49
|
-
.spyOn(MongoClient.prototype, "db")
|
|
50
|
-
.mockReturnValue(mockDb as any);
|
|
51
|
-
|
|
52
|
-
const validUri = "mongodb://127.0.0.1:27017";
|
|
53
|
-
await municipalDataMongodbClient.connect(validUri, "custom-municipal-db");
|
|
54
|
-
|
|
55
|
-
expect(municipalDataMongodbClient.getDb().databaseName).toBe(
|
|
56
|
-
"custom-municipal-db",
|
|
57
|
-
);
|
|
58
|
-
|
|
59
|
-
connectSpy.mockRestore();
|
|
60
|
-
dbSpy.mockRestore();
|
|
61
|
-
});
|
|
62
|
-
});
|
|
1
|
+
import { municipalDataMongodbClient } from "../mongodb-client";
|
|
2
|
+
import { MongoClient } from "mongodb";
|
|
3
|
+
|
|
4
|
+
describe("MunicipalDataMongoDBClient Validation", () => {
|
|
5
|
+
const originalEnv = process.env;
|
|
6
|
+
|
|
7
|
+
beforeEach(() => {
|
|
8
|
+
process.env = { ...originalEnv };
|
|
9
|
+
delete process.env.MONGO_URI;
|
|
10
|
+
delete process.env.MONGODB_URI;
|
|
11
|
+
|
|
12
|
+
// Force reset singleton state
|
|
13
|
+
(municipalDataMongodbClient as any).client = null;
|
|
14
|
+
(municipalDataMongodbClient as any).db = null;
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
afterAll(async () => {
|
|
18
|
+
process.env = originalEnv;
|
|
19
|
+
await municipalDataMongodbClient.disconnect();
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it("should succeed with default database name if only URI is provided", async () => {
|
|
23
|
+
const mockDb = { databaseName: "municipal-data" };
|
|
24
|
+
const connectSpy = jest
|
|
25
|
+
.spyOn(MongoClient.prototype, "connect")
|
|
26
|
+
.mockResolvedValue({} as any);
|
|
27
|
+
const dbSpy = jest
|
|
28
|
+
.spyOn(MongoClient.prototype, "db")
|
|
29
|
+
.mockReturnValue(mockDb as any);
|
|
30
|
+
|
|
31
|
+
const validUri = "mongodb://127.0.0.1:27017";
|
|
32
|
+
await municipalDataMongodbClient.connect(validUri);
|
|
33
|
+
|
|
34
|
+
expect(municipalDataMongodbClient.getDb()).toBeDefined();
|
|
35
|
+
expect(municipalDataMongodbClient.getDb().databaseName).toBe(
|
|
36
|
+
"municipal-data",
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
connectSpy.mockRestore();
|
|
40
|
+
dbSpy.mockRestore();
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it("should allow overriding the default database name", async () => {
|
|
44
|
+
const mockDb = { databaseName: "custom-municipal-db" };
|
|
45
|
+
const connectSpy = jest
|
|
46
|
+
.spyOn(MongoClient.prototype, "connect")
|
|
47
|
+
.mockResolvedValue({} as any);
|
|
48
|
+
const dbSpy = jest
|
|
49
|
+
.spyOn(MongoClient.prototype, "db")
|
|
50
|
+
.mockReturnValue(mockDb as any);
|
|
51
|
+
|
|
52
|
+
const validUri = "mongodb://127.0.0.1:27017";
|
|
53
|
+
await municipalDataMongodbClient.connect(validUri, "custom-municipal-db");
|
|
54
|
+
|
|
55
|
+
expect(municipalDataMongodbClient.getDb().databaseName).toBe(
|
|
56
|
+
"custom-municipal-db",
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
connectSpy.mockRestore();
|
|
60
|
+
dbSpy.mockRestore();
|
|
61
|
+
});
|
|
62
|
+
});
|