@adtrackify/at-service-common 3.19.16 → 3.19.18

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.
Files changed (73) hide show
  1. package/dist/cjs/__tests__/clients/cross-platform-compression.spec.js +1 -1
  2. package/dist/cjs/__tests__/clients/cross-platform-compression.spec.js.map +1 -1
  3. package/dist/cjs/__tests__/clients/dynamodb-client.spec.js +161 -121
  4. package/dist/cjs/__tests__/clients/dynamodb-client.spec.js.map +1 -1
  5. package/dist/cjs/__tests__/db/destinations-db-service.spec.d.ts +1 -0
  6. package/dist/cjs/__tests__/db/destinations-db-service.spec.js +126 -0
  7. package/dist/cjs/__tests__/db/destinations-db-service.spec.js.map +1 -0
  8. package/dist/cjs/__tests__/db/shopify-app-installs-db-service.spec.d.ts +1 -0
  9. package/dist/cjs/__tests__/db/shopify-app-installs-db-service.spec.js +105 -0
  10. package/dist/cjs/__tests__/db/shopify-app-installs-db-service.spec.js.map +1 -0
  11. package/dist/cjs/__tests__/db/subscriptions-db-service.spec.d.ts +1 -0
  12. package/dist/cjs/__tests__/db/subscriptions-db-service.spec.js +96 -0
  13. package/dist/cjs/__tests__/db/subscriptions-db-service.spec.js.map +1 -0
  14. package/dist/cjs/__tests__/db/user-accounts-db-service.spec.d.ts +1 -0
  15. package/dist/cjs/__tests__/db/user-accounts-db-service.spec.js +77 -0
  16. package/dist/cjs/__tests__/db/user-accounts-db-service.spec.js.map +1 -0
  17. package/dist/cjs/clients/generic/dynamodb-client.d.ts +1 -1
  18. package/dist/cjs/clients/generic/dynamodb-client.js +24 -17
  19. package/dist/cjs/clients/generic/dynamodb-client.js.map +1 -1
  20. package/dist/cjs/services/db/destinations-db-service.d.ts +1 -0
  21. package/dist/cjs/services/db/destinations-db-service.js +6 -8
  22. package/dist/cjs/services/db/destinations-db-service.js.map +1 -1
  23. package/dist/cjs/services/db/index.d.ts +1 -0
  24. package/dist/cjs/services/db/index.js +1 -0
  25. package/dist/cjs/services/db/index.js.map +1 -1
  26. package/dist/cjs/services/db/shopify-app-installs-db-service.d.ts +3 -1
  27. package/dist/cjs/services/db/shopify-app-installs-db-service.js +12 -11
  28. package/dist/cjs/services/db/shopify-app-installs-db-service.js.map +1 -1
  29. package/dist/cjs/services/db/subscriptions-db-service.d.ts +1 -0
  30. package/dist/cjs/services/db/subscriptions-db-service.js +4 -0
  31. package/dist/cjs/services/db/subscriptions-db-service.js.map +1 -1
  32. package/dist/cjs/services/db/user-accounts-db-service.d.ts +7 -0
  33. package/dist/cjs/services/db/user-accounts-db-service.js +18 -0
  34. package/dist/cjs/services/db/user-accounts-db-service.js.map +1 -0
  35. package/dist/cjs/types/shopify-graphql-types/admin.generated.d.ts +38 -38
  36. package/dist/cjs/types/shopify-graphql-types/admin.types.js.map +1 -1
  37. package/dist/esm/__tests__/clients/cross-platform-compression.spec.js +1 -1
  38. package/dist/esm/__tests__/clients/cross-platform-compression.spec.js.map +1 -1
  39. package/dist/esm/__tests__/clients/dynamodb-client.spec.js +161 -121
  40. package/dist/esm/__tests__/clients/dynamodb-client.spec.js.map +1 -1
  41. package/dist/esm/__tests__/db/destinations-db-service.spec.d.ts +1 -0
  42. package/dist/esm/__tests__/db/destinations-db-service.spec.js +124 -0
  43. package/dist/esm/__tests__/db/destinations-db-service.spec.js.map +1 -0
  44. package/dist/esm/__tests__/db/shopify-app-installs-db-service.spec.d.ts +1 -0
  45. package/dist/esm/__tests__/db/shopify-app-installs-db-service.spec.js +103 -0
  46. package/dist/esm/__tests__/db/shopify-app-installs-db-service.spec.js.map +1 -0
  47. package/dist/esm/__tests__/db/subscriptions-db-service.spec.d.ts +1 -0
  48. package/dist/esm/__tests__/db/subscriptions-db-service.spec.js +94 -0
  49. package/dist/esm/__tests__/db/subscriptions-db-service.spec.js.map +1 -0
  50. package/dist/esm/__tests__/db/user-accounts-db-service.spec.d.ts +1 -0
  51. package/dist/esm/__tests__/db/user-accounts-db-service.spec.js +75 -0
  52. package/dist/esm/__tests__/db/user-accounts-db-service.spec.js.map +1 -0
  53. package/dist/esm/clients/generic/dynamodb-client.d.ts +1 -1
  54. package/dist/esm/clients/generic/dynamodb-client.js +24 -17
  55. package/dist/esm/clients/generic/dynamodb-client.js.map +1 -1
  56. package/dist/esm/services/db/destinations-db-service.d.ts +1 -0
  57. package/dist/esm/services/db/destinations-db-service.js +6 -8
  58. package/dist/esm/services/db/destinations-db-service.js.map +1 -1
  59. package/dist/esm/services/db/index.d.ts +1 -0
  60. package/dist/esm/services/db/index.js +1 -0
  61. package/dist/esm/services/db/index.js.map +1 -1
  62. package/dist/esm/services/db/shopify-app-installs-db-service.d.ts +3 -1
  63. package/dist/esm/services/db/shopify-app-installs-db-service.js +12 -11
  64. package/dist/esm/services/db/shopify-app-installs-db-service.js.map +1 -1
  65. package/dist/esm/services/db/subscriptions-db-service.d.ts +1 -0
  66. package/dist/esm/services/db/subscriptions-db-service.js +4 -0
  67. package/dist/esm/services/db/subscriptions-db-service.js.map +1 -1
  68. package/dist/esm/services/db/user-accounts-db-service.d.ts +7 -0
  69. package/dist/esm/services/db/user-accounts-db-service.js +14 -0
  70. package/dist/esm/services/db/user-accounts-db-service.js.map +1 -0
  71. package/dist/esm/types/shopify-graphql-types/admin.generated.d.ts +38 -38
  72. package/dist/esm/types/shopify-graphql-types/admin.types.js.map +1 -1
  73. package/package.json +1 -1
@@ -0,0 +1,103 @@
1
+ jest.mock('../../clients/generic/dynamodb-client.js', () => ({
2
+ DynamoDbClient: {
3
+ safeGet: jest.fn(),
4
+ safeQueryByGSI: jest.fn(),
5
+ safeBatchGet: jest.fn(),
6
+ queryAll: jest.fn(),
7
+ },
8
+ }));
9
+ jest.mock('../../helpers/index.js', () => ({
10
+ Logger: {
11
+ info: jest.fn(),
12
+ warn: jest.fn(),
13
+ error: jest.fn(),
14
+ debug: jest.fn(),
15
+ },
16
+ }));
17
+ import { DynamoDbClient } from '../../clients/generic/dynamodb-client.js';
18
+ import { ShopifyAppInstallsDbService } from '../../services/db/shopify-app-installs-db-service.js';
19
+ const mockSafeBatchGet = DynamoDbClient.safeBatchGet;
20
+ const mockSafeGet = DynamoDbClient.safeGet;
21
+ describe('ShopifyAppInstallsDbService', () => {
22
+ const TABLE_NAME = 'test-shopify-app-installs-table';
23
+ const TABLE_KEY = 'id';
24
+ const service = new ShopifyAppInstallsDbService(TABLE_NAME, TABLE_KEY);
25
+ beforeEach(() => {
26
+ jest.clearAllMocks();
27
+ });
28
+ afterEach(() => {
29
+ jest.restoreAllMocks();
30
+ });
31
+ describe('batchGetByIds', () => {
32
+ it('returns empty array for empty ids input', async () => {
33
+ mockSafeBatchGet.mockResolvedValueOnce([]);
34
+ const result = await service.batchGetByIds([]);
35
+ expect(result).toEqual([]);
36
+ expect(mockSafeBatchGet).toHaveBeenCalledWith(TABLE_NAME, []);
37
+ });
38
+ it('returns installs for single id', async () => {
39
+ const mockInstall = {
40
+ id: 'install-1',
41
+ shop: 'test-shop.myshopify.com',
42
+ pixelId: 'px-1',
43
+ };
44
+ mockSafeBatchGet.mockResolvedValueOnce([mockInstall]);
45
+ const result = await service.batchGetByIds(['install-1']);
46
+ expect(result).toEqual([mockInstall]);
47
+ expect(mockSafeBatchGet).toHaveBeenCalledWith(TABLE_NAME, [{ id: 'install-1' }]);
48
+ });
49
+ it('returns installs for multiple ids', async () => {
50
+ const mockInstalls = [
51
+ { id: 'install-1', shop: 'shop1.myshopify.com', pixelId: 'px-1' },
52
+ { id: 'install-2', shop: 'shop2.myshopify.com', pixelId: 'px-2' },
53
+ { id: 'install-3', shop: 'shop3.myshopify.com', pixelId: 'px-3' },
54
+ ];
55
+ mockSafeBatchGet.mockResolvedValueOnce(mockInstalls);
56
+ const result = await service.batchGetByIds(['install-1', 'install-2', 'install-3']);
57
+ expect(result).toEqual(mockInstalls);
58
+ expect(mockSafeBatchGet).toHaveBeenCalledWith(TABLE_NAME, [
59
+ { id: 'install-1' },
60
+ { id: 'install-2' },
61
+ { id: 'install-3' },
62
+ ]);
63
+ });
64
+ it('returns empty array when safeBatchGet returns null', async () => {
65
+ mockSafeBatchGet.mockResolvedValueOnce(null);
66
+ const result = await service.batchGetByIds(['install-1']);
67
+ expect(result).toEqual([]);
68
+ });
69
+ it('uses custom table key from constructor', async () => {
70
+ const customService = new ShopifyAppInstallsDbService(TABLE_NAME, 'customKey');
71
+ mockSafeBatchGet.mockResolvedValueOnce([]);
72
+ await customService.batchGetByIds(['install-1', 'install-2']);
73
+ expect(mockSafeBatchGet).toHaveBeenCalledWith(TABLE_NAME, [
74
+ { customKey: 'install-1' },
75
+ { customKey: 'install-2' },
76
+ ]);
77
+ });
78
+ it('uses default table key "id" when not specified', async () => {
79
+ const defaultKeyService = new ShopifyAppInstallsDbService('another-table');
80
+ mockSafeBatchGet.mockResolvedValueOnce([]);
81
+ await defaultKeyService.batchGetByIds(['install-1']);
82
+ expect(mockSafeBatchGet).toHaveBeenCalledWith('another-table', [{ id: 'install-1' }]);
83
+ });
84
+ });
85
+ describe('getShopifyAppInstallById', () => {
86
+ it('returns install when found', async () => {
87
+ const mockInstall = {
88
+ id: 'install-1',
89
+ shop: 'test-shop.myshopify.com',
90
+ };
91
+ mockSafeGet.mockResolvedValueOnce(mockInstall);
92
+ const result = await service.getShopifyAppInstallById('id', 'install-1');
93
+ expect(result).toEqual(mockInstall);
94
+ expect(mockSafeGet).toHaveBeenCalledWith(TABLE_NAME, 'id', 'install-1');
95
+ });
96
+ it('returns null when not found', async () => {
97
+ mockSafeGet.mockResolvedValueOnce(null);
98
+ const result = await service.getShopifyAppInstallById('id', 'nonexistent');
99
+ expect(result).toBeNull();
100
+ });
101
+ });
102
+ });
103
+ //# sourceMappingURL=shopify-app-installs-db-service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shopify-app-installs-db-service.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/db/shopify-app-installs-db-service.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ jest.mock('../../clients/generic/dynamodb-client.js', () => ({
2
+ DynamoDbClient: {
3
+ safeGet: jest.fn(),
4
+ safeQueryByGSI: jest.fn(),
5
+ safeBatchQueryByGSI: jest.fn(),
6
+ },
7
+ }));
8
+ jest.mock('../../helpers/index.js', () => ({
9
+ Logger: {
10
+ info: jest.fn(),
11
+ warn: jest.fn(),
12
+ error: jest.fn(),
13
+ debug: jest.fn(),
14
+ },
15
+ }));
16
+ import { DynamoDbClient } from '../../clients/generic/dynamodb-client.js';
17
+ import { SubscriptionsDbService } from '../../services/db/subscriptions-db-service.js';
18
+ const mockSafeBatchQueryByGSI = DynamoDbClient.safeBatchQueryByGSI;
19
+ const mockSafeQueryByGSI = DynamoDbClient.safeQueryByGSI;
20
+ describe('SubscriptionsDbService', () => {
21
+ const TABLE_NAME = 'test-subscriptions-table';
22
+ const service = new SubscriptionsDbService(TABLE_NAME);
23
+ beforeEach(() => {
24
+ jest.clearAllMocks();
25
+ });
26
+ afterEach(() => {
27
+ jest.restoreAllMocks();
28
+ });
29
+ describe('batchGetByAccountIds', () => {
30
+ const INDEX_NAME = 'GSI_ACCOUNT_ID';
31
+ const ACCOUNT_ID_KEY = 'accountId';
32
+ it('returns empty array for empty accountIds input', async () => {
33
+ mockSafeBatchQueryByGSI.mockResolvedValueOnce([]);
34
+ const result = await service.batchGetByAccountIds(INDEX_NAME, ACCOUNT_ID_KEY, []);
35
+ expect(result).toEqual([]);
36
+ expect(mockSafeBatchQueryByGSI).toHaveBeenCalledWith(TABLE_NAME, INDEX_NAME, ACCOUNT_ID_KEY, [], 10);
37
+ });
38
+ it('returns subscriptions for single accountId', async () => {
39
+ const mockSubscription = {
40
+ id: 'sub-1',
41
+ accountId: 'acc-1',
42
+ plan: 'pro',
43
+ };
44
+ mockSafeBatchQueryByGSI.mockResolvedValueOnce([mockSubscription]);
45
+ const result = await service.batchGetByAccountIds(INDEX_NAME, ACCOUNT_ID_KEY, ['acc-1']);
46
+ expect(result).toEqual([mockSubscription]);
47
+ expect(mockSafeBatchQueryByGSI).toHaveBeenCalledWith(TABLE_NAME, INDEX_NAME, ACCOUNT_ID_KEY, ['acc-1'], 10);
48
+ });
49
+ it('returns subscriptions for multiple accountIds', async () => {
50
+ const mockSubscriptions = [
51
+ { id: 'sub-1', accountId: 'acc-1', plan: 'pro' },
52
+ { id: 'sub-2', accountId: 'acc-2', plan: 'starter' },
53
+ { id: 'sub-3', accountId: 'acc-2', plan: 'addon' },
54
+ ];
55
+ mockSafeBatchQueryByGSI.mockResolvedValueOnce(mockSubscriptions);
56
+ const result = await service.batchGetByAccountIds(INDEX_NAME, ACCOUNT_ID_KEY, ['acc-1', 'acc-2']);
57
+ expect(result).toEqual(mockSubscriptions);
58
+ expect(mockSafeBatchQueryByGSI).toHaveBeenCalledWith(TABLE_NAME, INDEX_NAME, ACCOUNT_ID_KEY, ['acc-1', 'acc-2'], 10);
59
+ });
60
+ it('uses custom concurrency parameter', async () => {
61
+ mockSafeBatchQueryByGSI.mockResolvedValueOnce([]);
62
+ await service.batchGetByAccountIds(INDEX_NAME, ACCOUNT_ID_KEY, ['acc-1'], 5);
63
+ expect(mockSafeBatchQueryByGSI).toHaveBeenCalledWith(TABLE_NAME, INDEX_NAME, ACCOUNT_ID_KEY, ['acc-1'], 5);
64
+ });
65
+ it('calls safeBatchQueryByGSI with correct table name from constructor', async () => {
66
+ const customService = new SubscriptionsDbService('custom-table');
67
+ mockSafeBatchQueryByGSI.mockResolvedValueOnce([]);
68
+ await customService.batchGetByAccountIds(INDEX_NAME, ACCOUNT_ID_KEY, ['acc-1']);
69
+ expect(mockSafeBatchQueryByGSI).toHaveBeenCalledWith('custom-table', INDEX_NAME, ACCOUNT_ID_KEY, ['acc-1'], 10);
70
+ });
71
+ });
72
+ describe('getSubscriptionByAccountId', () => {
73
+ it('returns first subscription when found', async () => {
74
+ const mockSubscriptions = [
75
+ { id: 'sub-1', accountId: 'acc-1' },
76
+ { id: 'sub-2', accountId: 'acc-1' },
77
+ ];
78
+ mockSafeQueryByGSI.mockResolvedValueOnce(mockSubscriptions);
79
+ const result = await service.getSubscriptionByAccountId('GSI', 'accountId', 'acc-1');
80
+ expect(result).toEqual({ id: 'sub-1', accountId: 'acc-1' });
81
+ });
82
+ it('returns null when no subscriptions found', async () => {
83
+ mockSafeQueryByGSI.mockResolvedValueOnce([]);
84
+ const result = await service.getSubscriptionByAccountId('GSI', 'accountId', 'acc-1');
85
+ expect(result).toBeNull();
86
+ });
87
+ it('returns null when query returns null', async () => {
88
+ mockSafeQueryByGSI.mockResolvedValueOnce(null);
89
+ const result = await service.getSubscriptionByAccountId('GSI', 'accountId', 'acc-1');
90
+ expect(result).toBeNull();
91
+ });
92
+ });
93
+ });
94
+ //# sourceMappingURL=subscriptions-db-service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriptions-db-service.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/db/subscriptions-db-service.spec.ts"],"names":[],"mappings":"AAIA,IAAI,CAAC,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE,CAAC,CAAC;IAC3D,cAAc,EAAE;QACd,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;QAClB,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;QACzB,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE;KAC/B;CACF,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,MAAM,EAAE;QACN,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;QAChB,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;KACjB;CACF,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AAEvF,MAAM,uBAAuB,GAAG,cAAc,CAAC,mBAAgC,CAAC;AAChF,MAAM,kBAAkB,GAAG,cAAc,CAAC,cAA2B,CAAC;AAEtE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,MAAM,UAAU,GAAG,0BAA0B,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAEvD,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,MAAM,UAAU,GAAG,gBAAgB,CAAC;QACpC,MAAM,cAAc,GAAG,WAAW,CAAC;QAEnC,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,uBAAuB,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;YAElD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC,UAAU,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;YAElF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3B,MAAM,CAAC,uBAAuB,CAAC,CAAC,oBAAoB,CAClD,UAAU,EACV,UAAU,EACV,cAAc,EACd,EAAE,EACF,EAAE,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,gBAAgB,GAAG;gBACvB,EAAE,EAAE,OAAO;gBACX,SAAS,EAAE,OAAO;gBAClB,IAAI,EAAE,KAAK;aACZ,CAAC;YACF,uBAAuB,CAAC,qBAAqB,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAElE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;YAEzF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,uBAAuB,CAAC,CAAC,oBAAoB,CAClD,UAAU,EACV,UAAU,EACV,cAAc,EACd,CAAC,OAAO,CAAC,EACT,EAAE,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,iBAAiB,GAAG;gBACxB,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;gBAChD,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;gBACpD,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;aACnD,CAAC;YACF,uBAAuB,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;YAEjE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAElG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAC1C,MAAM,CAAC,uBAAuB,CAAC,CAAC,oBAAoB,CAClD,UAAU,EACV,UAAU,EACV,cAAc,EACd,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,EAAE,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,uBAAuB,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;YAElD,MAAM,OAAO,CAAC,oBAAoB,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YAE7E,MAAM,CAAC,uBAAuB,CAAC,CAAC,oBAAoB,CAClD,UAAU,EACV,UAAU,EACV,cAAc,EACd,CAAC,OAAO,CAAC,EACT,CAAC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;YAClF,MAAM,aAAa,GAAG,IAAI,sBAAsB,CAAC,cAAc,CAAC,CAAC;YACjE,uBAAuB,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;YAElD,MAAM,aAAa,CAAC,oBAAoB,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;YAEhF,MAAM,CAAC,uBAAuB,CAAC,CAAC,oBAAoB,CAClD,cAAc,EACd,UAAU,EACV,cAAc,EACd,CAAC,OAAO,CAAC,EACT,EAAE,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC1C,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;YACrD,MAAM,iBAAiB,GAAG;gBACxB,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE;gBACnC,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE;aACpC,CAAC;YACF,kBAAkB,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,0BAA0B,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YAErF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,kBAAkB,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;YAE7C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,0BAA0B,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YAErF,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAE/C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,0BAA0B,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YAErF,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,75 @@
1
+ jest.mock('../../clients/generic/dynamodb-client.js', () => ({
2
+ DynamoDbClient: {
3
+ safeBatchQueryByGSI: jest.fn(),
4
+ },
5
+ }));
6
+ import { DynamoDbClient } from '../../clients/generic/dynamodb-client.js';
7
+ import { UserAccountsDbService } from '../../services/db/user-accounts-db-service.js';
8
+ const mockSafeBatchQueryByGSI = DynamoDbClient.safeBatchQueryByGSI;
9
+ describe('UserAccountsDbService', () => {
10
+ const TABLE_NAME = 'test-user-accounts-table';
11
+ const service = new UserAccountsDbService(TABLE_NAME);
12
+ beforeEach(() => {
13
+ jest.clearAllMocks();
14
+ });
15
+ afterEach(() => {
16
+ jest.restoreAllMocks();
17
+ });
18
+ describe('batchGetByAccountIds', () => {
19
+ const INDEX_NAME = 'GSI_ACCOUNT_ID';
20
+ const ACCOUNT_ID_KEY = 'accountId';
21
+ it('returns empty array for empty accountIds input', async () => {
22
+ mockSafeBatchQueryByGSI.mockResolvedValueOnce([]);
23
+ const result = await service.batchGetByAccountIds(INDEX_NAME, ACCOUNT_ID_KEY, []);
24
+ expect(result).toEqual([]);
25
+ expect(mockSafeBatchQueryByGSI).toHaveBeenCalledWith(TABLE_NAME, INDEX_NAME, ACCOUNT_ID_KEY, [], 10);
26
+ });
27
+ it('returns user-account records for single accountId', async () => {
28
+ const mockRecord = {
29
+ userId: 'user-1',
30
+ accountId: 'acc-1',
31
+ role: 'admin',
32
+ };
33
+ mockSafeBatchQueryByGSI.mockResolvedValueOnce([mockRecord]);
34
+ const result = await service.batchGetByAccountIds(INDEX_NAME, ACCOUNT_ID_KEY, ['acc-1']);
35
+ expect(result).toEqual([mockRecord]);
36
+ expect(mockSafeBatchQueryByGSI).toHaveBeenCalledWith(TABLE_NAME, INDEX_NAME, ACCOUNT_ID_KEY, ['acc-1'], 10);
37
+ });
38
+ it('returns user-account records for multiple accountIds', async () => {
39
+ const mockRecords = [
40
+ { userId: 'user-1', accountId: 'acc-1', role: 'admin' },
41
+ { userId: 'user-2', accountId: 'acc-1', role: 'member' },
42
+ { userId: 'user-3', accountId: 'acc-2', role: 'owner' },
43
+ ];
44
+ mockSafeBatchQueryByGSI.mockResolvedValueOnce(mockRecords);
45
+ const result = await service.batchGetByAccountIds(INDEX_NAME, ACCOUNT_ID_KEY, ['acc-1', 'acc-2']);
46
+ expect(result).toEqual(mockRecords);
47
+ expect(mockSafeBatchQueryByGSI).toHaveBeenCalledWith(TABLE_NAME, INDEX_NAME, ACCOUNT_ID_KEY, ['acc-1', 'acc-2'], 10);
48
+ });
49
+ it('uses custom concurrency parameter', async () => {
50
+ mockSafeBatchQueryByGSI.mockResolvedValueOnce([]);
51
+ await service.batchGetByAccountIds(INDEX_NAME, ACCOUNT_ID_KEY, ['acc-1'], 5);
52
+ expect(mockSafeBatchQueryByGSI).toHaveBeenCalledWith(TABLE_NAME, INDEX_NAME, ACCOUNT_ID_KEY, ['acc-1'], 5);
53
+ });
54
+ it('uses default concurrency of 10', async () => {
55
+ mockSafeBatchQueryByGSI.mockResolvedValueOnce([]);
56
+ await service.batchGetByAccountIds(INDEX_NAME, ACCOUNT_ID_KEY, ['acc-1', 'acc-2', 'acc-3']);
57
+ expect(mockSafeBatchQueryByGSI).toHaveBeenCalledWith(TABLE_NAME, INDEX_NAME, ACCOUNT_ID_KEY, ['acc-1', 'acc-2', 'acc-3'], 10);
58
+ });
59
+ it('calls safeBatchQueryByGSI with correct table name from constructor', async () => {
60
+ const customService = new UserAccountsDbService('custom-table');
61
+ mockSafeBatchQueryByGSI.mockResolvedValueOnce([]);
62
+ await customService.batchGetByAccountIds(INDEX_NAME, ACCOUNT_ID_KEY, ['acc-1']);
63
+ expect(mockSafeBatchQueryByGSI).toHaveBeenCalledWith('custom-table', INDEX_NAME, ACCOUNT_ID_KEY, ['acc-1'], 10);
64
+ });
65
+ it('uses default table key "userId" when not specified', async () => {
66
+ const defaultKeyService = new UserAccountsDbService('another-table');
67
+ expect(defaultKeyService.TABLE_KEY).toBe('userId');
68
+ });
69
+ it('uses custom table key when specified', async () => {
70
+ const customKeyService = new UserAccountsDbService('another-table', 'customKey');
71
+ expect(customKeyService.TABLE_KEY).toBe('customKey');
72
+ });
73
+ });
74
+ });
75
+ //# sourceMappingURL=user-accounts-db-service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-accounts-db-service.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/db/user-accounts-db-service.spec.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ export declare class DynamoDbClient {
3
3
  static safePut: (tableName: string, data: any) => Promise<import("@aws-sdk/lib-dynamodb").PutCommandOutput | null>;
4
4
  static safeDelete: (tableName: string, keyName: string, keyValue: any) => Promise<import("@aws-sdk/lib-dynamodb").DeleteCommandOutput | null>;
5
5
  static safeQueryByGSI: (tableName: string, gsiName: string, keyName: string, keyValue: any) => Promise<any[] | null>;
6
- static safeBatchQueryByGSI: <T = Record<string, any>>(tableName: string, gsiName: string, keyName: string, keyValues: string[], concurrency?: number) => Promise<T[]>;
6
+ static safeBatchQueryByGSI: <T>(tableName: string, gsiName: string, keyName: string, keyValues: string[], concurrency?: number) => Promise<T[]>;
7
7
  static safeBatchGet: (tableName: string, keys: Record<string, any>[]) => Promise<Record<string, any>[]>;
8
8
  static safeBatchPut: (tableName: string, items: any[]) => Promise<import("@aws-sdk/lib-dynamodb").BatchWriteCommandOutput | null>;
9
9
  static safeBatchWrite: (tableName: string, items: Record<string, any>[]) => Promise<void>;
@@ -62,29 +62,36 @@ export class DynamoDbClient {
62
62
  }
63
63
  };
64
64
  static safeQueryByGSI = async (tableName, gsiName, keyName, keyValue) => {
65
- const query = {
66
- TableName: tableName,
67
- IndexName: gsiName,
68
- KeyConditionExpression: `${keyName} = :value`,
69
- ExpressionAttributeValues: {
70
- ':value': keyValue,
71
- },
72
- };
73
- const results = await DynamoDbClient.queryAll(query);
74
- return results;
65
+ try {
66
+ const query = {
67
+ TableName: tableName,
68
+ IndexName: gsiName,
69
+ KeyConditionExpression: `${keyName} = :value`,
70
+ ExpressionAttributeValues: {
71
+ ':value': keyValue,
72
+ },
73
+ };
74
+ const results = await DynamoDbClient.queryAll(query);
75
+ return results;
76
+ }
77
+ catch (error) {
78
+ Logger.error(error, { message: 'safeQueryByGSI failed', tableName, gsiName, keyName, keyValue });
79
+ return null;
80
+ }
75
81
  };
76
82
  static safeBatchQueryByGSI = async (tableName, gsiName, keyName, keyValues, concurrency = 10) => {
77
- if (!tableName || !gsiName || keyValues.length === 0) {
83
+ if (keyValues.length === 0) {
78
84
  return [];
79
85
  }
80
86
  const uniqueValues = [...new Set(keyValues)];
81
87
  const results = [];
82
- for (let i = 0; i < uniqueValues.length; i += concurrency) {
83
- const chunk = uniqueValues.slice(i, i + concurrency);
84
- const chunkResults = await Promise.all(chunk.map((value) => DynamoDbClient.safeQueryByGSI(tableName, gsiName, keyName, value)));
85
- for (const items of chunkResults) {
86
- if (items) {
87
- results.push(...items);
88
+ const chunks = chunkArray(uniqueValues, concurrency);
89
+ for (const chunk of chunks) {
90
+ const queries = chunk.map((value) => DynamoDbClient.safeQueryByGSI(tableName, gsiName, keyName, value));
91
+ const chunkResults = await Promise.all(queries);
92
+ for (const queryResult of chunkResults) {
93
+ if (queryResult) {
94
+ results.push(...queryResult);
88
95
  }
89
96
  }
90
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dynamodb-client.js","sourceRoot":"","sources":["../../../../src/clients/generic/dynamodb-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dynamodb-client.js","sourceRoot":"","sources":["../../../../src/clients/generic/dynamodb-client.ts"],"names":[],"mappings":"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"}
@@ -8,5 +8,6 @@ export declare class DestinationsDbService {
8
8
  getDestinationsByAccountId: (indexName: string, accountId: string) => Promise<Destination[]>;
9
9
  getDestinationsByDestinationType: (indexName: string, destinationType: string) => Promise<Destination[]>;
10
10
  batchGetDestinationsById: (ids: string[]) => Promise<Destination[]>;
11
+ batchGetByPixelIds: (indexName: string, pixelIds: string[], concurrency?: number) => Promise<Destination[]>;
11
12
  getDestinationsByDestination: (indexName: string, destinationKey: string) => Promise<Destination[]>;
12
13
  }
@@ -7,14 +7,8 @@ export class DestinationsDbService {
7
7
  this.TABLE_KEY = 'id';
8
8
  }
9
9
  getDestinationById = async (id) => {
10
- const query = {
11
- TableName: this.TABLE_NAME,
12
- Key: {
13
- id,
14
- },
15
- };
16
- const destination = await DynamoDbClient.get(query);
17
- return destination?.Item ?? null;
10
+ const destination = await DynamoDbClient.safeGet(this.TABLE_NAME, this.TABLE_KEY, id);
11
+ return destination ?? null;
18
12
  };
19
13
  getDestinationsByPixel = async (indexName, pixelId) => {
20
14
  const query = {
@@ -57,6 +51,10 @@ export class DestinationsDbService {
57
51
  const destinations = await DynamoDbClient.safeBatchGet(this.TABLE_NAME, keys);
58
52
  return (destinations ?? []);
59
53
  };
54
+ batchGetByPixelIds = async (indexName, pixelIds, concurrency = 10) => {
55
+ const destinations = await DynamoDbClient.safeBatchQueryByGSI(this.TABLE_NAME, indexName, 'pixelId', pixelIds, concurrency);
56
+ return destinations;
57
+ };
60
58
  getDestinationsByDestination = async (indexName, destinationKey) => {
61
59
  const query = {
62
60
  TableName: this.TABLE_NAME,
@@ -1 +1 @@
1
- {"version":3,"file":"destinations-db-service.js","sourceRoot":"","sources":["../../../../src/services/db/destinations-db-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,OAAO,qBAAqB;IACzB,UAAU,CAAS;IACnB,SAAS,CAAS;IAEzB,YAAY,SAAiB;QAC3B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAEM,kBAAkB,GAAG,KAAK,EAAE,EAAU,EAA+B,EAAE;QAC5E,MAAM,KAAK,GAAG;YACZ,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,GAAG,EAAE;gBACH,EAAE;aACH;SACF,CAAC;QACF,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpD,OAAQ,WAAW,EAAE,IAAoB,IAAI,IAAI,CAAC;IACpD,CAAC,CAAC;IAEK,sBAAsB,GAAG,KAAK,EAAE,SAAiB,EAAE,OAAe,EAA0B,EAAE;QACnG,MAAM,KAAK,GAAG;YACZ,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,SAAS,EAAE,SAAS;YACpB,sBAAsB,EAAE,oBAAoB;YAC5C,yBAAyB,EAAE;gBACzB,UAAU,EAAE,OAAO;aACpB;SACF,CAAC;QACF,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1D,OAAO,YAAY,IAAI,EAAE,CAAC;IAC5B,CAAC,CAAC;IAEK,0BAA0B,GAAG,KAAK,EAAE,SAAiB,EAAE,SAAiB,EAA0B,EAAE;QACzG,MAAM,KAAK,GAAG;YACZ,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,SAAS,EAAE,SAAS;YACpB,sBAAsB,EAAE,wBAAwB;YAChD,yBAAyB,EAAE;gBACzB,YAAY,EAAE,SAAS;aACxB;SACF,CAAC;QACF,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1D,OAAO,YAAY,IAAI,EAAE,CAAC;IAC5B,CAAC,CAAC;IAEK,gCAAgC,GAAG,KAAK,EAC7C,SAAiB,EACjB,eAAuB,EACC,EAAE;QAC1B,MAAM,KAAK,GAAG;YACZ,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,SAAS,EAAE,SAAS;YACpB,sBAAsB,EAAE,oCAAoC;YAC5D,yBAAyB,EAAE;gBACzB,kBAAkB,EAAE,eAAe;aACpC;SACF,CAAC;QACF,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1D,OAAO,YAAY,IAAI,EAAE,CAAC;IAC5B,CAAC,CAAC;IAEK,wBAAwB,GAAG,KAAK,EAAE,GAAa,EAA0B,EAAE;QAChF,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC9E,OAAO,CAAC,YAAY,IAAI,EAAE,CAAkB,CAAC;IAC/C,CAAC,CAAC;IAUK,4BAA4B,GAAG,KAAK,EAAE,SAAiB,EAAE,cAAsB,EAA0B,EAAE;QAChH,MAAM,KAAK,GAAG;YACZ,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,SAAS,EAAE,SAAS;YACpB,sBAAsB,EAAE,4BAA4B;YACpD,yBAAyB,EAAE;gBACzB,cAAc,EAAE,cAAc;aAC/B;SACF,CAAC;QACF,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1D,OAAO,YAAY,IAAI,EAAE,CAAC;IAC5B,CAAC,CAAC;CACH"}
1
+ {"version":3,"file":"destinations-db-service.js","sourceRoot":"","sources":["../../../../src/services/db/destinations-db-service.ts"],"names":[],"mappings":"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"}
@@ -12,5 +12,6 @@ export * from './identity-cache-dynamodb-service.js';
12
12
  export * from './currency-exchange-rates-db-service.js';
13
13
  export * from './accounts-db-service.js';
14
14
  export * from './subscriptions-db-service.js';
15
+ export * from './user-accounts-db-service.js';
15
16
  export * from './api-keys-db-service.js';
16
17
  export * from './custom-measures-db-service.js';
@@ -12,6 +12,7 @@ export * from './identity-cache-dynamodb-service.js';
12
12
  export * from './currency-exchange-rates-db-service.js';
13
13
  export * from './accounts-db-service.js';
14
14
  export * from './subscriptions-db-service.js';
15
+ export * from './user-accounts-db-service.js';
15
16
  export * from './api-keys-db-service.js';
16
17
  export * from './custom-measures-db-service.js';
17
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/db/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AACxD,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/db/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,yCAAyC,CAAC;AACxD,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC"}
@@ -1,8 +1,10 @@
1
1
  import { type ShopifyAppInstall } from '@adtrackify/at-tracking-event-types';
2
2
  export declare class ShopifyAppInstallsDbService {
3
3
  TABLE_NAME: string;
4
- constructor(tableName: string);
4
+ TABLE_KEY: string;
5
+ constructor(tableName: string, tableKey?: string);
5
6
  getShopifyAppInstallById: (tableKey: string, shopifyAppInstallId: string) => Promise<ShopifyAppInstall | null>;
6
7
  getShopifyAppInstallByShop: (indexName: string, shop: string) => Promise<ShopifyAppInstall | null>;
7
8
  getShopifyAppInstallByPixelId: (indexName: string, pixelId: string) => Promise<ShopifyAppInstall | null>;
9
+ batchGetByIds: (shopifyAppInstallIds: string[]) => Promise<ShopifyAppInstall[]>;
8
10
  }
@@ -2,8 +2,10 @@ import { DynamoDbClient } from '../../clients/generic/dynamodb-client.js';
2
2
  import { Logger } from '../../helpers/index.js';
3
3
  export class ShopifyAppInstallsDbService {
4
4
  TABLE_NAME;
5
- constructor(tableName) {
5
+ TABLE_KEY;
6
+ constructor(tableName, tableKey = 'id') {
6
7
  this.TABLE_NAME = tableName;
8
+ this.TABLE_KEY = tableKey;
7
9
  }
8
10
  getShopifyAppInstallById = async (tableKey, shopifyAppInstallId) => {
9
11
  const shopifyAppInstall = await DynamoDbClient.safeGet(this.TABLE_NAME, tableKey, shopifyAppInstallId);
@@ -32,17 +34,16 @@ export class ShopifyAppInstallsDbService {
32
34
  }
33
35
  };
34
36
  getShopifyAppInstallByPixelId = async (indexName, pixelId) => {
35
- try {
36
- const shopifyAppInstalls = await DynamoDbClient.safeQueryByGSI(this.TABLE_NAME, indexName, 'pixelId', pixelId);
37
- if (shopifyAppInstalls && shopifyAppInstalls?.length > 0) {
38
- return shopifyAppInstalls[0];
39
- }
40
- return null;
41
- }
42
- catch (error) {
43
- Logger.error('failed to fetch shopifyAppInstall by pixelId', { error, indexName, pixelId });
44
- return null;
37
+ const shopifyAppInstalls = await DynamoDbClient.safeQueryByGSI(this.TABLE_NAME, indexName, 'pixelId', pixelId);
38
+ if (shopifyAppInstalls && shopifyAppInstalls.length > 0) {
39
+ return shopifyAppInstalls[0];
45
40
  }
41
+ return null;
42
+ };
43
+ batchGetByIds = async (shopifyAppInstallIds) => {
44
+ const keys = shopifyAppInstallIds.map((id) => ({ [this.TABLE_KEY]: id }));
45
+ const installs = await DynamoDbClient.safeBatchGet(this.TABLE_NAME, keys);
46
+ return (installs ?? []);
46
47
  };
47
48
  }
48
49
  //# sourceMappingURL=shopify-app-installs-db-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shopify-app-installs-db-service.js","sourceRoot":"","sources":["../../../../src/services/db/shopify-app-installs-db-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,MAAM,OAAO,2BAA2B;IAC/B,UAAU,CAAS;IAE1B,YAAY,SAAiB;QAC3B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAEM,wBAAwB,GAAG,KAAK,EACrC,QAAgB,EAChB,mBAA2B,EACQ,EAAE;QACrC,MAAM,iBAAiB,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QACvG,OAAQ,iBAAuC,IAAI,IAAI,CAAC;IAC1D,CAAC,CAAC;IAEK,0BAA0B,GAAG,KAAK,EAAE,SAAiB,EAAE,IAAY,EAAqC,EAAE;QAC/G,IAAI;YACF,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,IAAI;aACd,CAAC;YACF,MAAM,KAAK,GAAG;gBACZ,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,SAAS,EAAE,SAAS;gBACpB,sBAAsB,EAAE,cAAc;gBACtC,yBAAyB,EAAE,MAAM;aAClC,CAAC;YACF,MAAM,kBAAkB,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChE,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvD,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC;aAC9B;YACD,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChF,OAAO,IAAI,CAAC;SACb;IACH,CAAC,CAAC;IAEK,6BAA6B,GAAG,KAAK,EAC1C,SAAiB,EACjB,OAAe,EACoB,EAAE;QACrC,IAAI;YACF,MAAM,kBAAkB,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAC/G,IAAI,kBAAkB,IAAI,kBAAkB,EAAE,MAAM,GAAG,CAAC,EAAE;gBACxD,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC;aAC9B;YACD,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5F,OAAO,IAAI,CAAC;SACb;IACH,CAAC,CAAC;CACH"}
1
+ {"version":3,"file":"shopify-app-installs-db-service.js","sourceRoot":"","sources":["../../../../src/services/db/shopify-app-installs-db-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,MAAM,OAAO,2BAA2B;IAC/B,UAAU,CAAS;IACnB,SAAS,CAAS;IAEzB,YAAY,SAAiB,EAAE,QAAQ,GAAG,IAAI;QAC5C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAEM,wBAAwB,GAAG,KAAK,EACrC,QAAgB,EAChB,mBAA2B,EACQ,EAAE;QACrC,MAAM,iBAAiB,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QACvG,OAAQ,iBAAuC,IAAI,IAAI,CAAC;IAC1D,CAAC,CAAC;IAEK,0BAA0B,GAAG,KAAK,EAAE,SAAiB,EAAE,IAAY,EAAqC,EAAE;QAC/G,IAAI;YACF,MAAM,MAAM,GAAG;gBACb,OAAO,EAAE,IAAI;aACd,CAAC;YACF,MAAM,KAAK,GAAG;gBACZ,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,SAAS,EAAE,SAAS;gBACpB,sBAAsB,EAAE,cAAc;gBACtC,yBAAyB,EAAE,MAAM;aAClC,CAAC;YACF,MAAM,kBAAkB,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChE,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvD,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC;aAC9B;YACD,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAChF,OAAO,IAAI,CAAC;SACb;IACH,CAAC,CAAC;IAEK,6BAA6B,GAAG,KAAK,EAC1C,SAAiB,EACjB,OAAe,EACoB,EAAE;QACrC,MAAM,kBAAkB,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/G,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YACvD,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC;SAC9B;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAMK,aAAa,GAAG,KAAK,EAAE,oBAA8B,EAAgC,EAAE;QAC5F,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC1E,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAwB,CAAC;IACjD,CAAC,CAAC;CACH"}
@@ -6,5 +6,6 @@ export declare class SubscriptionsDbService {
6
6
  getSubscriptionById: (subscriptionId: string) => Promise<Subscription | null>;
7
7
  getSubscriptionByAccountId: (indexName: string, accountIdKey: string, accountId: string) => Promise<Subscription | null>;
8
8
  getSubscriptionByShopifyAppInstallId: (indexName: string, shopifyAppInstallIdKey: string, shopifyAppInstallId: string) => Promise<Subscription | null>;
9
+ batchGetByAccountIds: (indexName: string, accountIdKey: string, accountIds: string[], concurrency?: number) => Promise<Subscription[]>;
9
10
  private getFirstSubscription;
10
11
  }
@@ -21,6 +21,10 @@ export class SubscriptionsDbService {
21
21
  const subscriptions = await DynamoDbClient.safeQueryByGSI(this.TABLE_NAME, indexName, shopifyAppInstallIdKey, shopifyAppInstallId);
22
22
  return this.getFirstSubscription(subscriptions);
23
23
  };
24
+ batchGetByAccountIds = async (indexName, accountIdKey, accountIds, concurrency = 10) => {
25
+ const subscriptions = await DynamoDbClient.safeBatchQueryByGSI(this.TABLE_NAME, indexName, accountIdKey, accountIds, concurrency);
26
+ return subscriptions;
27
+ };
24
28
  getFirstSubscription = (subscriptions) => {
25
29
  if (!subscriptions || subscriptions.length === 0) {
26
30
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"subscriptions-db-service.js","sourceRoot":"","sources":["../../../../src/services/db/subscriptions-db-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,MAAM,OAAO,sBAAsB;IAC1B,UAAU,CAAS;IACnB,SAAS,CAAS;IAEzB,YAAY,SAAiB,EAAE,QAAQ,GAAG,IAAI;QAC5C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAEM,mBAAmB,GAAG,KAAK,EAAE,cAAsB,EAAgC,EAAE;QAC1F,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACnG,OAAQ,YAA6B,IAAI,IAAI,CAAC;IAChD,CAAC,CAAC;IAEK,0BAA0B,GAAG,KAAK,EACvC,SAAiB,EACjB,YAAoB,EACpB,SAAiB,EACa,EAAE;QAChC,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QAC/G,OAAO,IAAI,CAAC,oBAAoB,CAAC,aAAsC,CAAC,CAAC;IAC3E,CAAC,CAAC;IAEK,oCAAoC,GAAG,KAAK,EACjD,SAAiB,EACjB,sBAA8B,EAC9B,mBAA2B,EACG,EAAE;QAChC,MAAM,CAAC,IAAI,CAAC,mDAAmD,EAAE,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC1F,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,cAAc,CACvD,IAAI,CAAC,UAAU,EACf,SAAS,EACT,sBAAsB,EACtB,mBAAmB,CACpB,CAAC;QACF,OAAO,IAAI,CAAC,oBAAoB,CAAC,aAAsC,CAAC,CAAC;IAC3E,CAAC,CAAC;IAEM,oBAAoB,GAAG,CAAC,aAAoC,EAAuB,EAAE;QAC3F,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YAChD,OAAO,IAAI,CAAC;SACb;QACD,OAAO,aAAa,CAAC,CAAC,CAAiB,CAAC;IAC1C,CAAC,CAAC;CACH"}
1
+ {"version":3,"file":"subscriptions-db-service.js","sourceRoot":"","sources":["../../../../src/services/db/subscriptions-db-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,MAAM,OAAO,sBAAsB;IAC1B,UAAU,CAAS;IACnB,SAAS,CAAS;IAEzB,YAAY,SAAiB,EAAE,QAAQ,GAAG,IAAI;QAC5C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAEM,mBAAmB,GAAG,KAAK,EAAE,cAAsB,EAAgC,EAAE;QAC1F,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACnG,OAAQ,YAA6B,IAAI,IAAI,CAAC;IAChD,CAAC,CAAC;IAEK,0BAA0B,GAAG,KAAK,EACvC,SAAiB,EACjB,YAAoB,EACpB,SAAiB,EACa,EAAE;QAChC,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QACpE,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QAC/G,OAAO,IAAI,CAAC,oBAAoB,CAAC,aAAsC,CAAC,CAAC;IAC3E,CAAC,CAAC;IAEK,oCAAoC,GAAG,KAAK,EACjD,SAAiB,EACjB,sBAA8B,EAC9B,mBAA2B,EACG,EAAE;QAChC,MAAM,CAAC,IAAI,CAAC,mDAAmD,EAAE,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC1F,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,cAAc,CACvD,IAAI,CAAC,UAAU,EACf,SAAS,EACT,sBAAsB,EACtB,mBAAmB,CACpB,CAAC;QACF,OAAO,IAAI,CAAC,oBAAoB,CAAC,aAAsC,CAAC,CAAC;IAC3E,CAAC,CAAC;IAMK,oBAAoB,GAAG,KAAK,EACjC,SAAiB,EACjB,YAAoB,EACpB,UAAoB,EACpB,WAAW,GAAG,EAAE,EACS,EAAE;QAC3B,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,mBAAmB,CAC5D,IAAI,CAAC,UAAU,EACf,SAAS,EACT,YAAY,EACZ,UAAU,EACV,WAAW,CACZ,CAAC;QACF,OAAO,aAA+B,CAAC;IACzC,CAAC,CAAC;IAEM,oBAAoB,GAAG,CAAC,aAAoC,EAAuB,EAAE;QAC3F,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;YAChD,OAAO,IAAI,CAAC;SACb;QACD,OAAO,aAAa,CAAC,CAAC,CAAiB,CAAC;IAC1C,CAAC,CAAC;CACH"}
@@ -0,0 +1,7 @@
1
+ import { type UserAccountRecord } from '@adtrackify/at-tracking-event-types';
2
+ export declare class UserAccountsDbService {
3
+ TABLE_NAME: string;
4
+ TABLE_KEY: string;
5
+ constructor(tableName: string, tableKey?: string);
6
+ batchGetByAccountIds: (indexName: string, accountIdKey: string, accountIds: string[], concurrency?: number) => Promise<UserAccountRecord[]>;
7
+ }
@@ -0,0 +1,14 @@
1
+ import { DynamoDbClient } from '../../clients/generic/dynamodb-client.js';
2
+ export class UserAccountsDbService {
3
+ TABLE_NAME;
4
+ TABLE_KEY;
5
+ constructor(tableName, tableKey = 'userId') {
6
+ this.TABLE_NAME = tableName;
7
+ this.TABLE_KEY = tableKey;
8
+ }
9
+ batchGetByAccountIds = async (indexName, accountIdKey, accountIds, concurrency = 10) => {
10
+ const records = await DynamoDbClient.safeBatchQueryByGSI(this.TABLE_NAME, indexName, accountIdKey, accountIds, concurrency);
11
+ return records;
12
+ };
13
+ }
14
+ //# sourceMappingURL=user-accounts-db-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-accounts-db-service.js","sourceRoot":"","sources":["../../../../src/services/db/user-accounts-db-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAE1E,MAAM,OAAO,qBAAqB;IACzB,UAAU,CAAS;IACnB,SAAS,CAAS;IAEzB,YAAY,SAAiB,EAAE,QAAQ,GAAG,QAAQ;QAChD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAMM,oBAAoB,GAAG,KAAK,EACjC,SAAiB,EACjB,YAAoB,EACpB,UAAoB,EACpB,WAAW,GAAG,EAAE,EACc,EAAE;QAChC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,mBAAmB,CACtD,IAAI,CAAC,UAAU,EACf,SAAS,EACT,YAAY,EACZ,UAAU,EACV,WAAW,CACZ,CAAC;QACF,OAAO,OAA8B,CAAC;IACxC,CAAC,CAAC;CACH"}