Adding in existing external table import.
This commit is contained in:
parent
af5e196b4c
commit
0095f470e3
|
@ -17,6 +17,8 @@ const {
|
||||||
} = require("../../../constants")
|
} = require("../../../constants")
|
||||||
const { makeExternalQuery } = require("../../../integrations/base/utils")
|
const { makeExternalQuery } = require("../../../integrations/base/utils")
|
||||||
const { cloneDeep } = require("lodash/fp")
|
const { cloneDeep } = require("lodash/fp")
|
||||||
|
const csvParser = require("../../../utilities/csvParser")
|
||||||
|
const { save: rowSave } = require("../row/external")
|
||||||
|
|
||||||
async function makeTableRequest(
|
async function makeTableRequest(
|
||||||
datasource,
|
datasource,
|
||||||
|
@ -281,6 +283,33 @@ exports.destroy = async function (ctx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.bulkImport = async function (ctx) {
|
exports.bulkImport = async function (ctx) {
|
||||||
ctx.status = 200
|
const appId = ctx.appId
|
||||||
ctx.body = {}
|
const table = await getTable(appId, ctx.params.tableId)
|
||||||
|
const { dataImport } = ctx.request.body
|
||||||
|
if (!dataImport || !dataImport.schema || !dataImport.csvString) {
|
||||||
|
ctx.throw(400, "Provided data import information is invalid.")
|
||||||
|
}
|
||||||
|
const rows = await csvParser.transform({
|
||||||
|
...dataImport,
|
||||||
|
existingTable: table,
|
||||||
|
})
|
||||||
|
const promises = []
|
||||||
|
for (let row of rows) {
|
||||||
|
const rowSaveCtx = {
|
||||||
|
appId,
|
||||||
|
params: {
|
||||||
|
tableId: table._id,
|
||||||
|
},
|
||||||
|
request: {
|
||||||
|
body: {
|
||||||
|
...row,
|
||||||
|
tableId: table._id,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
promises.push(rowSave(rowSaveCtx))
|
||||||
|
}
|
||||||
|
// don't error if some error, as some will have been imported
|
||||||
|
await Promise.allSettled(promises)
|
||||||
|
return table
|
||||||
}
|
}
|
||||||
|
|
|
@ -151,4 +151,5 @@ exports.bulkImport = async function (ctx) {
|
||||||
const table = await getTable(appId, ctx.params.tableId)
|
const table = await getTable(appId, ctx.params.tableId)
|
||||||
const { dataImport } = ctx.request.body
|
const { dataImport } = ctx.request.body
|
||||||
await handleDataImport(appId, ctx.user, table, dataImport)
|
await handleDataImport(appId, ctx.user, table, dataImport)
|
||||||
|
return table
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue