From c0cd325e8be62de4cd1fc29fbdbb915fee5f04a3 Mon Sep 17 00:00:00 2001 From: eladcon Date: Sun, 19 May 2024 23:25:39 +0300 Subject: [PATCH] feat(dynamodb): get table connection with read write permissions (#241) Useful when accessing the table using native clients --- dynamodb/dynamodb-types.w | 1 + dynamodb/dynamodb.sim.w | 4 ++++ dynamodb/dynamodb.tf-aws.w | 9 +++++++++ dynamodb/dynamodb.w | 4 ++++ dynamodb/package-lock.json | 4 ++-- dynamodb/package.json | 2 +- 6 files changed, 21 insertions(+), 3 deletions(-) diff --git a/dynamodb/dynamodb-types.w b/dynamodb/dynamodb-types.w index 2adefa40..08e57c0c 100644 --- a/dynamodb/dynamodb-types.w +++ b/dynamodb/dynamodb-types.w @@ -208,4 +208,5 @@ pub inflight interface IClient { pub interface ITable extends IClient { setStreamConsumer(handler: inflight (StreamRecord): void, options: StreamConsumerOptions?): void; + inflight readWriteConnection(): Connection; } diff --git a/dynamodb/dynamodb.sim.w b/dynamodb/dynamodb.sim.w index 7d283816..8a13597d 100644 --- a/dynamodb/dynamodb.sim.w +++ b/dynamodb/dynamodb.sim.w @@ -228,4 +228,8 @@ pub class Table_sim impl dynamodb_types.ITable { pub inflight query(options: dynamodb_types.QueryOptions): dynamodb_types.QueryOutput { return this.client.query(options); } + + pub inflight readWriteConnection(): dynamodb_types.Connection { + return this.connection; + } } diff --git a/dynamodb/dynamodb.tf-aws.w b/dynamodb/dynamodb.tf-aws.w index 7aff1138..89c7fb03 100644 --- a/dynamodb/dynamodb.tf-aws.w +++ b/dynamodb/dynamodb.tf-aws.w @@ -147,6 +147,11 @@ pub class Table_tfaws impl dynamodb_types.ITable { "dynamodb:GetItem", ); } + if ops.contains("readWriteConnection") { + actions.push( + "dynamodb:*", + ); + } if ops.length > 0 { lambda.addPolicyStatements({ actions: actions.copy(), @@ -190,4 +195,8 @@ pub class Table_tfaws impl dynamodb_types.ITable { pub inflight query(options: dynamodb_types.QueryOptions): dynamodb_types.QueryOutput { return this.client.query(options); } + + pub inflight readWriteConnection(): dynamodb_types.Connection { + return this.connection; + } } diff --git a/dynamodb/dynamodb.w b/dynamodb/dynamodb.w index 73731cd2..84f36dbb 100644 --- a/dynamodb/dynamodb.w +++ b/dynamodb/dynamodb.w @@ -61,5 +61,9 @@ pub class Table impl dynamodb_types.ITable { pub inflight query(options: dynamodb_types.QueryOptions): dynamodb_types.QueryOutput { return this.implementation.query(options); } + + pub inflight readWriteConnection(): dynamodb_types.Connection { + return this.implementation.readWriteConnection(); + } } diff --git a/dynamodb/package-lock.json b/dynamodb/package-lock.json index 0358f1ec..9b92ae51 100644 --- a/dynamodb/package-lock.json +++ b/dynamodb/package-lock.json @@ -1,12 +1,12 @@ { "name": "@winglibs/dynamodb", - "version": "0.1.7", + "version": "0.1.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@winglibs/dynamodb", - "version": "0.1.7", + "version": "0.1.9", "license": "MIT", "peerDependencies": { "@aws-sdk/client-dynamodb": "^3.461.0", diff --git a/dynamodb/package.json b/dynamodb/package.json index 84d59efa..67c1ce15 100644 --- a/dynamodb/package.json +++ b/dynamodb/package.json @@ -1,6 +1,6 @@ { "name": "@winglibs/dynamodb", - "version": "0.1.8", + "version": "0.1.9", "description": "DynamoDB library for Wing", "author": { "name": "Cristian Pallarés",