@budibase/server 1.0.80-alpha.3 → 1.0.80-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/builder/assets/{index.f8c92447.js → index.5a72dc45.js} +98 -96
- package/builder/assets/{index.c57242d4.css → index.dd19c61c.css} +1 -1
- package/builder/index.html +2 -2
- package/coverage/clover.xml +182 -154
- package/coverage/coverage-final.json +7 -7
- package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
- package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/controllers/application.js.html +1 -1
- package/coverage/lcov-report/api/controllers/auth.js.html +1 -1
- package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
- package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
- package/coverage/lcov-report/api/controllers/component.js.html +1 -1
- package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
- package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
- package/coverage/lcov-report/api/controllers/index.html +1 -1
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
- package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
- package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
- package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
- package/coverage/lcov-report/api/controllers/query/index.html +1 -1
- package/coverage/lcov-report/api/controllers/query/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
- package/coverage/lcov-report/api/controllers/role.js.html +1 -1
- package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/external.js.html +71 -8
- package/coverage/lcov-report/api/controllers/row/index.html +33 -33
- package/coverage/lcov-report/api/controllers/row/index.js.html +35 -8
- package/coverage/lcov-report/api/controllers/row/internal.js.html +56 -8
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
- package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
- package/coverage/lcov-report/api/controllers/script.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/external.js.html +51 -9
- package/coverage/lcov-report/api/controllers/table/index.html +14 -14
- package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/internal.js.html +1 -1
- package/coverage/lcov-report/api/controllers/table/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.html +1 -1
- package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
- package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +1 -1
- package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
- package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/routes/application.js.html +1 -1
- package/coverage/lcov-report/api/routes/auth.js.html +1 -1
- package/coverage/lcov-report/api/routes/automation.js.html +1 -1
- package/coverage/lcov-report/api/routes/backup.js.html +1 -1
- package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
- package/coverage/lcov-report/api/routes/component.js.html +1 -1
- package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
- package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
- package/coverage/lcov-report/api/routes/dev.js.html +1 -1
- package/coverage/lcov-report/api/routes/index.html +1 -1
- package/coverage/lcov-report/api/routes/index.js.html +1 -1
- package/coverage/lcov-report/api/routes/integration.js.html +1 -1
- package/coverage/lcov-report/api/routes/layout.js.html +1 -1
- package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
- package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
- package/coverage/lcov-report/api/routes/permission.js.html +1 -1
- package/coverage/lcov-report/api/routes/query.js.html +1 -1
- package/coverage/lcov-report/api/routes/role.js.html +1 -1
- package/coverage/lcov-report/api/routes/routing.js.html +1 -1
- package/coverage/lcov-report/api/routes/row.js.html +65 -2
- package/coverage/lcov-report/api/routes/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/static.js.html +1 -1
- package/coverage/lcov-report/api/routes/table.js.html +1 -1
- package/coverage/lcov-report/api/routes/templates.js.html +1 -1
- package/coverage/lcov-report/api/routes/user.js.html +1 -1
- package/coverage/lcov-report/api/routes/utils/index.html +1 -1
- package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
- package/coverage/lcov-report/api/routes/view.js.html +1 -1
- package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/actions.js.html +1 -1
- package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
- package/coverage/lcov-report/automations/bullboard.js.html +1 -1
- package/coverage/lcov-report/automations/index.html +1 -1
- package/coverage/lcov-report/automations/index.js.html +1 -1
- package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
- package/coverage/lcov-report/automations/steps/createRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
- package/coverage/lcov-report/automations/steps/deleteRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
- package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
- package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
- package/coverage/lcov-report/automations/steps/index.html +1 -1
- package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
- package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
- package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
- package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
- package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
- package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
- package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/triggers.js.html +1 -1
- package/coverage/lcov-report/automations/utils.js.html +1 -1
- package/coverage/lcov-report/constants/index.html +1 -1
- package/coverage/lcov-report/constants/index.js.html +1 -1
- package/coverage/lcov-report/constants/layouts.js.html +1 -1
- package/coverage/lcov-report/constants/screens.js.html +1 -1
- package/coverage/lcov-report/db/client.js.html +1 -1
- package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
- package/coverage/lcov-report/db/index.html +1 -1
- package/coverage/lcov-report/db/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.html +1 -1
- package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
- package/coverage/lcov-report/db/newid.js.html +1 -1
- package/coverage/lcov-report/db/utils.js.html +1 -1
- package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
- package/coverage/lcov-report/events/index.html +1 -1
- package/coverage/lcov-report/events/index.js.html +1 -1
- package/coverage/lcov-report/events/utils.js.html +1 -1
- package/coverage/lcov-report/index.html +26 -26
- package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
- package/coverage/lcov-report/middleware/authorized.js.html +2 -2
- package/coverage/lcov-report/middleware/builder.js.html +1 -1
- package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
- package/coverage/lcov-report/middleware/index.html +1 -1
- package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
- package/coverage/lcov-report/middleware/resourceId.js.html +12 -12
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/usageQuota.js.html +1 -1
- package/coverage/lcov-report/middleware/utils.js.html +1 -1
- package/coverage/lcov-report/threads/automation.js.html +1 -1
- package/coverage/lcov-report/threads/index.html +1 -1
- package/coverage/lcov-report/threads/index.js.html +1 -1
- package/coverage/lcov-report/threads/query.js.html +1 -1
- package/coverage/lcov-report/threads/utils.js.html +1 -1
- package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
- package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
- package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
- package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
- package/coverage/lcov-report/utilities/global.js.html +1 -1
- package/coverage/lcov-report/utilities/index.html +1 -1
- package/coverage/lcov-report/utilities/index.js.html +1 -1
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
- package/coverage/lcov-report/utilities/queue/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
- package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
- package/coverage/lcov-report/utilities/security.js.html +1 -1
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/index.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
- package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +1 -1
- package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
- package/coverage/lcov.info +295 -250
- package/dist/api/controllers/row/external.js +18 -0
- package/dist/api/controllers/row/index.js +11 -0
- package/dist/api/controllers/row/internal.js +11 -0
- package/dist/api/controllers/table/external.js +8 -2
- package/dist/api/routes/row.js +15 -1
- package/dist/integrations/base/sqlTable.js +13 -5
- package/dist/package.json +4 -4
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/src/api/controllers/row/external.js +21 -0
- package/src/api/controllers/row/index.js +9 -0
- package/src/api/controllers/row/internal.js +16 -0
- package/src/api/controllers/table/external.js +16 -2
- package/src/api/routes/row.js +21 -0
- package/src/definitions/datasource.ts +6 -0
- package/src/integrations/base/sqlTable.ts +24 -6
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@budibase/server",
|
|
3
3
|
"email": "hi@budibase.com",
|
|
4
|
-
"version": "1.0.80-alpha.
|
|
4
|
+
"version": "1.0.80-alpha.6",
|
|
5
5
|
"description": "Budibase Web Server",
|
|
6
6
|
"main": "src/index.ts",
|
|
7
7
|
"repository": {
|
|
@@ -71,9 +71,9 @@
|
|
|
71
71
|
"license": "GPL-3.0",
|
|
72
72
|
"dependencies": {
|
|
73
73
|
"@apidevtools/swagger-parser": "^10.0.3",
|
|
74
|
-
"@budibase/backend-core": "^1.0.80-alpha.
|
|
75
|
-
"@budibase/client": "^1.0.80-alpha.
|
|
76
|
-
"@budibase/string-templates": "^1.0.80-alpha.
|
|
74
|
+
"@budibase/backend-core": "^1.0.80-alpha.6",
|
|
75
|
+
"@budibase/client": "^1.0.80-alpha.6",
|
|
76
|
+
"@budibase/string-templates": "^1.0.80-alpha.6",
|
|
77
77
|
"@bull-board/api": "^3.7.0",
|
|
78
78
|
"@bull-board/koa": "^3.7.0",
|
|
79
79
|
"@elastic/elasticsearch": "7.10.0",
|
|
@@ -175,5 +175,5 @@
|
|
|
175
175
|
"optionalDependencies": {
|
|
176
176
|
"oracledb": "^5.3.0"
|
|
177
177
|
},
|
|
178
|
-
"gitHead": "
|
|
178
|
+
"gitHead": "094de0d4bc6d142522aabde7a4dff585280c3ad7"
|
|
179
179
|
}
|
|
@@ -152,6 +152,27 @@ exports.validate = async () => {
|
|
|
152
152
|
return { valid: true }
|
|
153
153
|
}
|
|
154
154
|
|
|
155
|
+
exports.exportRows = async ctx => {
|
|
156
|
+
const { datasourceId, tableName } = breakExternalTableId(ctx.params.tableId)
|
|
157
|
+
const db = getAppDB()
|
|
158
|
+
const datasource = await db.get(datasourceId)
|
|
159
|
+
if (!datasource || !datasource.entities) {
|
|
160
|
+
ctx.throw(400, "Datasource has not been configured for plus API.")
|
|
161
|
+
}
|
|
162
|
+
const tables = datasource.entities
|
|
163
|
+
const table = tables[tableName]
|
|
164
|
+
ctx.request.body = {
|
|
165
|
+
query: {
|
|
166
|
+
oneOf: {
|
|
167
|
+
[table.primaryDisplay]: ctx.request.body.map(
|
|
168
|
+
id => breakRowIdField(id)[0]
|
|
169
|
+
),
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
}
|
|
173
|
+
return exports.search(ctx)
|
|
174
|
+
}
|
|
175
|
+
|
|
155
176
|
exports.fetchEnrichedRow = async ctx => {
|
|
156
177
|
const id = ctx.params.rowId
|
|
157
178
|
const tableId = ctx.params.tableId
|
|
@@ -137,3 +137,12 @@ exports.fetchEnrichedRow = async function (ctx) {
|
|
|
137
137
|
ctx.throw(400, err)
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
|
+
|
|
141
|
+
exports.export = async function (ctx) {
|
|
142
|
+
const tableId = getTableId(ctx)
|
|
143
|
+
try {
|
|
144
|
+
ctx.body = await pickApi(tableId).exportRows(ctx)
|
|
145
|
+
} catch (err) {
|
|
146
|
+
ctx.throw(400, err)
|
|
147
|
+
}
|
|
148
|
+
}
|
|
@@ -362,6 +362,22 @@ exports.validate = async ctx => {
|
|
|
362
362
|
})
|
|
363
363
|
}
|
|
364
364
|
|
|
365
|
+
exports.exportRows = async ctx => {
|
|
366
|
+
const db = getAppDB()
|
|
367
|
+
const table = await db.get(ctx.params.tableId)
|
|
368
|
+
const rowIds = ctx.request.body.rows
|
|
369
|
+
let response = (
|
|
370
|
+
await db.allDocs({
|
|
371
|
+
include_docs: true,
|
|
372
|
+
keys: rowIds,
|
|
373
|
+
})
|
|
374
|
+
).rows.map(row => row.doc)
|
|
375
|
+
|
|
376
|
+
let rows = await outputProcessing(table, response)
|
|
377
|
+
|
|
378
|
+
return rows
|
|
379
|
+
}
|
|
380
|
+
|
|
365
381
|
exports.fetchEnrichedRow = async ctx => {
|
|
366
382
|
const db = getAppDB()
|
|
367
383
|
const tableId = ctx.params.tableId
|
|
@@ -25,7 +25,8 @@ async function makeTableRequest(
|
|
|
25
25
|
operation,
|
|
26
26
|
table,
|
|
27
27
|
tables,
|
|
28
|
-
oldTable = null
|
|
28
|
+
oldTable = null,
|
|
29
|
+
renamed = null
|
|
29
30
|
) {
|
|
30
31
|
const json = {
|
|
31
32
|
endpoint: {
|
|
@@ -41,6 +42,9 @@ async function makeTableRequest(
|
|
|
41
42
|
if (oldTable) {
|
|
42
43
|
json.meta.table = oldTable
|
|
43
44
|
}
|
|
45
|
+
if (renamed) {
|
|
46
|
+
json.meta.renamed = renamed
|
|
47
|
+
}
|
|
44
48
|
return makeExternalQuery(datasource, json)
|
|
45
49
|
}
|
|
46
50
|
|
|
@@ -160,6 +164,7 @@ function isRelationshipSetup(column) {
|
|
|
160
164
|
|
|
161
165
|
exports.save = async function (ctx) {
|
|
162
166
|
const table = ctx.request.body
|
|
167
|
+
const { _rename: renamed } = table
|
|
163
168
|
// can't do this right now
|
|
164
169
|
delete table.dataImport
|
|
165
170
|
const datasourceId = getDatasourceId(ctx.request.body)
|
|
@@ -241,7 +246,14 @@ exports.save = async function (ctx) {
|
|
|
241
246
|
const operation = oldTable
|
|
242
247
|
? DataSourceOperation.UPDATE_TABLE
|
|
243
248
|
: DataSourceOperation.CREATE_TABLE
|
|
244
|
-
await makeTableRequest(
|
|
249
|
+
await makeTableRequest(
|
|
250
|
+
datasource,
|
|
251
|
+
operation,
|
|
252
|
+
tableToSave,
|
|
253
|
+
tables,
|
|
254
|
+
oldTable,
|
|
255
|
+
renamed
|
|
256
|
+
)
|
|
245
257
|
// update any extra tables (like foreign keys in other tables)
|
|
246
258
|
for (let extraTable of extraTablesToUpdate) {
|
|
247
259
|
const oldExtraTable = oldTables[extraTable.name]
|
|
@@ -258,6 +270,8 @@ exports.save = async function (ctx) {
|
|
|
258
270
|
)
|
|
259
271
|
}
|
|
260
272
|
|
|
273
|
+
// remove the rename prop
|
|
274
|
+
delete tableToSave._rename
|
|
261
275
|
// store it into couch now for budibase reference
|
|
262
276
|
datasource.entities[tableToSave.name] = tableToSave
|
|
263
277
|
await db.put(datasource)
|
package/src/api/routes/row.js
CHANGED
|
@@ -252,4 +252,25 @@ router
|
|
|
252
252
|
rowController.destroy
|
|
253
253
|
)
|
|
254
254
|
|
|
255
|
+
/**
|
|
256
|
+
* @api {post} /api/:tableId/rows/exportRows Export Rows
|
|
257
|
+
* @apiName Export rows
|
|
258
|
+
* @apiGroup rows
|
|
259
|
+
* @apiPermission table write access
|
|
260
|
+
* @apiDescription This API can export a number of provided rows
|
|
261
|
+
*
|
|
262
|
+
* @apiParam {string} tableId The ID of the table the row is to be deleted from.
|
|
263
|
+
*
|
|
264
|
+
* @apiParam (Body) {object[]} [rows] The row IDs which are to be exported
|
|
265
|
+
*
|
|
266
|
+
* @apiSuccess {object[]|object}
|
|
267
|
+
*/
|
|
268
|
+
.post(
|
|
269
|
+
"/api/:tableId/rows/exportRows",
|
|
270
|
+
paramResource("tableId"),
|
|
271
|
+
authorized(PermissionTypes.TABLE, PermissionLevels.WRITE),
|
|
272
|
+
usage,
|
|
273
|
+
rowController.export
|
|
274
|
+
)
|
|
275
|
+
|
|
255
276
|
module.exports = router
|
|
@@ -138,6 +138,11 @@ export interface PaginationJson {
|
|
|
138
138
|
page?: string | number
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
+
export interface RenameColumn {
|
|
142
|
+
old: string
|
|
143
|
+
updated: string
|
|
144
|
+
}
|
|
145
|
+
|
|
141
146
|
export interface RelationshipsJson {
|
|
142
147
|
through?: string
|
|
143
148
|
from?: string
|
|
@@ -166,6 +171,7 @@ export interface QueryJson {
|
|
|
166
171
|
meta?: {
|
|
167
172
|
table?: Table
|
|
168
173
|
tables?: Record<string, Table>
|
|
174
|
+
renamed: RenameColumn
|
|
169
175
|
}
|
|
170
176
|
extra?: {
|
|
171
177
|
idFilter?: SearchFilters
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { Knex, knex } from "knex"
|
|
2
2
|
import { Table } from "../../definitions/common"
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
Operation,
|
|
5
|
+
QueryJson,
|
|
6
|
+
RenameColumn,
|
|
7
|
+
} from "../../definitions/datasource"
|
|
4
8
|
import { breakExternalTableId } from "../utils"
|
|
5
9
|
import SchemaBuilder = Knex.SchemaBuilder
|
|
6
10
|
import CreateTableBuilder = Knex.CreateTableBuilder
|
|
@@ -10,7 +14,8 @@ function generateSchema(
|
|
|
10
14
|
schema: CreateTableBuilder,
|
|
11
15
|
table: Table,
|
|
12
16
|
tables: Record<string, Table>,
|
|
13
|
-
oldTable: null | Table = null
|
|
17
|
+
oldTable: null | Table = null,
|
|
18
|
+
renamed?: RenameColumn
|
|
14
19
|
) {
|
|
15
20
|
let primaryKey = table && table.primary ? table.primary[0] : null
|
|
16
21
|
const columns = Object.values(table.schema)
|
|
@@ -29,7 +34,11 @@ function generateSchema(
|
|
|
29
34
|
for (let [key, column] of Object.entries(table.schema)) {
|
|
30
35
|
// skip things that are already correct
|
|
31
36
|
const oldColumn = oldTable ? oldTable.schema[key] : null
|
|
32
|
-
if (
|
|
37
|
+
if (
|
|
38
|
+
(oldColumn && oldColumn.type) ||
|
|
39
|
+
(primaryKey === key && !isJunction) ||
|
|
40
|
+
renamed?.updated === key
|
|
41
|
+
) {
|
|
33
42
|
continue
|
|
34
43
|
}
|
|
35
44
|
switch (column.type) {
|
|
@@ -81,6 +90,10 @@ function generateSchema(
|
|
|
81
90
|
}
|
|
82
91
|
}
|
|
83
92
|
|
|
93
|
+
if (renamed) {
|
|
94
|
+
schema.renameColumn(renamed.old, renamed.updated)
|
|
95
|
+
}
|
|
96
|
+
|
|
84
97
|
// need to check if any columns have been deleted
|
|
85
98
|
if (oldTable) {
|
|
86
99
|
const deletedColumns = Object.entries(oldTable.schema)
|
|
@@ -90,6 +103,9 @@ function generateSchema(
|
|
|
90
103
|
)
|
|
91
104
|
.map(([key]) => key)
|
|
92
105
|
deletedColumns.forEach(key => {
|
|
106
|
+
if (renamed?.old === key) {
|
|
107
|
+
return
|
|
108
|
+
}
|
|
93
109
|
if (oldTable.constrained && oldTable.constrained.indexOf(key) !== -1) {
|
|
94
110
|
schema.dropForeign(key)
|
|
95
111
|
}
|
|
@@ -114,10 +130,11 @@ function buildUpdateTable(
|
|
|
114
130
|
knex: SchemaBuilder,
|
|
115
131
|
table: Table,
|
|
116
132
|
tables: Record<string, Table>,
|
|
117
|
-
oldTable: Table
|
|
133
|
+
oldTable: Table,
|
|
134
|
+
renamed: RenameColumn
|
|
118
135
|
): SchemaBuilder {
|
|
119
136
|
return knex.alterTable(table.name, schema => {
|
|
120
|
-
generateSchema(schema, table, tables, oldTable)
|
|
137
|
+
generateSchema(schema, table, tables, oldTable, renamed)
|
|
121
138
|
})
|
|
122
139
|
}
|
|
123
140
|
|
|
@@ -167,7 +184,8 @@ class SqlTableQueryBuilder {
|
|
|
167
184
|
client,
|
|
168
185
|
json.table,
|
|
169
186
|
json.meta.tables,
|
|
170
|
-
json.meta.table
|
|
187
|
+
json.meta.table,
|
|
188
|
+
json.meta.renamed
|
|
171
189
|
)
|
|
172
190
|
break
|
|
173
191
|
case Operation.DELETE_TABLE:
|