@webiny/api-audit-logs 6.3.0 → 6.4.0-beta.0
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/abstractions.js +2 -3
- package/abstractions.js.map +1 -1
- package/config.js +2 -1
- package/config.js.map +1 -1
- package/context/AuditLogsContextValue.js +115 -125
- package/context/AuditLogsContextValue.js.map +1 -1
- package/context/index.js +21 -27
- package/context/index.js.map +1 -1
- package/events/AuditLogAfterCreateEvent.js +8 -5
- package/events/AuditLogAfterCreateEvent.js.map +1 -1
- package/events/AuditLogAfterUpdateEvent.js +8 -5
- package/events/AuditLogAfterUpdateEvent.js.map +1 -1
- package/events/AuditLogBeforeCreateEvent.js +8 -5
- package/events/AuditLogBeforeCreateEvent.js.map +1 -1
- package/events/AuditLogBeforeUpdateEvent.js +8 -5
- package/events/AuditLogBeforeUpdateEvent.js.map +1 -1
- package/events/abstractions.js +5 -24
- package/events/abstractions.js.map +1 -1
- package/events/index.js +0 -2
- package/graphql/schema.js +37 -48
- package/graphql/schema.js.map +1 -1
- package/graphql/validation.d.ts +3 -3
- package/graphql/validation.js +26 -30
- package/graphql/validation.js.map +1 -1
- package/index.js +18 -15
- package/index.js.map +1 -1
- package/package.json +26 -26
- package/storage/AccessPatternHandler.js +31 -52
- package/storage/AccessPatternHandler.js.map +1 -1
- package/storage/Converter.js +45 -48
- package/storage/Converter.js.map +1 -1
- package/storage/Storage.js +69 -77
- package/storage/Storage.js.map +1 -1
- package/storage/abstractions/AccessPattern.js +0 -3
- package/storage/abstractions/AccessPatternHandler.js +0 -3
- package/storage/abstractions/Converter.js +0 -3
- package/storage/abstractions/Storage.js +0 -3
- package/storage/accessPatterns/AppAccessPattern.js +31 -25
- package/storage/accessPatterns/AppAccessPattern.js.map +1 -1
- package/storage/accessPatterns/AppCreatedByAccessPattern.js +34 -28
- package/storage/accessPatterns/AppCreatedByAccessPattern.js.map +1 -1
- package/storage/accessPatterns/AppEntityAccessPattern.js +31 -25
- package/storage/accessPatterns/AppEntityAccessPattern.js.map +1 -1
- package/storage/accessPatterns/AppEntityActionAccessPattern.js +31 -25
- package/storage/accessPatterns/AppEntityActionAccessPattern.js.map +1 -1
- package/storage/accessPatterns/AppEntityActionCreatedByAccessPattern.js +34 -28
- package/storage/accessPatterns/AppEntityActionCreatedByAccessPattern.js.map +1 -1
- package/storage/accessPatterns/AppEntityCreatedByAccessPattern.js +34 -28
- package/storage/accessPatterns/AppEntityCreatedByAccessPattern.js.map +1 -1
- package/storage/accessPatterns/BaseAccessPattern.js +47 -70
- package/storage/accessPatterns/BaseAccessPattern.js.map +1 -1
- package/storage/accessPatterns/CreatedByAccessPattern.js +34 -28
- package/storage/accessPatterns/CreatedByAccessPattern.js.map +1 -1
- package/storage/accessPatterns/CreatedOnAccessPattern.js +34 -26
- package/storage/accessPatterns/CreatedOnAccessPattern.js.map +1 -1
- package/storage/accessPatterns/DefaultAccessPattern.js +31 -32
- package/storage/accessPatterns/DefaultAccessPattern.js.map +1 -1
- package/storage/accessPatterns/EntityIdAccessPattern.js +32 -27
- package/storage/accessPatterns/EntityIdAccessPattern.js.map +1 -1
- package/storage/accessPatterns/index.js +44 -34
- package/storage/accessPatterns/index.js.map +1 -1
- package/storage/cursorSchema.js +15 -18
- package/storage/cursorSchema.js.map +1 -1
- package/storage/entity.js +115 -122
- package/storage/entity.js.map +1 -1
- package/storage/results/ListErrorResult.js +9 -8
- package/storage/results/ListErrorResult.js.map +1 -1
- package/storage/results/ListSuccessResult.js +13 -12
- package/storage/results/ListSuccessResult.js.map +1 -1
- package/storage/results/index.js +0 -2
- package/storage/startKey.js +4 -5
- package/storage/startKey.js.map +1 -1
- package/storage/types.js +0 -3
- package/subscriptions/aco/handlers/AuditLogFolderAfterCreateHandler.js +26 -25
- package/subscriptions/aco/handlers/AuditLogFolderAfterCreateHandler.js.map +1 -1
- package/subscriptions/aco/handlers/AuditLogFolderAfterDeleteHandler.js +29 -28
- package/subscriptions/aco/handlers/AuditLogFolderAfterDeleteHandler.js.map +1 -1
- package/subscriptions/aco/handlers/AuditLogFolderAfterUpdateHandler.js +32 -32
- package/subscriptions/aco/handlers/AuditLogFolderAfterUpdateHandler.js.map +1 -1
- package/subscriptions/aco/index.js +5 -4
- package/subscriptions/aco/index.js.map +1 -1
- package/subscriptions/fileManager/handlers/AuditLogFileAfterCreateHandler.js +21 -20
- package/subscriptions/fileManager/handlers/AuditLogFileAfterCreateHandler.js.map +1 -1
- package/subscriptions/fileManager/handlers/AuditLogFileAfterDeleteHandler.js +21 -20
- package/subscriptions/fileManager/handlers/AuditLogFileAfterDeleteHandler.js.map +1 -1
- package/subscriptions/fileManager/handlers/AuditLogFileAfterUpdateHandler.js +24 -24
- package/subscriptions/fileManager/handlers/AuditLogFileAfterUpdateHandler.js.map +1 -1
- package/subscriptions/fileManager/handlers/AuditLogSettingsAfterUpdateHandler.js +24 -24
- package/subscriptions/fileManager/handlers/AuditLogSettingsAfterUpdateHandler.js.map +1 -1
- package/subscriptions/fileManager/index.js +6 -8
- package/subscriptions/fileManager/index.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterCreateEventHandler.js +21 -23
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterCreateEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterDeleteEventHandler.js +26 -29
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterDeleteEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterPublishEventHandler.js +21 -23
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterPublishEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterRestoreFromBinEventHandler.js +21 -23
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterRestoreFromBinEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterUnpublishEventHandler.js +21 -23
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterUnpublishEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterUpdateEventHandler.js +24 -27
- package/subscriptions/headlessCms/handlers/AuditLogEntryAfterUpdateEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryRevisionAfterCreateEventHandler.js +21 -23
- package/subscriptions/headlessCms/handlers/AuditLogEntryRevisionAfterCreateEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogEntryRevisionAfterDeleteEventHandler.js +21 -23
- package/subscriptions/headlessCms/handlers/AuditLogEntryRevisionAfterDeleteEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogGroupAfterCreateEventHandler.js +21 -20
- package/subscriptions/headlessCms/handlers/AuditLogGroupAfterCreateEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogGroupAfterDeleteEventHandler.js +21 -20
- package/subscriptions/headlessCms/handlers/AuditLogGroupAfterDeleteEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogGroupAfterUpdateEventHandler.js +24 -24
- package/subscriptions/headlessCms/handlers/AuditLogGroupAfterUpdateEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogModelAfterCreateEventHandler.js +21 -20
- package/subscriptions/headlessCms/handlers/AuditLogModelAfterCreateEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogModelAfterDeleteEventHandler.js +21 -20
- package/subscriptions/headlessCms/handlers/AuditLogModelAfterDeleteEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/handlers/AuditLogModelAfterUpdateEventHandler.js +24 -24
- package/subscriptions/headlessCms/handlers/AuditLogModelAfterUpdateEventHandler.js.map +1 -1
- package/subscriptions/headlessCms/index.js +16 -20
- package/subscriptions/headlessCms/index.js.map +1 -1
- package/subscriptions/index.js +8 -7
- package/subscriptions/index.js.map +1 -1
- package/subscriptions/mailer/handlers/AuditLogMailerSettingsAfterSaveHandler.js +23 -22
- package/subscriptions/mailer/handlers/AuditLogMailerSettingsAfterSaveHandler.js.map +1 -1
- package/subscriptions/mailer/index.js +3 -3
- package/subscriptions/mailer/index.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogApiKeyAfterCreateHandler.js +31 -37
- package/subscriptions/security/handlers/AuditLogApiKeyAfterCreateHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogApiKeyAfterDeleteHandler.js +31 -37
- package/subscriptions/security/handlers/AuditLogApiKeyAfterDeleteHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogApiKeyAfterUpdateHandler.js +35 -42
- package/subscriptions/security/handlers/AuditLogApiKeyAfterUpdateHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogRoleAfterCreateHandler.js +21 -20
- package/subscriptions/security/handlers/AuditLogRoleAfterCreateHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogRoleAfterDeleteHandler.js +21 -20
- package/subscriptions/security/handlers/AuditLogRoleAfterDeleteHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogRoleAfterUpdateHandler.js +24 -24
- package/subscriptions/security/handlers/AuditLogRoleAfterUpdateHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogTeamAfterCreateHandler.js +21 -20
- package/subscriptions/security/handlers/AuditLogTeamAfterCreateHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogTeamAfterDeleteHandler.js +21 -20
- package/subscriptions/security/handlers/AuditLogTeamAfterDeleteHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogTeamAfterUpdateHandler.js +24 -24
- package/subscriptions/security/handlers/AuditLogTeamAfterUpdateHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogUserAfterCreateHandler.js +21 -20
- package/subscriptions/security/handlers/AuditLogUserAfterCreateHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogUserAfterDeleteHandler.js +21 -20
- package/subscriptions/security/handlers/AuditLogUserAfterDeleteHandler.js.map +1 -1
- package/subscriptions/security/handlers/AuditLogUserAfterUpdateHandler.js +24 -24
- package/subscriptions/security/handlers/AuditLogUserAfterUpdateHandler.js.map +1 -1
- package/subscriptions/security/handlers/cleanupApiKey.js +10 -16
- package/subscriptions/security/handlers/cleanupApiKey.js.map +1 -1
- package/subscriptions/security/index.js +14 -20
- package/subscriptions/security/index.js.map +1 -1
- package/subscriptions/websiteBuilder/index.js +14 -16
- package/subscriptions/websiteBuilder/index.js.map +1 -1
- package/subscriptions/websiteBuilder/pages/PageAfterCreateHandler.js +20 -19
- package/subscriptions/websiteBuilder/pages/PageAfterCreateHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/pages/PageAfterCreateRevisionFromHandler.js +20 -19
- package/subscriptions/websiteBuilder/pages/PageAfterCreateRevisionFromHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/pages/PageAfterDeleteHandler.js +20 -19
- package/subscriptions/websiteBuilder/pages/PageAfterDeleteHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/pages/PageAfterDuplicateHandler.js +23 -23
- package/subscriptions/websiteBuilder/pages/PageAfterDuplicateHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/pages/PageAfterMoveHandler.js +20 -19
- package/subscriptions/websiteBuilder/pages/PageAfterMoveHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/pages/PageAfterPublishHandler.js +20 -19
- package/subscriptions/websiteBuilder/pages/PageAfterPublishHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/pages/PageAfterUnpublishHandler.js +20 -19
- package/subscriptions/websiteBuilder/pages/PageAfterUnpublishHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/pages/PageAfterUpdateHandler.js +23 -23
- package/subscriptions/websiteBuilder/pages/PageAfterUpdateHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/redirects/RedirectAfterCreateHandler.js +20 -19
- package/subscriptions/websiteBuilder/redirects/RedirectAfterCreateHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/redirects/RedirectAfterDeleteHandler.js +20 -19
- package/subscriptions/websiteBuilder/redirects/RedirectAfterDeleteHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/redirects/RedirectAfterMoveHandler.js +20 -19
- package/subscriptions/websiteBuilder/redirects/RedirectAfterMoveHandler.js.map +1 -1
- package/subscriptions/websiteBuilder/redirects/RedirectAfterUpdateHandler.js +23 -23
- package/subscriptions/websiteBuilder/redirects/RedirectAfterUpdateHandler.js.map +1 -1
- package/types.js +0 -3
- package/utils/expiresAt.js +14 -19
- package/utils/expiresAt.js.map +1 -1
- package/utils/getAuditConfig.js +79 -98
- package/utils/getAuditConfig.js.map +1 -1
- package/utils/getAuditObject.js +14 -15
- package/utils/getAuditObject.js.map +1 -1
- package/events/index.js.map +0 -1
- package/storage/abstractions/AccessPattern.js.map +0 -1
- package/storage/abstractions/AccessPatternHandler.js.map +0 -1
- package/storage/abstractions/Converter.js.map +0 -1
- package/storage/abstractions/Storage.js.map +0 -1
- package/storage/results/index.js.map +0 -1
- package/storage/types.js.map +0 -1
- package/types.js.map +0 -1
|
@@ -1,32 +1,38 @@
|
|
|
1
1
|
import { BaseAccessPattern } from "./BaseAccessPattern.js";
|
|
2
|
-
const createPartitionKey = params
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
2
|
+
const createPartitionKey = (params)=>`T#${params.tenant}#AUDIT_LOG#APP#${params.app}#ENTITY#${params.entity}#ACTION#${params.action}#CREATEDBY#${params.createdBy}`;
|
|
3
|
+
class AppEntityActionCreatedByAccessPattern extends BaseAccessPattern {
|
|
4
|
+
handles() {
|
|
5
|
+
return {
|
|
6
|
+
mustInclude: [
|
|
7
|
+
"app",
|
|
8
|
+
"action",
|
|
9
|
+
"entity",
|
|
10
|
+
"createdBy"
|
|
11
|
+
],
|
|
12
|
+
mustNotInclude: [
|
|
13
|
+
"entityId"
|
|
14
|
+
]
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
async list(params) {
|
|
18
|
+
const options = this.createOptions(params);
|
|
19
|
+
const result = await this.query({
|
|
20
|
+
partitionKey: createPartitionKey(params),
|
|
21
|
+
options
|
|
22
|
+
});
|
|
23
|
+
return this.populateResult(result);
|
|
24
|
+
}
|
|
25
|
+
createKeys(item) {
|
|
26
|
+
const time = item.createdOn.getTime();
|
|
27
|
+
return {
|
|
28
|
+
partitionKey: createPartitionKey({
|
|
29
|
+
...item,
|
|
30
|
+
createdBy: item.createdBy.id
|
|
31
|
+
}),
|
|
32
|
+
sortKey: time
|
|
33
|
+
};
|
|
34
|
+
}
|
|
30
35
|
}
|
|
36
|
+
export { AppEntityActionCreatedByAccessPattern };
|
|
31
37
|
|
|
32
38
|
//# sourceMappingURL=AppEntityActionCreatedByAccessPattern.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"storage/accessPatterns/AppEntityActionCreatedByAccessPattern.js","sources":["../../../src/storage/accessPatterns/AppEntityActionCreatedByAccessPattern.ts"],"sourcesContent":["import type { IAuditLog } from \"~/storage/types.js\";\nimport type { IStorageListByAppEntityActionCreatedByParams } from \"~/storage/abstractions/Storage.js\";\nimport { BaseAccessPattern } from \"~/storage/accessPatterns/BaseAccessPattern.js\";\nimport type {\n IAccessPatternCreateKeysResult,\n IAccessPatternHandles,\n IAccessPatternListResult\n} from \"~/storage/abstractions/AccessPattern.js\";\n\ninterface ICreatePartitionKeyParams {\n tenant: string;\n app: string;\n action: string;\n entity: string;\n createdBy: string;\n}\n\nconst createPartitionKey = (params: ICreatePartitionKeyParams) => {\n return `T#${params.tenant}#AUDIT_LOG#APP#${params.app}#ENTITY#${params.entity}#ACTION#${params.action}#CREATEDBY#${params.createdBy}`;\n};\n\nexport class AppEntityActionCreatedByAccessPattern<\n T extends IStorageListByAppEntityActionCreatedByParams =\n IStorageListByAppEntityActionCreatedByParams\n> extends BaseAccessPattern<T> {\n public override handles(): IAccessPatternHandles {\n return {\n mustInclude: [\"app\", \"action\", \"entity\", \"createdBy\"],\n mustNotInclude: [\"entityId\"]\n };\n }\n\n public async list(params: T): Promise<IAccessPatternListResult> {\n const options = this.createOptions(params);\n\n const result = await this.query({\n partitionKey: createPartitionKey(params),\n options\n });\n return this.populateResult(result);\n }\n\n public createKeys(item: IAuditLog): IAccessPatternCreateKeysResult {\n const time = item.createdOn.getTime();\n\n return {\n partitionKey: createPartitionKey({\n ...item,\n createdBy: item.createdBy.id\n }),\n sortKey: time\n };\n }\n}\n"],"names":["createPartitionKey","params","AppEntityActionCreatedByAccessPattern","BaseAccessPattern","options","result","item","time"],"mappings":";AAiBA,MAAMA,qBAAqB,CAACC,SACjB,CAAC,EAAE,EAAEA,OAAO,MAAM,CAAC,eAAe,EAAEA,OAAO,GAAG,CAAC,QAAQ,EAAEA,OAAO,MAAM,CAAC,QAAQ,EAAEA,OAAO,MAAM,CAAC,WAAW,EAAEA,OAAO,SAAS,EAAE;AAGlI,MAAMC,8CAGHC;IACU,UAAiC;QAC7C,OAAO;YACH,aAAa;gBAAC;gBAAO;gBAAU;gBAAU;aAAY;YACrD,gBAAgB;gBAAC;aAAW;QAChC;IACJ;IAEA,MAAa,KAAKF,MAAS,EAAqC;QAC5D,MAAMG,UAAU,IAAI,CAAC,aAAa,CAACH;QAEnC,MAAMI,SAAS,MAAM,IAAI,CAAC,KAAK,CAAC;YAC5B,cAAcL,mBAAmBC;YACjCG;QACJ;QACA,OAAO,IAAI,CAAC,cAAc,CAACC;IAC/B;IAEO,WAAWC,IAAe,EAAkC;QAC/D,MAAMC,OAAOD,KAAK,SAAS,CAAC,OAAO;QAEnC,OAAO;YACH,cAAcN,mBAAmB;gBAC7B,GAAGM,IAAI;gBACP,WAAWA,KAAK,SAAS,CAAC,EAAE;YAChC;YACA,SAASC;QACb;IACJ;AACJ"}
|
|
@@ -1,32 +1,38 @@
|
|
|
1
1
|
import { BaseAccessPattern } from "./BaseAccessPattern.js";
|
|
2
|
-
const createPartitionKey = params
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
2
|
+
const createPartitionKey = (params)=>`T#${params.tenant}#AUDIT_LOG#APP#${params.app}#ENTITY#${params.entity}#CREATEDBY#${params.createdBy}`;
|
|
3
|
+
class AppEntityCreatedByAccessPattern extends BaseAccessPattern {
|
|
4
|
+
handles() {
|
|
5
|
+
return {
|
|
6
|
+
mustInclude: [
|
|
7
|
+
"app",
|
|
8
|
+
"createdBy",
|
|
9
|
+
"entity"
|
|
10
|
+
],
|
|
11
|
+
mustNotInclude: [
|
|
12
|
+
"action",
|
|
13
|
+
"entityId"
|
|
14
|
+
]
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
async list(params) {
|
|
18
|
+
const options = this.createOptions(params);
|
|
19
|
+
const result = await this.query({
|
|
20
|
+
partitionKey: createPartitionKey(params),
|
|
21
|
+
options
|
|
22
|
+
});
|
|
23
|
+
return this.populateResult(result);
|
|
24
|
+
}
|
|
25
|
+
createKeys(item) {
|
|
26
|
+
const time = item.createdOn.getTime();
|
|
27
|
+
return {
|
|
28
|
+
partitionKey: createPartitionKey({
|
|
29
|
+
...item,
|
|
30
|
+
createdBy: item.createdBy.id
|
|
31
|
+
}),
|
|
32
|
+
sortKey: time
|
|
33
|
+
};
|
|
34
|
+
}
|
|
30
35
|
}
|
|
36
|
+
export { AppEntityCreatedByAccessPattern };
|
|
31
37
|
|
|
32
38
|
//# sourceMappingURL=AppEntityCreatedByAccessPattern.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"storage/accessPatterns/AppEntityCreatedByAccessPattern.js","sources":["../../../src/storage/accessPatterns/AppEntityCreatedByAccessPattern.ts"],"sourcesContent":["import type { IAuditLog } from \"~/storage/types.js\";\nimport type { IStorageListByAppEntityCreatedByParams } from \"~/storage/abstractions/Storage.js\";\nimport { BaseAccessPattern } from \"~/storage/accessPatterns/BaseAccessPattern.js\";\nimport type {\n IAccessPatternCreateKeysResult,\n IAccessPatternHandles,\n IAccessPatternListResult\n} from \"~/storage/abstractions/AccessPattern.js\";\n\ninterface ICreatePartitionKeyParams {\n tenant: string;\n app: string;\n createdBy: string;\n entity: string;\n}\n\nconst createPartitionKey = (params: ICreatePartitionKeyParams) => {\n return `T#${params.tenant}#AUDIT_LOG#APP#${params.app}#ENTITY#${params.entity}#CREATEDBY#${params.createdBy}`;\n};\n\nexport class AppEntityCreatedByAccessPattern<\n T extends IStorageListByAppEntityCreatedByParams = IStorageListByAppEntityCreatedByParams\n> extends BaseAccessPattern<T> {\n public override handles(): IAccessPatternHandles {\n return {\n mustInclude: [\"app\", \"createdBy\", \"entity\"],\n mustNotInclude: [\"action\", \"entityId\"]\n };\n }\n\n public async list(params: T): Promise<IAccessPatternListResult> {\n const options = this.createOptions(params);\n\n const result = await this.query({\n partitionKey: createPartitionKey(params),\n options\n });\n return this.populateResult(result);\n }\n\n public createKeys(item: IAuditLog): IAccessPatternCreateKeysResult {\n const time = item.createdOn.getTime();\n\n return {\n partitionKey: createPartitionKey({\n ...item,\n createdBy: item.createdBy.id\n }),\n sortKey: time\n };\n }\n}\n"],"names":["createPartitionKey","params","AppEntityCreatedByAccessPattern","BaseAccessPattern","options","result","item","time"],"mappings":";AAgBA,MAAMA,qBAAqB,CAACC,SACjB,CAAC,EAAE,EAAEA,OAAO,MAAM,CAAC,eAAe,EAAEA,OAAO,GAAG,CAAC,QAAQ,EAAEA,OAAO,MAAM,CAAC,WAAW,EAAEA,OAAO,SAAS,EAAE;AAG1G,MAAMC,wCAEHC;IACU,UAAiC;QAC7C,OAAO;YACH,aAAa;gBAAC;gBAAO;gBAAa;aAAS;YAC3C,gBAAgB;gBAAC;gBAAU;aAAW;QAC1C;IACJ;IAEA,MAAa,KAAKF,MAAS,EAAqC;QAC5D,MAAMG,UAAU,IAAI,CAAC,aAAa,CAACH;QAEnC,MAAMI,SAAS,MAAM,IAAI,CAAC,KAAK,CAAC;YAC5B,cAAcL,mBAAmBC;YACjCG;QACJ;QACA,OAAO,IAAI,CAAC,cAAc,CAACC;IAC/B;IAEO,WAAWC,IAAe,EAAkC;QAC/D,MAAMC,OAAOD,KAAK,SAAS,CAAC,OAAO;QAEnC,OAAO;YACH,cAAcN,mBAAmB;gBAC7B,GAAGM,IAAI;gBACP,WAAWA,KAAK,SAAS,CAAC,EAAE;YAChC;YACA,SAASC;QACb;IACJ;AACJ"}
|
|
@@ -1,83 +1,60 @@
|
|
|
1
1
|
import { createStartKey } from "../startKey.js";
|
|
2
|
-
const toGteTime = date
|
|
3
|
-
|
|
4
|
-
return
|
|
5
|
-
}
|
|
6
|
-
return date.getTime();
|
|
2
|
+
const toGteTime = (date)=>{
|
|
3
|
+
if (!date) return 0;
|
|
4
|
+
return date.getTime();
|
|
7
5
|
};
|
|
8
|
-
const toLteTime = date
|
|
9
|
-
|
|
10
|
-
return
|
|
11
|
-
}
|
|
12
|
-
return date.getTime();
|
|
6
|
+
const toLteTime = (date)=>{
|
|
7
|
+
if (!date) return Date.now();
|
|
8
|
+
return date.getTime();
|
|
13
9
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
canHandle(params) {
|
|
20
|
-
const handles = this.handles();
|
|
21
|
-
for (const key of handles.mustInclude) {
|
|
22
|
-
if (!params[key]) {
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
10
|
+
class BaseAccessPattern {
|
|
11
|
+
constructor(params){
|
|
12
|
+
this.index = params.index;
|
|
13
|
+
this.entity = params.entity;
|
|
25
14
|
}
|
|
26
|
-
|
|
27
|
-
|
|
15
|
+
canHandle(params) {
|
|
16
|
+
const handles = this.handles();
|
|
17
|
+
for (const key of handles.mustInclude)if (!params[key]) return false;
|
|
18
|
+
for (const key of handles.mustNotInclude)if (!!params[key]) return false;
|
|
19
|
+
if (!handles.shouldInclude?.length) return true;
|
|
20
|
+
for (const key of handles.shouldInclude)if (!!params[key]) return true;
|
|
28
21
|
return false;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
if (!handles.shouldInclude?.length) {
|
|
32
|
-
return true;
|
|
33
22
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
23
|
+
async query(params) {
|
|
24
|
+
return this.entity.queryPerPage({
|
|
25
|
+
partitionKey: params.partitionKey,
|
|
26
|
+
options: params.options
|
|
27
|
+
});
|
|
38
28
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
async populateResult(input) {
|
|
48
|
-
const reader = this.entity.createEntityReader({
|
|
49
|
-
read: input.items.map(item => {
|
|
29
|
+
async populateResult(input) {
|
|
30
|
+
const reader = this.entity.createEntityReader({
|
|
31
|
+
read: input.items.map((item)=>({
|
|
32
|
+
PK: item.PK,
|
|
33
|
+
SK: item.SK
|
|
34
|
+
}))
|
|
35
|
+
});
|
|
36
|
+
const result = await reader.execute();
|
|
50
37
|
return {
|
|
51
|
-
|
|
52
|
-
|
|
38
|
+
...input,
|
|
39
|
+
items: input.items.map((item)=>result.find((i)=>i.PK === item.PK && i.SK === item.SK)).filter((item)=>!!item)
|
|
53
40
|
};
|
|
54
|
-
})
|
|
55
|
-
});
|
|
56
|
-
const result = await reader.execute();
|
|
57
|
-
return {
|
|
58
|
-
...input,
|
|
59
|
-
items: input.items.map(item => {
|
|
60
|
-
return result.find(i => {
|
|
61
|
-
return i.PK === item.PK && i.SK === item.SK;
|
|
62
|
-
});
|
|
63
|
-
}).filter(item => !!item)
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
createOptions(params) {
|
|
67
|
-
const options = {
|
|
68
|
-
limit: params.limit || 25,
|
|
69
|
-
// @ts-expect-error
|
|
70
|
-
startKey: createStartKey({
|
|
71
|
-
after: params.after
|
|
72
|
-
}),
|
|
73
|
-
reverse: params.sort === "DESC",
|
|
74
|
-
index: this.index
|
|
75
|
-
};
|
|
76
|
-
if (params.createdOn_lte || params.createdOn_gte) {
|
|
77
|
-
options.between = [toGteTime(params.createdOn_gte), toLteTime(params.createdOn_lte)];
|
|
78
41
|
}
|
|
79
|
-
|
|
80
|
-
|
|
42
|
+
createOptions(params) {
|
|
43
|
+
const options = {
|
|
44
|
+
limit: params.limit || 25,
|
|
45
|
+
startKey: createStartKey({
|
|
46
|
+
after: params.after
|
|
47
|
+
}),
|
|
48
|
+
reverse: "DESC" === params.sort,
|
|
49
|
+
index: this.index
|
|
50
|
+
};
|
|
51
|
+
if (params.createdOn_lte || params.createdOn_gte) options.between = [
|
|
52
|
+
toGteTime(params.createdOn_gte),
|
|
53
|
+
toLteTime(params.createdOn_lte)
|
|
54
|
+
];
|
|
55
|
+
return options;
|
|
56
|
+
}
|
|
81
57
|
}
|
|
58
|
+
export { BaseAccessPattern };
|
|
82
59
|
|
|
83
60
|
//# sourceMappingURL=BaseAccessPattern.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"storage/accessPatterns/BaseAccessPattern.js","sources":["../../../src/storage/accessPatterns/BaseAccessPattern.ts"],"sourcesContent":["import type { IAuditLog, IIndexStorageItem, IStorageItem } from \"~/storage/types.js\";\nimport { createStartKey } from \"~/storage/startKey.js\";\nimport type { IStorageListParams } from \"../abstractions/Storage.js\";\nimport type {\n IAccessPattern,\n IAccessPatternCreateKeysResult,\n IAccessPatternHandles,\n IAccessPatternListResult\n} from \"../abstractions/AccessPattern.js\";\nimport type { AuditLogsEntity } from \"~/storage/entity.js\";\nimport type { IEntityQueryAllParams, IEntityQueryPerPageResult } from \"@webiny/db-dynamodb\";\n\nconst toGteTime = (date?: Date): number => {\n if (!date) {\n return 0;\n }\n return date.getTime();\n};\nconst toLteTime = (date?: Date): number => {\n if (!date) {\n return Date.now();\n }\n return date.getTime();\n};\n\nexport interface ICreateOptionsParams {\n limit?: number;\n sort?: \"ASC\" | \"DESC\";\n after?: string;\n createdOn_gte?: Date;\n createdOn_lte?: Date;\n}\n\nexport interface IBaseAccessPatternParams {\n index: string | undefined;\n entity: AuditLogsEntity;\n}\n\nexport interface IAccessPatternQueryParams {\n partitionKey: string;\n options: IEntityQueryAllParams[\"options\"];\n}\n\nexport abstract class BaseAccessPattern<T> implements IAccessPattern<T> {\n public readonly index;\n protected readonly entity;\n\n public constructor(params: IBaseAccessPatternParams) {\n this.index = params.index;\n this.entity = params.entity;\n }\n\n public abstract handles(): IAccessPatternHandles;\n\n public canHandle(params: IStorageListParams): boolean {\n const handles = this.handles();\n for (const key of handles.mustInclude) {\n if (!params[key]) {\n return false;\n }\n }\n for (const key of handles.mustNotInclude) {\n if (!!params[key]) {\n return false;\n }\n }\n if (!handles.shouldInclude?.length) {\n return true;\n }\n\n for (const key of handles.shouldInclude) {\n if (!!params[key]) {\n return true;\n }\n }\n return false;\n }\n\n protected async query<T extends IStorageItem = IStorageItem>(\n params: IAccessPatternQueryParams\n ) {\n return this.entity.queryPerPage<T>({\n partitionKey: params.partitionKey,\n options: params.options\n });\n }\n\n protected async populateResult(\n input: Awaited<IEntityQueryPerPageResult<IIndexStorageItem>>\n ): Promise<IEntityQueryPerPageResult<IStorageItem>> {\n const reader = this.entity.createEntityReader({\n read: input.items.map(item => {\n return {\n PK: item.PK,\n SK: item.SK\n };\n })\n });\n const result = await reader.execute();\n\n return {\n ...input,\n items: input.items\n .map(item => {\n return result.find(i => {\n return i.PK === item.PK && i.SK === item.SK;\n });\n })\n .filter((item): item is IStorageItem => !!item)\n };\n }\n\n public abstract list(params: T): Promise<IAccessPatternListResult>;\n public abstract createKeys(item: IAuditLog): IAccessPatternCreateKeysResult;\n\n protected createOptions(params: ICreateOptionsParams): IEntityQueryAllParams[\"options\"] {\n const options: IEntityQueryAllParams[\"options\"] = {\n limit: params.limit || 25,\n // @ts-expect-error\n startKey: createStartKey({\n after: params.after\n }),\n reverse: params.sort === \"DESC\",\n index: this.index\n };\n\n if (params.createdOn_lte || params.createdOn_gte) {\n options!.between = [toGteTime(params.createdOn_gte), toLteTime(params.createdOn_lte)];\n }\n\n return options;\n }\n}\n"],"names":["toGteTime","date","toLteTime","Date","BaseAccessPattern","params","handles","key","input","reader","item","result","i","options","createStartKey"],"mappings":";AAYA,MAAMA,YAAY,CAACC;IACf,IAAI,CAACA,MACD,OAAO;IAEX,OAAOA,KAAK,OAAO;AACvB;AACA,MAAMC,YAAY,CAACD;IACf,IAAI,CAACA,MACD,OAAOE,KAAK,GAAG;IAEnB,OAAOF,KAAK,OAAO;AACvB;AAoBO,MAAeG;IAIlB,YAAmBC,MAAgC,CAAE;QACjD,IAAI,CAAC,KAAK,GAAGA,OAAO,KAAK;QACzB,IAAI,CAAC,MAAM,GAAGA,OAAO,MAAM;IAC/B;IAIO,UAAUA,MAA0B,EAAW;QAClD,MAAMC,UAAU,IAAI,CAAC,OAAO;QAC5B,KAAK,MAAMC,OAAOD,QAAQ,WAAW,CACjC,IAAI,CAACD,MAAM,CAACE,IAAI,EACZ,OAAO;QAGf,KAAK,MAAMA,OAAOD,QAAQ,cAAc,CACpC,IAAI,CAAC,CAACD,MAAM,CAACE,IAAI,EACb,OAAO;QAGf,IAAI,CAACD,QAAQ,aAAa,EAAE,QACxB,OAAO;QAGX,KAAK,MAAMC,OAAOD,QAAQ,aAAa,CACnC,IAAI,CAAC,CAACD,MAAM,CAACE,IAAI,EACb,OAAO;QAGf,OAAO;IACX;IAEA,MAAgB,MACZF,MAAiC,EACnC;QACE,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAI;YAC/B,cAAcA,OAAO,YAAY;YACjC,SAASA,OAAO,OAAO;QAC3B;IACJ;IAEA,MAAgB,eACZG,KAA4D,EACZ;QAChD,MAAMC,SAAS,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;YAC1C,MAAMD,MAAM,KAAK,CAAC,GAAG,CAACE,CAAAA,OACX;oBACH,IAAIA,KAAK,EAAE;oBACX,IAAIA,KAAK,EAAE;gBACf;QAER;QACA,MAAMC,SAAS,MAAMF,OAAO,OAAO;QAEnC,OAAO;YACH,GAAGD,KAAK;YACR,OAAOA,MAAM,KAAK,CACb,GAAG,CAACE,CAAAA,OACMC,OAAO,IAAI,CAACC,CAAAA,IACRA,EAAE,EAAE,KAAKF,KAAK,EAAE,IAAIE,EAAE,EAAE,KAAKF,KAAK,EAAE,GAGlD,MAAM,CAAC,CAACA,OAA+B,CAAC,CAACA;QAClD;IACJ;IAKU,cAAcL,MAA4B,EAAoC;QACpF,MAAMQ,UAA4C;YAC9C,OAAOR,OAAO,KAAK,IAAI;YAEvB,UAAUS,eAAe;gBACrB,OAAOT,OAAO,KAAK;YACvB;YACA,SAASA,AAAgB,WAAhBA,OAAO,IAAI;YACpB,OAAO,IAAI,CAAC,KAAK;QACrB;QAEA,IAAIA,OAAO,aAAa,IAAIA,OAAO,aAAa,EAC5CQ,QAAS,OAAO,GAAG;YAACb,UAAUK,OAAO,aAAa;YAAGH,UAAUG,OAAO,aAAa;SAAE;QAGzF,OAAOQ;IACX;AACJ"}
|
|
@@ -1,32 +1,38 @@
|
|
|
1
1
|
import { BaseAccessPattern } from "./BaseAccessPattern.js";
|
|
2
|
-
const createPartitionKey = params
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
2
|
+
const createPartitionKey = (params)=>`T#${params.tenant}#AUDIT_LOG#CREATEDBY#${params.createdBy}`;
|
|
3
|
+
class CreatedByAccessPattern extends BaseAccessPattern {
|
|
4
|
+
handles() {
|
|
5
|
+
return {
|
|
6
|
+
mustInclude: [
|
|
7
|
+
"createdBy"
|
|
8
|
+
],
|
|
9
|
+
mustNotInclude: [
|
|
10
|
+
"app",
|
|
11
|
+
"action",
|
|
12
|
+
"entityId",
|
|
13
|
+
"entity"
|
|
14
|
+
]
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
async list(params) {
|
|
18
|
+
const options = this.createOptions(params);
|
|
19
|
+
const result = await this.query({
|
|
20
|
+
partitionKey: createPartitionKey(params),
|
|
21
|
+
options
|
|
22
|
+
});
|
|
23
|
+
return this.populateResult(result);
|
|
24
|
+
}
|
|
25
|
+
createKeys(item) {
|
|
26
|
+
const time = item.createdOn.getTime();
|
|
27
|
+
return {
|
|
28
|
+
partitionKey: createPartitionKey({
|
|
29
|
+
...item,
|
|
30
|
+
createdBy: item.createdBy.id
|
|
31
|
+
}),
|
|
32
|
+
sortKey: time
|
|
33
|
+
};
|
|
34
|
+
}
|
|
30
35
|
}
|
|
36
|
+
export { CreatedByAccessPattern };
|
|
31
37
|
|
|
32
38
|
//# sourceMappingURL=CreatedByAccessPattern.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"storage/accessPatterns/CreatedByAccessPattern.js","sources":["../../../src/storage/accessPatterns/CreatedByAccessPattern.ts"],"sourcesContent":["import type { IAuditLog } from \"~/storage/types.js\";\nimport { BaseAccessPattern } from \"~/storage/accessPatterns/BaseAccessPattern.js\";\nimport type {\n IAccessPatternCreateKeysResult,\n IAccessPatternHandles,\n IAccessPatternListResult\n} from \"~/storage/abstractions/AccessPattern.js\";\nimport type { IStorageListByCreatedByParams } from \"~/storage/abstractions/Storage.js\";\n\ninterface ICreatePartitionKeyParams {\n tenant: string;\n createdBy: string;\n}\n\nconst createPartitionKey = (params: ICreatePartitionKeyParams) => {\n return `T#${params.tenant}#AUDIT_LOG#CREATEDBY#${params.createdBy}`;\n};\n\nexport class CreatedByAccessPattern<\n T extends IStorageListByCreatedByParams = IStorageListByCreatedByParams\n> extends BaseAccessPattern<T> {\n public override handles(): IAccessPatternHandles {\n return {\n mustInclude: [\"createdBy\"],\n mustNotInclude: [\"app\", \"action\", \"entityId\", \"entity\"]\n };\n }\n\n public async list(params: T): Promise<IAccessPatternListResult> {\n const options = this.createOptions(params);\n\n const result = await this.query({\n partitionKey: createPartitionKey(params),\n options\n });\n return this.populateResult(result);\n }\n\n public createKeys(item: IAuditLog): IAccessPatternCreateKeysResult {\n const time = item.createdOn.getTime();\n\n return {\n partitionKey: createPartitionKey({\n ...item,\n createdBy: item.createdBy.id\n }),\n sortKey: time\n };\n }\n}\n"],"names":["createPartitionKey","params","CreatedByAccessPattern","BaseAccessPattern","options","result","item","time"],"mappings":";AAcA,MAAMA,qBAAqB,CAACC,SACjB,CAAC,EAAE,EAAEA,OAAO,MAAM,CAAC,qBAAqB,EAAEA,OAAO,SAAS,EAAE;AAGhE,MAAMC,+BAEHC;IACU,UAAiC;QAC7C,OAAO;YACH,aAAa;gBAAC;aAAY;YAC1B,gBAAgB;gBAAC;gBAAO;gBAAU;gBAAY;aAAS;QAC3D;IACJ;IAEA,MAAa,KAAKF,MAAS,EAAqC;QAC5D,MAAMG,UAAU,IAAI,CAAC,aAAa,CAACH;QAEnC,MAAMI,SAAS,MAAM,IAAI,CAAC,KAAK,CAAC;YAC5B,cAAcL,mBAAmBC;YACjCG;QACJ;QACA,OAAO,IAAI,CAAC,cAAc,CAACC;IAC/B;IAEO,WAAWC,IAAe,EAAkC;QAC/D,MAAMC,OAAOD,KAAK,SAAS,CAAC,OAAO;QAEnC,OAAO;YACH,cAAcN,mBAAmB;gBAC7B,GAAGM,IAAI;gBACP,WAAWA,KAAK,SAAS,CAAC,EAAE;YAChC;YACA,SAASC;QACb;IACJ;AACJ"}
|
|
@@ -1,30 +1,38 @@
|
|
|
1
1
|
import { BaseAccessPattern } from "./BaseAccessPattern.js";
|
|
2
|
-
const createPartitionKey = params
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
2
|
+
const createPartitionKey = (params)=>`T#${params.tenant}#AUDIT_LOG#CREATED_ON`;
|
|
3
|
+
class CreatedOnAccessPattern extends BaseAccessPattern {
|
|
4
|
+
handles() {
|
|
5
|
+
return {
|
|
6
|
+
shouldInclude: [
|
|
7
|
+
"createdOn_gte",
|
|
8
|
+
"createdOn_lte"
|
|
9
|
+
],
|
|
10
|
+
mustInclude: [],
|
|
11
|
+
mustNotInclude: [
|
|
12
|
+
"app",
|
|
13
|
+
"createdBy",
|
|
14
|
+
"action",
|
|
15
|
+
"entityId",
|
|
16
|
+
"entity"
|
|
17
|
+
]
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
async list(params) {
|
|
21
|
+
const options = this.createOptions(params);
|
|
22
|
+
const result = await this.query({
|
|
23
|
+
partitionKey: createPartitionKey(params),
|
|
24
|
+
options
|
|
25
|
+
});
|
|
26
|
+
return this.populateResult(result);
|
|
27
|
+
}
|
|
28
|
+
createKeys(item) {
|
|
29
|
+
const time = item.createdOn.getTime();
|
|
30
|
+
return {
|
|
31
|
+
partitionKey: createPartitionKey(item),
|
|
32
|
+
sortKey: time
|
|
33
|
+
};
|
|
34
|
+
}
|
|
28
35
|
}
|
|
36
|
+
export { CreatedOnAccessPattern };
|
|
29
37
|
|
|
30
38
|
//# sourceMappingURL=CreatedOnAccessPattern.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"storage/accessPatterns/CreatedOnAccessPattern.js","sources":["../../../src/storage/accessPatterns/CreatedOnAccessPattern.ts"],"sourcesContent":["import type { IAuditLog } from \"~/storage/types.js\";\nimport { BaseAccessPattern } from \"~/storage/accessPatterns/BaseAccessPattern.js\";\nimport type {\n IAccessPatternCreateKeysResult,\n IAccessPatternHandles,\n IAccessPatternListResult\n} from \"~/storage/abstractions/AccessPattern.js\";\nimport type { IStorageListByCreatedOnParams } from \"~/storage/abstractions/Storage.js\";\n\ninterface ICreatePartitionKeyParams {\n tenant: string;\n}\n\nconst createPartitionKey = (params: ICreatePartitionKeyParams) => {\n return `T#${params.tenant}#AUDIT_LOG#CREATED_ON`;\n};\n\nexport class CreatedOnAccessPattern<\n T extends IStorageListByCreatedOnParams = IStorageListByCreatedOnParams\n> extends BaseAccessPattern<T> {\n public override handles(): IAccessPatternHandles {\n return {\n shouldInclude: [\"createdOn_gte\", \"createdOn_lte\"],\n mustInclude: [],\n mustNotInclude: [\"app\", \"createdBy\", \"action\", \"entityId\", \"entity\"]\n };\n }\n\n public async list(params: T): Promise<IAccessPatternListResult> {\n const options = this.createOptions(params);\n\n const result = await this.query({\n partitionKey: createPartitionKey(params),\n options\n });\n return this.populateResult(result);\n }\n\n public createKeys(item: IAuditLog): IAccessPatternCreateKeysResult {\n const time = item.createdOn.getTime();\n\n return {\n partitionKey: createPartitionKey(item),\n sortKey: time\n };\n }\n}\n"],"names":["createPartitionKey","params","CreatedOnAccessPattern","BaseAccessPattern","options","result","item","time"],"mappings":";AAaA,MAAMA,qBAAqB,CAACC,SACjB,CAAC,EAAE,EAAEA,OAAO,MAAM,CAAC,qBAAqB,CAAC;AAG7C,MAAMC,+BAEHC;IACU,UAAiC;QAC7C,OAAO;YACH,eAAe;gBAAC;gBAAiB;aAAgB;YACjD,aAAa,EAAE;YACf,gBAAgB;gBAAC;gBAAO;gBAAa;gBAAU;gBAAY;aAAS;QACxE;IACJ;IAEA,MAAa,KAAKF,MAAS,EAAqC;QAC5D,MAAMG,UAAU,IAAI,CAAC,aAAa,CAACH;QAEnC,MAAMI,SAAS,MAAM,IAAI,CAAC,KAAK,CAAC;YAC5B,cAAcL,mBAAmBC;YACjCG;QACJ;QACA,OAAO,IAAI,CAAC,cAAc,CAACC;IAC/B;IAEO,WAAWC,IAAe,EAAkC;QAC/D,MAAMC,OAAOD,KAAK,SAAS,CAAC,OAAO;QAEnC,OAAO;YACH,cAAcN,mBAAmBM;YACjC,SAASC;QACb;IACJ;AACJ"}
|
|
@@ -1,36 +1,35 @@
|
|
|
1
1
|
import { BaseAccessPattern } from "./BaseAccessPattern.js";
|
|
2
|
-
const createPartitionKey = params
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
};
|
|
33
|
-
}
|
|
2
|
+
const createPartitionKey = (params)=>`T#${params.tenant}#AUDIT_LOG`;
|
|
3
|
+
class DefaultAccessPattern extends BaseAccessPattern {
|
|
4
|
+
constructor(params){
|
|
5
|
+
super({
|
|
6
|
+
index: void 0,
|
|
7
|
+
entity: params.entity
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
handles() {
|
|
11
|
+
return {
|
|
12
|
+
mustInclude: [],
|
|
13
|
+
mustNotInclude: []
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
canHandle() {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
async list(params) {
|
|
20
|
+
const options = this.createOptions(params);
|
|
21
|
+
return await this.query({
|
|
22
|
+
partitionKey: createPartitionKey(params),
|
|
23
|
+
options
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
createKeys(item) {
|
|
27
|
+
return {
|
|
28
|
+
partitionKey: createPartitionKey(item),
|
|
29
|
+
sortKey: `${item.id}`
|
|
30
|
+
};
|
|
31
|
+
}
|
|
34
32
|
}
|
|
33
|
+
export { DefaultAccessPattern };
|
|
35
34
|
|
|
36
35
|
//# sourceMappingURL=DefaultAccessPattern.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"storage/accessPatterns/DefaultAccessPattern.js","sources":["../../../src/storage/accessPatterns/DefaultAccessPattern.ts"],"sourcesContent":["import type { IAuditLog } from \"~/storage/types.js\";\nimport type { IStorageListDefaultParams } from \"~/storage/abstractions/Storage.js\";\nimport { BaseAccessPattern } from \"./BaseAccessPattern.js\";\nimport type {\n IAccessPatternCreateKeysResult,\n IAccessPatternHandles,\n IAccessPatternListResult\n} from \"~/storage/abstractions/AccessPattern.js\";\nimport type { AuditLogsEntity } from \"~/storage/entity.js\";\n\nexport interface IDefaultAccessPatternParams {\n entity: AuditLogsEntity;\n}\n\ninterface ICreatePartitionKeyParams {\n tenant: string;\n}\n\nconst createPartitionKey = (params: ICreatePartitionKeyParams) => {\n return `T#${params.tenant}#AUDIT_LOG`;\n};\n\nexport class DefaultAccessPattern<\n T extends IStorageListDefaultParams = IStorageListDefaultParams\n> extends BaseAccessPattern<T> {\n public constructor(params: IDefaultAccessPatternParams) {\n super({\n index: undefined,\n entity: params.entity\n });\n }\n\n public override handles(): IAccessPatternHandles {\n return {\n mustInclude: [],\n mustNotInclude: []\n };\n }\n\n public override canHandle(): boolean {\n return false;\n }\n\n public async list(params: T): Promise<IAccessPatternListResult> {\n const options = this.createOptions(params);\n\n return await this.query({\n partitionKey: createPartitionKey(params),\n options\n });\n }\n\n public createKeys(item: IAuditLog): IAccessPatternCreateKeysResult {\n return {\n partitionKey: createPartitionKey(item),\n sortKey: `${item.id}`\n };\n }\n}\n"],"names":["createPartitionKey","params","DefaultAccessPattern","BaseAccessPattern","undefined","options","item"],"mappings":";AAkBA,MAAMA,qBAAqB,CAACC,SACjB,CAAC,EAAE,EAAEA,OAAO,MAAM,CAAC,UAAU,CAAC;AAGlC,MAAMC,6BAEHC;IACN,YAAmBF,MAAmC,CAAE;QACpD,KAAK,CAAC;YACF,OAAOG;YACP,QAAQH,OAAO,MAAM;QACzB;IACJ;IAEgB,UAAiC;QAC7C,OAAO;YACH,aAAa,EAAE;YACf,gBAAgB,EAAE;QACtB;IACJ;IAEgB,YAAqB;QACjC,OAAO;IACX;IAEA,MAAa,KAAKA,MAAS,EAAqC;QAC5D,MAAMI,UAAU,IAAI,CAAC,aAAa,CAACJ;QAEnC,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC;YACpB,cAAcD,mBAAmBC;YACjCI;QACJ;IACJ;IAEO,WAAWC,IAAe,EAAkC;QAC/D,OAAO;YACH,cAAcN,mBAAmBM;YACjC,SAAS,GAAGA,KAAK,EAAE,EAAE;QACzB;IACJ;AACJ"}
|