Browse Source

Merge pull request #3886 from Budibase/feature/dynamo-describe

adding dynamoDB describe call to dynamo integration
pull/4023/head
Martin McKeaveney 4 years ago
committed by GitHub
parent
commit
2479e95a0c
  1. 6
      .github/workflows/deploy-cloud.yaml
  2. 5
      packages/server/src/api/controllers/query.js
  3. 1
      packages/server/src/environment.js
  4. 18
      packages/server/src/integrations/dynamodb.ts
  5. 2
      packages/server/src/integrations/oracle.ts
  6. 25
      packages/server/src/integrations/s3.ts

6
.github/workflows/deploy-cloud.yaml

@ -12,6 +12,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Fail if branch is not master
if: github.ref != 'refs/heads/master'
run: |
echo "Ref is not master, you must run this job from master."
exit 1
- uses: actions/checkout@v2
- name: Pull values.yaml from budibase-infra

5
packages/server/src/api/controllers/query.js

@ -7,8 +7,11 @@ const {
} = require("../../db/utils")
const { BaseQueryVerbs } = require("../../constants")
const { Thread, ThreadType } = require("../../threads")
const env = require("../../environment")
const Runner = new Thread(ThreadType.QUERY, { timeoutMs: 10000 })
const Runner = new Thread(ThreadType.QUERY, {
timeoutMs: env.QUERY_THREAD_TIMEOUT || 10000,
})
// simple function to append "readable" to all read queries
function enrichQueries(input) {

1
packages/server/src/environment.js

@ -65,6 +65,7 @@ module.exports = {
DEPLOYMENT_CREDENTIALS_URL: process.env.DEPLOYMENT_CREDENTIALS_URL,
ALLOW_DEV_AUTOMATIONS: process.env.ALLOW_DEV_AUTOMATIONS,
DISABLE_THREADING: process.env.DISABLE_THREADING,
QUERY_THREAD_TIMEOUT: process.env.QUERY_THREAD_TIMEOUT,
_set(key, value) {
process.env[key] = value
module.exports[key] = value

18
packages/server/src/integrations/dynamodb.ts

@ -80,6 +80,17 @@ module DynamoModule {
},
},
},
describe: {
type: QueryTypes.FIELDS,
customisable: true,
readable: true,
fields: {
table: {
type: DatasourceFieldTypes.STRING,
required: true,
},
},
},
get: {
type: QueryTypes.FIELDS,
customisable: true,
@ -180,6 +191,13 @@ module DynamoModule {
return response
}
async describe(query: { table: string }) {
const params = {
TableName: query.table,
}
return new AWS.DynamoDB().describeTable(params).promise()
}
async get(query: { table: string; json: object }) {
const params = {
TableName: query.table,

2
packages/server/src/integrations/oracle.ts

@ -450,7 +450,7 @@ module OracleModule {
})
return lastRow.rows
} else {
return [{ [ operation.toLowerCase() ]: true }]
return [{ [operation.toLowerCase()]: true }]
}
}
}

25
packages/server/src/integrations/s3.ts

@ -8,6 +8,8 @@ module S3Module {
region: string
accessKeyId: string
secretAccessKey: string
s3ForcePathStyle: boolean
endpoint?: string
}
const SCHEMA: Integration = {
@ -18,7 +20,7 @@ module S3Module {
datasource: {
region: {
type: "string",
required: true,
required: false,
default: "us-east-1",
},
accessKeyId: {
@ -29,6 +31,15 @@ module S3Module {
type: "password",
required: true,
},
endpoint: {
type: "string",
required: false,
},
signatureVersion: {
type: "string",
required: false,
default: "v4"
},
},
query: {
read: {
@ -46,16 +57,16 @@ module S3Module {
class S3Integration implements IntegrationBase {
private readonly config: S3Config
private client: any
private connectionPromise: Promise<any>
constructor(config: S3Config) {
this.config = config
this.connectionPromise = this.connect()
this.client = new AWS.S3()
}
if (this.config.endpoint) {
this.config.s3ForcePathStyle = true
} else {
delete this.config.endpoint
}
async connect() {
AWS.config.update(this.config)
this.client = new AWS.S3(this.config)
}
async read(query: { bucket: string }) {

Loading…
Cancel
Save