diff --git a/packages/server/src/integrations/arangodb.js b/packages/server/src/integrations/arangodb.js index f2aa54667e..2b3ee1b11b 100644 --- a/packages/server/src/integrations/arangodb.js +++ b/packages/server/src/integrations/arangodb.js @@ -2,84 +2,86 @@ const { Database, aql } = require("arangojs") const { FIELD_TYPES, QUERY_TYPES } = require("./Integration") const SCHEMA = { - docs: "https://github.com/arangodb/arangojs", - datasource: { - url: { - type: FIELD_TYPES.STRING, - default: "http://localhost:8529", - required: true, - }, - username: { - type: FIELD_TYPES.STRING, - default: "root", - required: true, - }, - password: { - type: FIELD_TYPES.PASSWORD, - required: true, - }, - databaseName: { - type: FIELD_TYPES.STRING, - default: "_system", - required: true, - }, - collection: { - type: FIELD_TYPES.STRING, - required: true, - }, + docs: "https://github.com/arangodb/arangojs", + datasource: { + url: { + type: FIELD_TYPES.STRING, + default: "http://localhost:8529", + required: true, }, - query: { - read: { - type: QUERY_TYPES.SQL, - }, - create: { - type: QUERY_TYPES.JSON, - }, + username: { + type: FIELD_TYPES.STRING, + default: "root", + required: true, }, + password: { + type: FIELD_TYPES.PASSWORD, + required: true, + }, + databaseName: { + type: FIELD_TYPES.STRING, + default: "_system", + required: true, + }, + collection: { + type: FIELD_TYPES.STRING, + required: true, + }, + }, + query: { + read: { + type: QUERY_TYPES.SQL, + }, + create: { + type: QUERY_TYPES.JSON, + }, + }, } class ArangoDBIntegration { - constructor(config) { - config.auth = { - username: config.username, - password: config.password, - } - - this.config = config - this.client = new Database(config) + constructor(config) { + config.auth = { + username: config.username, + password: config.password, } - async read(query) { - try { - const result = await this.client.query(query.sql) - let rl = [] - await result.forEach((r)=> rl.push(r)) - return rl - } catch (err) { - console.error("Error querying arangodb",err.message) - throw err - } finally { - this.client.close() - } - } + this.config = config + this.client = new Database(config) + } - async create(query) { - const clc = this.client.collection(this.config.collection) - try { - const result = await this.client.query(aql`INSERT ${query.json} INTO ${clc} LET n = NEW RETURN NEW`) - let rl = [] - await result.forEach((r)=> rl.push(r)) - return rl - } catch (err) { - console.error("Error querying arangodb",err.message) - throw err - } finally { - this.client.close() - } + async read(query) { + try { + const result = await this.client.query(query.sql) + let rl = [] + await result.forEach(r => rl.push(r)) + return rl + } catch (err) { + console.error("Error querying arangodb", err.message) + throw err + } finally { + this.client.close() } + } + + async create(query) { + const clc = this.client.collection(this.config.collection) + try { + const result = await this.client.query( + aql`INSERT ${query.json} INTO ${clc} LET n = NEW RETURN NEW` + ) + let rl = [] + await result.forEach(r => rl.push(r)) + return rl + } catch (err) { + console.error("Error querying arangodb", err.message) + throw err + } finally { + this.client.close() + } + } } module.exports = { schema: SCHEMA, integration: ArangoDBIntegration, -} \ No newline at end of file +}