@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.
- package/dist/cjs/__tests__/clients/cross-platform-compression.spec.js +1 -1
- package/dist/cjs/__tests__/clients/cross-platform-compression.spec.js.map +1 -1
- package/dist/cjs/__tests__/clients/dynamodb-client.spec.js +161 -121
- package/dist/cjs/__tests__/clients/dynamodb-client.spec.js.map +1 -1
- package/dist/cjs/__tests__/db/destinations-db-service.spec.d.ts +1 -0
- package/dist/cjs/__tests__/db/destinations-db-service.spec.js +126 -0
- package/dist/cjs/__tests__/db/destinations-db-service.spec.js.map +1 -0
- package/dist/cjs/__tests__/db/shopify-app-installs-db-service.spec.d.ts +1 -0
- package/dist/cjs/__tests__/db/shopify-app-installs-db-service.spec.js +105 -0
- package/dist/cjs/__tests__/db/shopify-app-installs-db-service.spec.js.map +1 -0
- package/dist/cjs/__tests__/db/subscriptions-db-service.spec.d.ts +1 -0
- package/dist/cjs/__tests__/db/subscriptions-db-service.spec.js +96 -0
- package/dist/cjs/__tests__/db/subscriptions-db-service.spec.js.map +1 -0
- package/dist/cjs/__tests__/db/user-accounts-db-service.spec.d.ts +1 -0
- package/dist/cjs/__tests__/db/user-accounts-db-service.spec.js +77 -0
- package/dist/cjs/__tests__/db/user-accounts-db-service.spec.js.map +1 -0
- package/dist/cjs/clients/generic/dynamodb-client.d.ts +1 -1
- package/dist/cjs/clients/generic/dynamodb-client.js +24 -17
- package/dist/cjs/clients/generic/dynamodb-client.js.map +1 -1
- package/dist/cjs/services/db/destinations-db-service.d.ts +1 -0
- package/dist/cjs/services/db/destinations-db-service.js +6 -8
- package/dist/cjs/services/db/destinations-db-service.js.map +1 -1
- package/dist/cjs/services/db/index.d.ts +1 -0
- package/dist/cjs/services/db/index.js +1 -0
- package/dist/cjs/services/db/index.js.map +1 -1
- package/dist/cjs/services/db/shopify-app-installs-db-service.d.ts +3 -1
- package/dist/cjs/services/db/shopify-app-installs-db-service.js +12 -11
- package/dist/cjs/services/db/shopify-app-installs-db-service.js.map +1 -1
- package/dist/cjs/services/db/subscriptions-db-service.d.ts +1 -0
- package/dist/cjs/services/db/subscriptions-db-service.js +4 -0
- package/dist/cjs/services/db/subscriptions-db-service.js.map +1 -1
- package/dist/cjs/services/db/user-accounts-db-service.d.ts +7 -0
- package/dist/cjs/services/db/user-accounts-db-service.js +18 -0
- package/dist/cjs/services/db/user-accounts-db-service.js.map +1 -0
- package/dist/cjs/types/shopify-graphql-types/admin.generated.d.ts +38 -38
- package/dist/cjs/types/shopify-graphql-types/admin.types.js.map +1 -1
- package/dist/esm/__tests__/clients/cross-platform-compression.spec.js +1 -1
- package/dist/esm/__tests__/clients/cross-platform-compression.spec.js.map +1 -1
- package/dist/esm/__tests__/clients/dynamodb-client.spec.js +161 -121
- package/dist/esm/__tests__/clients/dynamodb-client.spec.js.map +1 -1
- package/dist/esm/__tests__/db/destinations-db-service.spec.d.ts +1 -0
- package/dist/esm/__tests__/db/destinations-db-service.spec.js +124 -0
- package/dist/esm/__tests__/db/destinations-db-service.spec.js.map +1 -0
- package/dist/esm/__tests__/db/shopify-app-installs-db-service.spec.d.ts +1 -0
- package/dist/esm/__tests__/db/shopify-app-installs-db-service.spec.js +103 -0
- package/dist/esm/__tests__/db/shopify-app-installs-db-service.spec.js.map +1 -0
- package/dist/esm/__tests__/db/subscriptions-db-service.spec.d.ts +1 -0
- package/dist/esm/__tests__/db/subscriptions-db-service.spec.js +94 -0
- package/dist/esm/__tests__/db/subscriptions-db-service.spec.js.map +1 -0
- package/dist/esm/__tests__/db/user-accounts-db-service.spec.d.ts +1 -0
- package/dist/esm/__tests__/db/user-accounts-db-service.spec.js +75 -0
- package/dist/esm/__tests__/db/user-accounts-db-service.spec.js.map +1 -0
- package/dist/esm/clients/generic/dynamodb-client.d.ts +1 -1
- package/dist/esm/clients/generic/dynamodb-client.js +24 -17
- package/dist/esm/clients/generic/dynamodb-client.js.map +1 -1
- package/dist/esm/services/db/destinations-db-service.d.ts +1 -0
- package/dist/esm/services/db/destinations-db-service.js +6 -8
- package/dist/esm/services/db/destinations-db-service.js.map +1 -1
- package/dist/esm/services/db/index.d.ts +1 -0
- package/dist/esm/services/db/index.js +1 -0
- package/dist/esm/services/db/index.js.map +1 -1
- package/dist/esm/services/db/shopify-app-installs-db-service.d.ts +3 -1
- package/dist/esm/services/db/shopify-app-installs-db-service.js +12 -11
- package/dist/esm/services/db/shopify-app-installs-db-service.js.map +1 -1
- package/dist/esm/services/db/subscriptions-db-service.d.ts +1 -0
- package/dist/esm/services/db/subscriptions-db-service.js +4 -0
- package/dist/esm/services/db/subscriptions-db-service.js.map +1 -1
- package/dist/esm/services/db/user-accounts-db-service.d.ts +7 -0
- package/dist/esm/services/db/user-accounts-db-service.js +14 -0
- package/dist/esm/services/db/user-accounts-db-service.js.map +1 -0
- package/dist/esm/types/shopify-graphql-types/admin.generated.d.ts +38 -38
- package/dist/esm/types/shopify-graphql-types/admin.types.js.map +1 -1
- 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 @@
|
|
|
1
|
+
export {};
|
|
@@ -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":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -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
|
|
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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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 (
|
|
83
|
+
if (keyValues.length === 0) {
|
|
78
84
|
return [];
|
|
79
85
|
}
|
|
80
86
|
const uniqueValues = [...new Set(keyValues)];
|
|
81
87
|
const results = [];
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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":"
|
|
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
|
|
11
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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;
|
|
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"}
|