@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.
- package/ApiCoreDdbFeature.d.ts +12 -0
- package/ApiCoreDdbFeature.js +16 -0
- package/ApiCoreDdbFeature.js.map +1 -0
- package/LICENSE +21 -0
- package/README.md +11 -0
- package/adminUsers/definitions/entities.d.ts +3 -0
- package/adminUsers/definitions/entities.js +9 -0
- package/adminUsers/definitions/entities.js.map +1 -0
- package/adminUsers/definitions/types.d.ts +5 -0
- package/adminUsers/definitions/types.js +0 -0
- package/adminUsers/index.d.ts +2 -0
- package/adminUsers/index.js +144 -0
- package/adminUsers/index.js.map +1 -0
- package/adminUsers/types.d.ts +22 -0
- package/adminUsers/types.js +8 -0
- package/adminUsers/types.js.map +1 -0
- package/createApiCoreDdb.d.ts +7 -0
- package/createApiCoreDdb.js +26 -0
- package/createApiCoreDdb.js.map +1 -0
- package/index.d.ts +4 -0
- package/index.js +3 -0
- package/keyValueStore/KeyValueStoreDynamoTable.d.ts +15 -0
- package/keyValueStore/KeyValueStoreDynamoTable.js +28 -0
- package/keyValueStore/KeyValueStoreDynamoTable.js.map +1 -0
- package/keyValueStore/KeyValueStoreStorageOperations.d.ts +17 -0
- package/keyValueStore/KeyValueStoreStorageOperations.js +83 -0
- package/keyValueStore/KeyValueStoreStorageOperations.js.map +1 -0
- package/keyValueStore/index.d.ts +8 -0
- package/keyValueStore/index.js +5 -0
- package/keyValueStore/index.js.map +1 -0
- package/package.json +45 -0
- package/security/definitions/entities.d.ts +5 -0
- package/security/definitions/entities.js +23 -0
- package/security/definitions/entities.js.map +1 -0
- package/security/definitions/types.d.ts +14 -0
- package/security/definitions/types.js +0 -0
- package/security/index.d.ts +3 -0
- package/security/index.js +401 -0
- package/security/index.js.map +1 -0
- package/security/types.d.ts +10 -0
- package/security/types.js +9 -0
- package/security/types.js.map +1 -0
- package/serviceDiscovery/DdbServiceManifestLoader.d.ts +7 -0
- package/serviceDiscovery/DdbServiceManifestLoader.js +27 -0
- package/serviceDiscovery/DdbServiceManifestLoader.js.map +1 -0
- package/serviceDiscovery/index.d.ts +1 -0
- package/serviceDiscovery/index.js +1 -0
- package/tenancy/definitions/tenantEntity.d.ts +8 -0
- package/tenancy/definitions/tenantEntity.js +8 -0
- package/tenancy/definitions/tenantEntity.js.map +1 -0
- package/tenancy/definitions/types.d.ts +6 -0
- package/tenancy/definitions/types.js +0 -0
- package/tenancy/index.d.ts +2 -0
- package/tenancy/index.js +115 -0
- package/tenancy/index.js.map +1 -0
- package/tenancy/types.d.ts +10 -0
- package/tenancy/types.js +7 -0
- package/tenancy/types.js.map +1 -0
package/tenancy/index.js
ADDED
|
@@ -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
|
+
}
|
package/tenancy/types.js
ADDED
|
@@ -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"}
|