@spytecgps/nova-orm 1.0.107 → 1.0.108

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.
@@ -1,5 +1,5 @@
1
1
  import { Tag } from '../../entities';
2
- import { BulkCreateTagParams, CreateTagParams, DeleteTagParams, GetTagsResult, SearchTagsParams, UpdateTagParams } from '../../types/tag';
2
+ import { BulkCreateTagParams, CreateTagParams, DeleteTagParams, GetTagsResult, SearchTagsByUserParams, SearchTagsParams, UpdateTagParams } from '../../types/tag';
3
3
  import { BaseRepository } from '../baseRepository';
4
4
  export declare class TagsRepository extends BaseRepository {
5
5
  /**
@@ -32,4 +32,10 @@ export declare class TagsRepository extends BaseRepository {
32
32
  * @returns {Tag[]} the created tags
33
33
  */
34
34
  bulkCreateTags(params: BulkCreateTagParams): Promise<Tag[]>;
35
+ /**
36
+ * Search for tags by a given user
37
+ * @param {SearchTagsByUserParams} params containing information to search for tags by user
38
+ * @returns {Tag[]} the tags found
39
+ */
40
+ searchTagsByUser(params: SearchTagsByUserParams): Promise<GetTagsResult>;
35
41
  }
@@ -4,6 +4,7 @@ import { bulkCreateTags } from './bulkCreateTags';
4
4
  import { createTag } from './createTag';
5
5
  import { deleteTag } from './deleteTag';
6
6
  import { searchTags } from './searchTags';
7
+ import { searchTagsByUser } from './searchTagsByUser';
7
8
  import { updateTag } from './updateTag';
8
9
  export class TagsRepository extends BaseRepository {
9
10
  /**
@@ -66,5 +67,17 @@ export class TagsRepository extends BaseRepository {
66
67
  this.logger.trace(result, 'TagRepository::bulkCreateTags result');
67
68
  return result;
68
69
  }
70
+ /**
71
+ * Search for tags by a given user
72
+ * @param {SearchTagsByUserParams} params containing information to search for tags by user
73
+ * @returns {Tag[]} the tags found
74
+ */
75
+ async searchTagsByUser(params) {
76
+ this.logger.trace(params, `TagRepository::searchTagsByUser started with params`);
77
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger, this.replicaNovaDataSourceConfig);
78
+ const result = await searchTagsByUser(novaDataSource, params, this.logger);
79
+ this.logger.trace(result, 'TagRepository::searchTagsByUser result');
80
+ return result;
81
+ }
69
82
  }
70
83
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repositories/tags/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/repositories/tags/index.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,11 @@ export const searchTags = async (novaDataSource, params, logger) => {
23
23
  if (filters.tagIds?.length) {
24
24
  queryBuilder = queryBuilder.andWhere('id IN (:...tagIds)', { tagIds: filters.tagIds });
25
25
  }
26
+ if (filters.metadata) {
27
+ queryBuilder = queryBuilder.andWhere('JSON_CONTAINS(metadata, :metadata)', {
28
+ metadata: JSON.stringify(filters.metadata),
29
+ });
30
+ }
26
31
  // counting before applying pagination
27
32
  const tagCount = await queryBuilder.getCount();
28
33
  const limit = pagingOptions?.pageSize ?? 50;
@@ -1 +1 @@
1
- {"version":3,"file":"searchTags.js","sourceRoot":"","sources":["../../../src/repositories/tags/searchTags.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAGpC,OAAO,EAEL,kCAAkC,GAEnC,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAEjE,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC7B,cAA8B,EAC9B,MAAwB,EACxB,MAAc,EACU,EAAE;IAC1B,IAAI,kBAAkB,CAAmB,MAAM,EAAE,kCAAkC,CAAC,EAAE;QACpF,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,wDAAwD,CAAC,CAAA;QACjF,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAA;KACnC;IAED,4CAA4C;IAC5C,MAAM,aAAa,GAAG,cAAc,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAA;IAExE,OAAO,cAAc,CAAC,SAAS,CAC7B,KAAK,EAAE,UAA0B,EAAE,WAAyB,EAA0B,EAAE;QACtF,MAAM,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;QAEpD,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CAAA;QACzC,IAAI,YAAY,GAAG,cAAc;aAC9B,kBAAkB,EAAE;aACpB,KAAK,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;QAEhE,IAAI,WAAW,EAAE;YACf,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;SACzC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;YACzB,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;SACtF;QAED,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE;YAC1B,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;SACvF;QAED,sCAAsC;QACtC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,CAAA;QAE9C,MAAM,KAAK,GAAG,aAAa,EAAE,QAAQ,IAAI,EAAE,CAAA;QAC3C,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAEzB,MAAM,WAAW,GAAG,CAAC,aAAa,EAAE,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK,CAAA;QAC3D,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAEhC,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAA;QAEzC,OAAO;YACL,IAAI;YACJ,UAAU,EAAE,QAAQ;SACJ,CAAA;IACpB,CAAC,EACD,4BAA4B,EAC5B,aAAa,CACd,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"searchTags.js","sourceRoot":"","sources":["../../../src/repositories/tags/searchTags.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAGpC,OAAO,EAEL,kCAAkC,GAEnC,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAEjE,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC7B,cAA8B,EAC9B,MAAwB,EACxB,MAAc,EACU,EAAE;IAC1B,IAAI,kBAAkB,CAAmB,MAAM,EAAE,kCAAkC,CAAC,EAAE;QACpF,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,wDAAwD,CAAC,CAAA;QACjF,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAA;KACnC;IAED,4CAA4C;IAC5C,MAAM,aAAa,GAAG,cAAc,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAA;IAExE,OAAO,cAAc,CAAC,SAAS,CAC7B,KAAK,EAAE,UAA0B,EAAE,WAAyB,EAA0B,EAAE;QACtF,MAAM,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;QAEpD,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CAAA;QACzC,IAAI,YAAY,GAAG,cAAc;aAC9B,kBAAkB,EAAE;aACpB,KAAK,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;QAEhE,IAAI,WAAW,EAAE;YACf,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;SACzC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;YACzB,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAA;SACtF;QAED,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE;YAC1B,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;SACvF;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,oCAAoC,EAAE;gBACzE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;aAC3C,CAAC,CAAA;SACH;QAED,sCAAsC;QACtC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,CAAA;QAE9C,MAAM,KAAK,GAAG,aAAa,EAAE,QAAQ,IAAI,EAAE,CAAA;QAC3C,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAEzB,MAAM,WAAW,GAAG,CAAC,aAAa,EAAE,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK,CAAA;QAC3D,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAEhC,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAA;QAEzC,OAAO;YACL,IAAI;YACJ,UAAU,EAAE,QAAQ;SACJ,CAAA;IACpB,CAAC,EACD,4BAA4B,EAC5B,aAAa,CACd,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { NovaDataSource } from '../../novaDataSource';
2
+ import { Logger } from '../../types/logger';
3
+ import { GetTagsResult, SearchTagsByUserParams } from '../../types/tag';
4
+ export declare const searchTagsByUser: (novaDataSource: NovaDataSource, params: SearchTagsByUserParams, logger: Logger) => Promise<GetTagsResult>;
@@ -0,0 +1,46 @@
1
+ import { EntityTag, Tag } from '../../entities';
2
+ import { oneRequiredSearchTagsByUserParamsAttributes, requiredSearchTagsByUserParamsAttributes, } from '../../types/tag';
3
+ import { allAttributesAreNull, anyAttributeIsNull } from '../../utils/paramsValidators';
4
+ import { getUserById } from '../users/getUserById';
5
+ export const searchTagsByUser = async (novaDataSource, params, logger) => {
6
+ if (anyAttributeIsNull(params, requiredSearchTagsByUserParamsAttributes) ||
7
+ allAttributesAreNull(params, oneRequiredSearchTagsByUserParamsAttributes)) {
8
+ logger.warn({ params }, 'TagsRepository::searchTags missing required parameters');
9
+ return { tags: [], totalCount: 0 };
10
+ }
11
+ // Force the query to run on master or slave
12
+ const dbQueryRunner = novaDataSource.createQueryRunnerFromParams(params);
13
+ const { filters, pagingOptions } = params;
14
+ let userId = filters.userNumberId;
15
+ if (!filters.userNumberId) {
16
+ const user = await getUserById(novaDataSource, { filters: { id: filters.userId } }, logger);
17
+ userId = user?.numberId;
18
+ }
19
+ return novaDataSource.safeQuery(async (dataSource, queryRunner) => {
20
+ const tagsRepository = dataSource.getRepository(Tag);
21
+ let queryBuilder = tagsRepository
22
+ .createQueryBuilder('tag')
23
+ .where('tag.clientId = :clientId', { clientId: filters.clientId });
24
+ if (queryRunner) {
25
+ queryBuilder.setQueryRunner(queryRunner);
26
+ }
27
+ queryBuilder.innerJoin(EntityTag, 'entityTag', "entityTag.tagId = tag.id AND entityTag.entityType = 'User' AND entityTag.entityId = :userId", { userId });
28
+ if (filters.metadata) {
29
+ queryBuilder = queryBuilder.andWhere('JSON_CONTAINS(tag.metadata, :metadata)', {
30
+ metadata: JSON.stringify(filters.metadata),
31
+ });
32
+ }
33
+ // counting before applying pagination
34
+ const tagCount = await queryBuilder.getCount();
35
+ const limit = pagingOptions?.pageSize ?? 50;
36
+ queryBuilder.limit(limit);
37
+ const globalIndex = (pagingOptions?.pageIndex ?? 0) * limit;
38
+ queryBuilder.offset(globalIndex);
39
+ const tags = await queryBuilder.getMany();
40
+ return {
41
+ tags,
42
+ totalCount: tagCount,
43
+ };
44
+ }, 'TagsRepository::searchTags', dbQueryRunner);
45
+ };
46
+ //# sourceMappingURL=searchTagsByUser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchTagsByUser.js","sourceRoot":"","sources":["../../../src/repositories/tags/searchTagsByUser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAG/C,OAAO,EAEL,2CAA2C,EAC3C,wCAAwC,GAEzC,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAElD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,cAA8B,EAC9B,MAA8B,EAC9B,MAAc,EACU,EAAE;IAC1B,IACE,kBAAkB,CAAyB,MAAM,EAAE,wCAAwC,CAAC;QAC5F,oBAAoB,CAClB,MAAM,EACN,2CAA2C,CAC5C,EACD;QACA,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,wDAAwD,CAAC,CAAA;QACjF,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,CAAA;KACnC;IAED,4CAA4C;IAC5C,MAAM,aAAa,GAAG,cAAc,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAA;IAExE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CAAA;IAEzC,IAAI,MAAM,GAAG,OAAO,CAAC,YAAY,CAAA;IACjC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;QACzB,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;QAC3F,MAAM,GAAG,IAAI,EAAE,QAAQ,CAAA;KACxB;IAED,OAAO,cAAc,CAAC,SAAS,CAC7B,KAAK,EAAE,UAA0B,EAAE,WAAyB,EAA0B,EAAE;QACtF,MAAM,cAAc,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;QAEpD,IAAI,YAAY,GAAG,cAAc;aAC9B,kBAAkB,CAAC,KAAK,CAAC;aACzB,KAAK,CAAC,0BAA0B,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;QAEpE,IAAI,WAAW,EAAE;YACf,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;SACzC;QAED,YAAY,CAAC,SAAS,CACpB,SAAS,EACT,WAAW,EACX,6FAA6F,EAC7F,EAAE,MAAM,EAAE,CACX,CAAA;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,wCAAwC,EAAE;gBAC7E,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;aAC3C,CAAC,CAAA;SACH;QAED,sCAAsC;QACtC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,CAAA;QAE9C,MAAM,KAAK,GAAG,aAAa,EAAE,QAAQ,IAAI,EAAE,CAAA;QAC3C,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAEzB,MAAM,WAAW,GAAG,CAAC,aAAa,EAAE,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK,CAAA;QAC3D,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAEhC,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,CAAA;QAEzC,OAAO;YACL,IAAI;YACJ,UAAU,EAAE,QAAQ;SACJ,CAAA;IACpB,CAAC,EACD,4BAA4B,EAC5B,aAAa,CACd,CAAA;AACH,CAAC,CAAA"}
@@ -21,6 +21,7 @@ export const updateTag = async (novaDataSource, params, logger) => {
21
21
  color: values.color,
22
22
  description: values.description,
23
23
  name: values.name,
24
+ metadata: values.metadata,
24
25
  })
25
26
  .where('id = :id', { id: filters.tagId })
26
27
  .andWhere('clientId = :clientId', { clientId: filters.clientId })
@@ -1 +1 @@
1
- {"version":3,"file":"updateTag.js","sourceRoot":"","sources":["../../../src/repositories/tags/updateTag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAGpC,OAAO,EAAE,iCAAiC,EAAmB,MAAM,iBAAiB,CAAA;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AACvE,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAEjE,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAC5B,cAA8B,EAC9B,MAAuB,EACvB,MAAc,EACI,EAAE;IACpB,IACE,kBAAkB,CAAC,MAAM,EAAE,iCAAiC,CAAC;QAC7D,CAAC,oBAAoB,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EACnE;QACA,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,sDAAsD,CAAC,CAAA;QAC/E,OAAO,KAAK,CAAA;KACb;IAED,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,cAA8B,EAAoB,EAAE;QACzF,MAAM,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;QACxD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;QAClC,MAAM,YAAY,GAAG,MAAM,cAAc;aACtC,kBAAkB,EAAE;aACpB,MAAM,CAAC,GAAG,CAAC;aACX,GAAG,CAAC;YACH,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,UAAU,EAAE,GAAG,EAAE;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;aACD,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;aACxC,QAAQ,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;aAChE,OAAO,EAAE,CAAA;QAEZ,OAAO,YAAY,CAAC,QAAQ,GAAG,CAAC,CAAA;IAClC,CAAC,EAAE,gCAAgC,CAAC,CAAA;AACtC,CAAC,CAAA"}
1
+ {"version":3,"file":"updateTag.js","sourceRoot":"","sources":["../../../src/repositories/tags/updateTag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAGpC,OAAO,EAAE,iCAAiC,EAAmB,MAAM,iBAAiB,CAAA;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AACvE,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAEjE,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAC5B,cAA8B,EAC9B,MAAuB,EACvB,MAAc,EACI,EAAE;IACpB,IACE,kBAAkB,CAAC,MAAM,EAAE,iCAAiC,CAAC;QAC7D,CAAC,oBAAoB,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,EACnE;QACA,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,sDAAsD,CAAC,CAAA;QAC/E,OAAO,KAAK,CAAA;KACb;IAED,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,cAA8B,EAAoB,EAAE;QACzF,MAAM,cAAc,GAAG,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;QACxD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;QAClC,MAAM,YAAY,GAAG,MAAM,cAAc;aACtC,kBAAkB,EAAE;aACpB,MAAM,CAAC,GAAG,CAAC;aACX,GAAG,CAAC;YACH,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,UAAU,EAAE,GAAG,EAAE;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;aACD,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;aACxC,QAAQ,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;aAChE,OAAO,EAAE,CAAA;QAEZ,OAAO,YAAY,CAAC,QAAQ,GAAG,CAAC,CAAA;IAClC,CAAC,EAAE,gCAAgC,CAAC,CAAA;AACtC,CAAC,CAAA"}
@@ -7,6 +7,7 @@ export interface CreateTagParams {
7
7
  name: string;
8
8
  color?: string;
9
9
  description?: string;
10
+ metadata?: Record<string, any>;
10
11
  }
11
12
  export declare const requiredBulkCreateTagParamsAttributes: string[];
12
13
  export interface BulkCreateTagParams {
@@ -16,6 +17,7 @@ export interface BulkCreateTagParams {
16
17
  name: string;
17
18
  color?: string;
18
19
  description?: string;
20
+ metadata?: Record<string, any>;
19
21
  }[];
20
22
  }
21
23
  export declare const requiredUpdateTagParamsAttributes: string[];
@@ -29,6 +31,7 @@ export interface UpdateTagParams {
29
31
  name?: string | null;
30
32
  description?: string | null;
31
33
  color?: string | null;
34
+ metadata?: Record<string, any> | null;
32
35
  };
33
36
  }
34
37
  export declare const requiredDeleteTagParamsAttributes: string[];
@@ -43,9 +46,20 @@ export interface SearchTagsParams extends OptionalReportPagination {
43
46
  clientId: number;
44
47
  names?: string[];
45
48
  tagIds?: number[];
49
+ metadata?: Record<string, any>;
46
50
  };
47
51
  }
48
52
  export interface GetTagsResult {
49
53
  tags: Tag[];
50
54
  totalCount: number;
51
55
  }
56
+ export declare const requiredSearchTagsByUserParamsAttributes: string[];
57
+ export declare const oneRequiredSearchTagsByUserParamsAttributes: string[];
58
+ export interface SearchTagsByUserParams extends OptionalReportPagination {
59
+ filters: {
60
+ clientId: number;
61
+ userId?: string;
62
+ userNumberId?: number;
63
+ metadata?: Record<string, any>;
64
+ };
65
+ }
package/dist/types/tag.js CHANGED
@@ -7,4 +7,9 @@ export const requiredUpdateTagParamsAttributes = [
7
7
  ];
8
8
  export const requiredDeleteTagParamsAttributes = ['clientId', 'tagId', 'deletedBy'];
9
9
  export const requiredSearchTagsParamsAttributes = ['filters.clientId'];
10
+ export const requiredSearchTagsByUserParamsAttributes = ['filters.clientId'];
11
+ export const oneRequiredSearchTagsByUserParamsAttributes = [
12
+ 'filters.userId',
13
+ 'filters.userNumberId',
14
+ ];
10
15
  //# sourceMappingURL=tag.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tag.js","sourceRoot":"","sources":["../../src/types/tag.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;AAUlF,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;AAYtF,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,eAAe;IACf,kBAAkB;IAClB,mBAAmB;CACpB,CAAA;AAeD,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;AAOnF,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,kBAAkB,CAAC,CAAA"}
1
+ {"version":3,"file":"tag.js","sourceRoot":"","sources":["../../src/types/tag.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;AAWlF,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;AAatF,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,eAAe;IACf,kBAAkB;IAClB,mBAAmB;CACpB,CAAA;AAgBD,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;AAOnF,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,kBAAkB,CAAC,CAAA;AAgBtE,MAAM,CAAC,MAAM,wCAAwC,GAAG,CAAC,kBAAkB,CAAC,CAAA;AAC5E,MAAM,CAAC,MAAM,2CAA2C,GAAG;IACzD,gBAAgB;IAChB,sBAAsB;CACvB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spytecgps/nova-orm",
3
- "version": "1.0.107",
3
+ "version": "1.0.108",
4
4
  "description": "ORM with PlanetScale",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",