Merge pull request #3886 from Budibase/feature/dynamo-describe
adding dynamoDB describe call to dynamo integration
This commit is contained in:
commit
2479e95a0c
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -450,7 +450,7 @@ module OracleModule {
|
|||
})
|
||||
return lastRow.rows
|
||||
} else {
|
||||
return [{ [ operation.toLowerCase() ]: true }]
|
||||
return [{ [operation.toLowerCase()]: true }]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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…
Reference in New Issue