@aneuhold/core-ts-db-lib 1.0.15 → 1.0.17

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.
@@ -3,6 +3,10 @@ import BaseDocumentWithType from '../BaseDocumentWithType';
3
3
  import RequiredUserId from '../../schemas/required-refs/RequiredUserId';
4
4
  import { DocumentValidator } from '../../schemas/validators/DocumentValidator';
5
5
  export declare const validateDashboardTask: DocumentValidator<DashboardTask>;
6
+ /**
7
+ * Gets all the children task IDs for the given parent task IDs.
8
+ */
9
+ export declare const getDashboardTaskChildrenIds: (allUserTasks: DashboardTask[], parentTaskIds: ObjectId[]) => ObjectId[];
6
10
  export default class DashboardTask extends BaseDocumentWithType implements RequiredUserId {
7
11
  static docType: string;
8
12
  docType: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Task.d.ts","sourceRoot":"","sources":["../../../src/documents/dashboard/Task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAC3D,OAAO,cAAc,MAAM,4CAA4C,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAE/E,eAAO,MAAM,qBAAqB,EAAE,iBAAiB,CAAC,aAAa,CAclE,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,aACnB,SAAQ,oBACR,YAAW,cAAc;IAEzB,MAAM,CAAC,OAAO,SAAU;IAExB,OAAO,SAAyB;IAEhC;;OAEG;IACH,MAAM,EAAE,QAAQ,CAAC;IAEjB;;;OAGG;IACH,UAAU,EAAE,QAAQ,EAAE,CAAM;IAE5B,KAAK,SAAM;IAEX,SAAS,UAAS;IAElB;;OAEG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC;IAExB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,OAAc;IAEzB;;OAEG;IACH,eAAe,OAAc;IAE7B,SAAS,CAAC,EAAE,IAAI,CAAC;IAEjB,OAAO,CAAC,EAAE,IAAI,CAAC;IAEf;;OAEG;IACH,IAAI,EAAE,MAAM,EAAE,CAAM;IAEpB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAa;gBAEjB,OAAO,EAAE,QAAQ;CAI9B"}
1
+ {"version":3,"file":"Task.d.ts","sourceRoot":"","sources":["../../../src/documents/dashboard/Task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAC3D,OAAO,cAAc,MAAM,4CAA4C,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAE/E,eAAO,MAAM,qBAAqB,EAAE,iBAAiB,CAAC,aAAa,CAkBlE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,iBACxB,aAAa,EAAE,iBACd,QAAQ,EAAE,KACxB,QAAQ,EA2BV,CAAC;AAyBF,MAAM,CAAC,OAAO,OAAO,aACnB,SAAQ,oBACR,YAAW,cAAc;IAEzB,MAAM,CAAC,OAAO,SAAU;IAExB,OAAO,SAAyB;IAEhC;;OAEG;IACH,MAAM,EAAE,QAAQ,CAAC;IAEjB;;;OAGG;IACH,UAAU,EAAE,QAAQ,EAAE,CAAM;IAE5B,KAAK,SAAM;IAEX,SAAS,UAAS;IAElB;;OAEG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC;IAExB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,WAAW,OAAc;IAEzB;;OAEG;IACH,eAAe,OAAc;IAE7B,SAAS,CAAC,EAAE,IAAI,CAAC;IAEjB,OAAO,CAAC,EAAE,IAAI,CAAC;IAEf;;OAEG;IACH,IAAI,EAAE,MAAM,EAAE,CAAM;IAEpB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAa;gBAEjB,OAAO,EAAE,QAAQ;CAI9B"}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.validateDashboardTask = void 0;
6
+ exports.getDashboardTaskChildrenIds = exports.validateDashboardTask = void 0;
7
7
  const bson_1 = require("bson");
8
8
  const BaseDocumentWithType_1 = __importDefault(require("../BaseDocumentWithType"));
9
9
  const ValidateUtil_1 = __importDefault(require("../../schemas/validators/ValidateUtil"));
@@ -16,9 +16,53 @@ const validateDashboardTask = (task) => {
16
16
  validate.optionalString('description');
17
17
  validate.array('tags', exampleTask.tags);
18
18
  validate.string('category', exampleTask.category);
19
+ validate.object('createdDate', exampleTask.createdDate);
20
+ validate.object('lastUpdatedDate', exampleTask.lastUpdatedDate);
21
+ validate.optionalObject('startDate');
22
+ validate.optionalObject('dueDate');
19
23
  return { updatedDoc: task, errors };
20
24
  };
21
25
  exports.validateDashboardTask = validateDashboardTask;
26
+ /**
27
+ * Gets all the children task IDs for the given parent task IDs.
28
+ */
29
+ const getDashboardTaskChildrenIds = (allUserTasks, parentTaskIds) => {
30
+ const parentToTaskIdsDict = {};
31
+ const taskIdToTaskDict = {};
32
+ allUserTasks.forEach((task) => {
33
+ taskIdToTaskDict[task._id.toString()] = task;
34
+ if (task.parentTaskId) {
35
+ if (!parentToTaskIdsDict[task.parentTaskId.toString()]) {
36
+ parentToTaskIdsDict[task.parentTaskId.toString()] = [];
37
+ }
38
+ parentToTaskIdsDict[task.parentTaskId.toString()].push(task._id.toString());
39
+ }
40
+ });
41
+ const childrenIds = [];
42
+ parentTaskIds.forEach((taskId) => {
43
+ const task = taskIdToTaskDict[taskId.toString()];
44
+ if (task) {
45
+ const childrenTaskIds = getChildrenTaskIds(taskIdToTaskDict, parentToTaskIdsDict, taskId.toString());
46
+ childrenIds.push(...childrenTaskIds.map((id) => new bson_1.ObjectId(id)));
47
+ }
48
+ });
49
+ return childrenIds;
50
+ };
51
+ exports.getDashboardTaskChildrenIds = getDashboardTaskChildrenIds;
52
+ function getChildrenTaskIds(taskIdToTaskDict, parentToTaskIdsDict, taskId) {
53
+ const childrenIds = parentToTaskIdsDict[taskId];
54
+ if (!childrenIds) {
55
+ return [];
56
+ }
57
+ childrenIds.forEach((childId) => {
58
+ const childTask = taskIdToTaskDict[childId];
59
+ if (childTask) {
60
+ const grandchildrenIds = getChildrenTaskIds(taskIdToTaskDict, parentToTaskIdsDict, childId);
61
+ childrenIds.push(...grandchildrenIds);
62
+ }
63
+ });
64
+ return childrenIds;
65
+ }
22
66
  class DashboardTask extends BaseDocumentWithType_1.default {
23
67
  static docType = 'task';
24
68
  docType = DashboardTask.docType;
package/lib/index.d.ts CHANGED
@@ -2,10 +2,10 @@ import BaseDocument from './documents/BaseDocument';
2
2
  import BaseDocumentWithType from './documents/BaseDocumentWithType';
3
3
  import ApiKey, { validateApiKey } from './documents/common/ApiKey';
4
4
  import User, { validateUser } from './documents/common/User';
5
- import DashboardTask, { validateDashboardTask } from './documents/dashboard/Task';
5
+ import DashboardTask, { getDashboardTaskChildrenIds, validateDashboardTask } from './documents/dashboard/Task';
6
6
  import DashboardUserConfig, { validateDashboardUserConfig } from './documents/dashboard/UserConfig';
7
7
  import RequiredUserId from './schemas/required-refs/RequiredUserId';
8
8
  import { DocumentValidator } from './schemas/validators/DocumentValidator';
9
- export { User, validateUser, ApiKey, validateApiKey, DashboardUserConfig, validateDashboardUserConfig, DashboardTask, validateDashboardTask, BaseDocument, BaseDocumentWithType, RequiredUserId };
9
+ export { User, validateUser, ApiKey, validateApiKey, DashboardUserConfig, validateDashboardUserConfig, DashboardTask, validateDashboardTask, getDashboardTaskChildrenIds, BaseDocument, BaseDocumentWithType, RequiredUserId };
10
10
  export type { DocumentValidator };
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,oBAAoB,MAAM,kCAAkC,CAAC;AACpE,OAAO,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,aAAa,EAAE,EACpB,qBAAqB,EACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,mBAAmB,EAAE,EAC1B,2BAA2B,EAC5B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,cAAc,MAAM,wCAAwC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAG3E,OAAO,EACL,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,cAAc,EACd,mBAAmB,EACnB,2BAA2B,EAC3B,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,oBAAoB,EACpB,cAAc,EACf,CAAC;AAGF,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,oBAAoB,MAAM,kCAAkC,CAAC;AACpE,OAAO,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,aAAa,EAAE,EACpB,2BAA2B,EAC3B,qBAAqB,EACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,mBAAmB,EAAE,EAC1B,2BAA2B,EAC5B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,cAAc,MAAM,wCAAwC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAG3E,OAAO,EACL,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,cAAc,EACd,mBAAmB,EACnB,2BAA2B,EAC3B,aAAa,EACb,qBAAqB,EACrB,2BAA2B,EAC3B,YAAY,EACZ,oBAAoB,EACpB,cAAc,EACf,CAAC;AAGF,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
package/lib/index.js CHANGED
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.RequiredUserId = exports.BaseDocumentWithType = exports.BaseDocument = exports.validateDashboardTask = exports.DashboardTask = exports.validateDashboardUserConfig = exports.DashboardUserConfig = exports.validateApiKey = exports.ApiKey = exports.validateUser = exports.User = void 0;
29
+ exports.RequiredUserId = exports.BaseDocumentWithType = exports.BaseDocument = exports.getDashboardTaskChildrenIds = exports.validateDashboardTask = exports.DashboardTask = exports.validateDashboardUserConfig = exports.DashboardUserConfig = exports.validateApiKey = exports.ApiKey = exports.validateUser = exports.User = void 0;
30
30
  const BaseDocument_1 = __importDefault(require("./documents/BaseDocument"));
31
31
  exports.BaseDocument = BaseDocument_1.default;
32
32
  const BaseDocumentWithType_1 = __importDefault(require("./documents/BaseDocumentWithType"));
@@ -39,6 +39,7 @@ exports.User = User_1.default;
39
39
  Object.defineProperty(exports, "validateUser", { enumerable: true, get: function () { return User_1.validateUser; } });
40
40
  const Task_1 = __importStar(require("./documents/dashboard/Task"));
41
41
  exports.DashboardTask = Task_1.default;
42
+ Object.defineProperty(exports, "getDashboardTaskChildrenIds", { enumerable: true, get: function () { return Task_1.getDashboardTaskChildrenIds; } });
42
43
  Object.defineProperty(exports, "validateDashboardTask", { enumerable: true, get: function () { return Task_1.validateDashboardTask; } });
43
44
  const UserConfig_1 = __importStar(require("./documents/dashboard/UserConfig"));
44
45
  exports.DashboardUserConfig = UserConfig_1.default;
@@ -22,6 +22,7 @@ export default class Validate {
22
22
  optionalNumber(fieldName: string): void;
23
23
  optionalBoolean(fieldName: string): void;
24
24
  optionalArray(fieldName: string): void;
25
+ optionalObject(fieldName: string): void;
25
26
  string(fieldName: string, defaultValue: string): void;
26
27
  object(fieldName: string, defaultValue: object): void;
27
28
  number(fieldName: string, defaultValue: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ValidateUtil.d.ts","sourceRoot":"","sources":["../../../src/schemas/validators/ValidateUtil.ts"],"names":[],"mappings":"AAOA,KAAK,eAAe,GAAG;IAAE,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAEtD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,OAAO,OAAO,QAAQ;IAKzB,OAAO,CAAC,WAAW;IAJrB,YAAY,EAAE,eAAe,CAAC;gBAG5B,YAAY,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EAAE;IAK/B,cAAc,CAAC,SAAS,EAAE,MAAM;IAUhC,cAAc,CAAC,SAAS,EAAE,MAAM;IAUhC,eAAe,CAAC,SAAS,EAAE,MAAM;IAUjC,aAAa,CAAC,SAAS,EAAE,MAAM;IAU/B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAU9C,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAU9C,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAU9C,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO;IAUhD,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE;IAUhD;;;;;;;;;OASG;IACH,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,WAAW;CAWpB"}
1
+ {"version":3,"file":"ValidateUtil.d.ts","sourceRoot":"","sources":["../../../src/schemas/validators/ValidateUtil.ts"],"names":[],"mappings":"AAQA,KAAK,eAAe,GAAG;IAAE,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAEtD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,OAAO,OAAO,QAAQ;IAKzB,OAAO,CAAC,WAAW;IAJrB,YAAY,EAAE,eAAe,CAAC;gBAG5B,YAAY,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EAAE;IAK/B,cAAc,CAAC,SAAS,EAAE,MAAM;IAUhC,cAAc,CAAC,SAAS,EAAE,MAAM;IAUhC,eAAe,CAAC,SAAS,EAAE,MAAM;IAUjC,aAAa,CAAC,SAAS,EAAE,MAAM;IAU/B,cAAc,CAAC,SAAS,EAAE,MAAM;IAUhC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAU9C,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAU9C,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAU9C,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO;IAUhD,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE;IAUhD;;;;;;;;;OASG;IACH,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,WAAW;CAWpB"}
@@ -49,6 +49,13 @@ class Validate {
49
49
  this.deleteField(fieldName);
50
50
  }
51
51
  }
52
+ optionalObject(fieldName) {
53
+ if (this.fieldPathIsValid(fieldName) &&
54
+ !(0, commonTypeGuards_1.isOptionalObject)(this.getField(fieldName))) {
55
+ this.errorsArray.push(`${fieldName} must be an object or undefined`);
56
+ this.deleteField(fieldName);
57
+ }
58
+ }
52
59
  string(fieldName, defaultValue) {
53
60
  if (this.fieldPathIsValid(fieldName) &&
54
61
  typeof this.getField(fieldName) !== 'string') {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aneuhold/core-ts-db-lib",
3
- "version": "1.0.15",
3
+ "version": "1.0.17",
4
4
  "description": "A core database library used for personal projects",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",