budibase/packages/server/src/integrations/airtable.js

54 lines
894 B
JavaScript
Raw Normal View History

2021-01-11 18:18:22 +01:00
const Airtable = require("airtable")
const SCHEMA = {
datasource: {
apiKey: {
type: "string",
default: "enter api key",
required: true,
},
base: {
type: "string",
default: "mybase",
required: true,
},
table: {
type: "string",
default: "mytable",
required: true,
},
},
query: {},
}
class AirtableIntegration {
constructor(config) {
this.config = config
this.client = new Airtable(config).base(config.base)
}
// async create() {
// }
// async update() {
// }
// async delete() {
// }
2021-01-12 17:49:11 +01:00
async read() {
2021-01-11 18:18:22 +01:00
const records = await this.client(this.config.table)
2021-01-12 17:49:11 +01:00
.select({ maxRecords: this.query.records, view: this.query.view })
2021-01-11 18:18:22 +01:00
.firstPage()
return records.map(({ fields }) => fields)
}
}
module.exports = {
schema: SCHEMA,
integration: AirtableIntegration,
}