@webiny/api-core-ddb 0.0.0-unstable.0d717d18dd

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 (58) hide show
  1. package/ApiCoreDdbFeature.d.ts +12 -0
  2. package/ApiCoreDdbFeature.js +16 -0
  3. package/ApiCoreDdbFeature.js.map +1 -0
  4. package/LICENSE +21 -0
  5. package/README.md +11 -0
  6. package/adminUsers/definitions/entities.d.ts +3 -0
  7. package/adminUsers/definitions/entities.js +9 -0
  8. package/adminUsers/definitions/entities.js.map +1 -0
  9. package/adminUsers/definitions/types.d.ts +5 -0
  10. package/adminUsers/definitions/types.js +0 -0
  11. package/adminUsers/index.d.ts +2 -0
  12. package/adminUsers/index.js +144 -0
  13. package/adminUsers/index.js.map +1 -0
  14. package/adminUsers/types.d.ts +22 -0
  15. package/adminUsers/types.js +8 -0
  16. package/adminUsers/types.js.map +1 -0
  17. package/createApiCoreDdb.d.ts +7 -0
  18. package/createApiCoreDdb.js +26 -0
  19. package/createApiCoreDdb.js.map +1 -0
  20. package/index.d.ts +4 -0
  21. package/index.js +3 -0
  22. package/keyValueStore/KeyValueStoreDynamoTable.d.ts +15 -0
  23. package/keyValueStore/KeyValueStoreDynamoTable.js +28 -0
  24. package/keyValueStore/KeyValueStoreDynamoTable.js.map +1 -0
  25. package/keyValueStore/KeyValueStoreStorageOperations.d.ts +17 -0
  26. package/keyValueStore/KeyValueStoreStorageOperations.js +83 -0
  27. package/keyValueStore/KeyValueStoreStorageOperations.js.map +1 -0
  28. package/keyValueStore/index.d.ts +8 -0
  29. package/keyValueStore/index.js +5 -0
  30. package/keyValueStore/index.js.map +1 -0
  31. package/package.json +45 -0
  32. package/security/definitions/entities.d.ts +5 -0
  33. package/security/definitions/entities.js +23 -0
  34. package/security/definitions/entities.js.map +1 -0
  35. package/security/definitions/types.d.ts +14 -0
  36. package/security/definitions/types.js +0 -0
  37. package/security/index.d.ts +3 -0
  38. package/security/index.js +401 -0
  39. package/security/index.js.map +1 -0
  40. package/security/types.d.ts +10 -0
  41. package/security/types.js +9 -0
  42. package/security/types.js.map +1 -0
  43. package/serviceDiscovery/DdbServiceManifestLoader.d.ts +7 -0
  44. package/serviceDiscovery/DdbServiceManifestLoader.js +27 -0
  45. package/serviceDiscovery/DdbServiceManifestLoader.js.map +1 -0
  46. package/serviceDiscovery/index.d.ts +1 -0
  47. package/serviceDiscovery/index.js +1 -0
  48. package/tenancy/definitions/tenantEntity.d.ts +8 -0
  49. package/tenancy/definitions/tenantEntity.js +8 -0
  50. package/tenancy/definitions/tenantEntity.js.map +1 -0
  51. package/tenancy/definitions/types.d.ts +6 -0
  52. package/tenancy/definitions/types.js +0 -0
  53. package/tenancy/index.d.ts +2 -0
  54. package/tenancy/index.js +115 -0
  55. package/tenancy/index.js.map +1 -0
  56. package/tenancy/types.d.ts +10 -0
  57. package/tenancy/types.js +7 -0
  58. package/tenancy/types.js.map +1 -0
@@ -0,0 +1,115 @@
1
+ import { createTable } from "@webiny/db-dynamodb";
2
+ import error from "@webiny/error";
3
+ import { createTenantEntity } from "./definitions/tenantEntity.js";
4
+ import { ENTITIES } from "./types.js";
5
+ const setTenantDefaults = (item)=>{
6
+ if (!item.tags) item.tags = [];
7
+ if (!item.description) item.description = "";
8
+ return item;
9
+ };
10
+ const createStorageOperations = (params)=>{
11
+ const { documentClient } = params;
12
+ const tableInstance = createTable({
13
+ name: process.env.DB_TABLE_TENANCY || process.env.DB_TABLE,
14
+ documentClient
15
+ });
16
+ const entities = {
17
+ tenants: createTenantEntity({
18
+ entityName: ENTITIES.TENANT,
19
+ table: tableInstance.table
20
+ })
21
+ };
22
+ return {
23
+ getTable () {
24
+ return tableInstance;
25
+ },
26
+ getEntities () {
27
+ return entities;
28
+ },
29
+ async getTenantsByIds (ids) {
30
+ const batchReader = entities.tenants.createEntityReader({
31
+ read: ids.map((id)=>({
32
+ PK: `T#${id}`,
33
+ SK: "A"
34
+ }))
35
+ });
36
+ const tenants = await batchReader.execute();
37
+ return tenants.map((item)=>item.data).map((item)=>setTenantDefaults(item));
38
+ },
39
+ async listTenants (params = {}) {
40
+ const { parent } = params;
41
+ const options = {
42
+ index: "GSI1"
43
+ };
44
+ if (parent) options.beginsWith = `T#${parent}#`;
45
+ else options.gt = " ";
46
+ const tenants = await entities.tenants.queryAll({
47
+ partitionKey: "TENANTS",
48
+ options
49
+ });
50
+ return tenants.map((item)=>item.data).map((item)=>setTenantDefaults(item));
51
+ },
52
+ async createTenant (data) {
53
+ const keys = {
54
+ PK: `T#${data.id}`,
55
+ SK: "A",
56
+ GSI1_PK: "TENANTS",
57
+ GSI1_SK: `T#${data.parent}#${data.createdOn}`,
58
+ GSI_TENANT: data.id
59
+ };
60
+ try {
61
+ await entities.tenants.put({
62
+ TYPE: "tenancy.tenant",
63
+ ...keys,
64
+ data
65
+ });
66
+ return data;
67
+ } catch (err) {
68
+ throw error.from(err, {
69
+ message: "Could not create tenant record.",
70
+ code: "CREATE_TENANT_ERROR",
71
+ data: {
72
+ keys,
73
+ data
74
+ }
75
+ });
76
+ }
77
+ },
78
+ async updateTenant (data) {
79
+ const tenantPK = `T#${data.id}`;
80
+ const keys = {
81
+ PK: tenantPK,
82
+ SK: "A",
83
+ GSI1_PK: "TENANTS",
84
+ GSI1_SK: `T#${data.parent}#${data.createdOn}`,
85
+ GSI_TENANT: data.id,
86
+ TYPE: "tenancy.tenant"
87
+ };
88
+ try {
89
+ await entities.tenants.put({
90
+ ...keys,
91
+ data
92
+ });
93
+ return data;
94
+ } catch (err) {
95
+ throw error.from(err, {
96
+ message: "Could not update tenant record.",
97
+ code: "CREATE_TENANT_ERROR",
98
+ data: {
99
+ keys,
100
+ data
101
+ }
102
+ });
103
+ }
104
+ },
105
+ async deleteTenant (id) {
106
+ await entities.tenants.delete({
107
+ PK: `T#${id}`,
108
+ SK: "A"
109
+ });
110
+ }
111
+ };
112
+ };
113
+ export { createStorageOperations };
114
+
115
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenancy/index.js","sources":["../../src/tenancy/index.ts"],"sourcesContent":["import { createTable, type IEntityQueryAllParams } from \"@webiny/db-dynamodb\";\nimport WebinyError from \"@webiny/error\";\nimport { createTenantEntity } from \"./definitions/tenantEntity.js\";\nimport type { CreateTenancyStorageOperations } from \"./types.js\";\nimport { ENTITIES } from \"./types.js\";\nimport type { ListTenantsParams, Tenant } from \"@webiny/api-core/types/tenancy.js\";\n\nconst setTenantDefaults = (item: Tenant) => {\n if (!item.tags) {\n item.tags = [];\n }\n\n if (!item.description) {\n item.description = \"\";\n }\n\n return item;\n};\n\nexport const createStorageOperations: CreateTenancyStorageOperations = params => {\n const { documentClient } = params;\n\n const tableInstance = createTable({\n name: (process.env.DB_TABLE_TENANCY || process.env.DB_TABLE) as string,\n documentClient\n });\n\n const entities = {\n tenants: createTenantEntity({\n entityName: ENTITIES.TENANT,\n table: tableInstance.table\n })\n };\n\n return {\n getTable() {\n return tableInstance;\n },\n getEntities() {\n return entities;\n },\n\n async getTenantsByIds(ids: string[]): Promise<Tenant[]> {\n const batchReader = entities.tenants.createEntityReader({\n read: ids.map(id => {\n return {\n PK: `T#${id}`,\n SK: \"A\"\n };\n })\n });\n const tenants = await batchReader.execute();\n\n return tenants\n .map(item => {\n return item.data;\n })\n .map(item => {\n return setTenantDefaults(item);\n });\n },\n\n async listTenants(params: ListTenantsParams = {}): Promise<Tenant[]> {\n const { parent } = params;\n\n const options: IEntityQueryAllParams[\"options\"] = {\n index: \"GSI1\"\n };\n\n if (parent) {\n options.beginsWith = `T#${parent}#`;\n } else {\n options.gt = \" \";\n }\n\n const tenants = await entities.tenants.queryAll({\n partitionKey: `TENANTS`,\n options\n });\n\n return tenants\n .map(item => {\n return item.data;\n })\n .map(item => {\n return setTenantDefaults(item);\n });\n },\n\n async createTenant(data: Tenant): Promise<Tenant> {\n const keys = {\n PK: `T#${data.id}`,\n SK: \"A\",\n GSI1_PK: \"TENANTS\",\n GSI1_SK: `T#${data.parent}#${data.createdOn}`,\n GSI_TENANT: data.id\n };\n\n try {\n await entities.tenants.put({\n TYPE: \"tenancy.tenant\",\n ...keys,\n data\n });\n\n return data;\n } catch (err) {\n throw WebinyError.from(err, {\n message: \"Could not create tenant record.\",\n code: \"CREATE_TENANT_ERROR\",\n data: {\n keys,\n data\n }\n });\n }\n },\n\n async updateTenant(data: Tenant): Promise<Tenant> {\n const tenantPK = `T#${data.id}`;\n\n const keys = {\n PK: tenantPK,\n SK: \"A\",\n GSI1_PK: \"TENANTS\",\n GSI1_SK: `T#${data.parent}#${data.createdOn}`,\n GSI_TENANT: data.id,\n TYPE: \"tenancy.tenant\"\n };\n\n try {\n await entities.tenants.put({\n ...keys,\n data\n });\n return data;\n } catch (err) {\n throw WebinyError.from(err, {\n message: \"Could not update tenant record.\",\n code: \"CREATE_TENANT_ERROR\",\n data: { keys, data }\n });\n }\n },\n\n async deleteTenant(id: string): Promise<void> {\n await entities.tenants.delete({\n PK: `T#${id}`,\n SK: \"A\"\n });\n }\n };\n};\n"],"names":["setTenantDefaults","item","createStorageOperations","params","documentClient","tableInstance","createTable","process","entities","createTenantEntity","ENTITIES","ids","batchReader","id","tenants","parent","options","data","keys","err","WebinyError","tenantPK"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { TenancyStorageOperations } from "@webiny/api-core/types/tenancy.js";
2
+ import type { DynamoDBDocument } from "@webiny/aws-sdk/client-dynamodb/index.js";
3
+ export declare enum ENTITIES {
4
+ TENANT = "TenancyTenant"
5
+ }
6
+ export interface CreateTenancyStorageOperations {
7
+ (params: {
8
+ documentClient: DynamoDBDocument;
9
+ }): TenancyStorageOperations;
10
+ }
@@ -0,0 +1,7 @@
1
+ var types_ENTITIES = /*#__PURE__*/ function(ENTITIES) {
2
+ ENTITIES["TENANT"] = "TenancyTenant";
3
+ return ENTITIES;
4
+ }({});
5
+ export { types_ENTITIES as ENTITIES };
6
+
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenancy/types.js","sources":["../../src/tenancy/types.ts"],"sourcesContent":["import type { TenancyStorageOperations } from \"@webiny/api-core/types/tenancy.js\";\nimport type { DynamoDBDocument } from \"@webiny/aws-sdk/client-dynamodb/index.js\";\n\nexport enum ENTITIES {\n TENANT = \"TenancyTenant\"\n}\n\nexport interface CreateTenancyStorageOperations {\n (params: { documentClient: DynamoDBDocument }): TenancyStorageOperations;\n}\n"],"names":["ENTITIES"],"mappings":"AAGO,IAAKA,iBAAQA,WAAAA,GAAAA,SAARA,QAAQ;;WAARA"}