mirror of https://github.com/nocodb/nocodb
Browse Source
Nc fix/Comment schema migrationfix/comments-added-through-api-token-request-cannot-be-displayed
Pranav C
6 months ago
committed by
GitHub
3 changed files with 93 additions and 56 deletions
@ -0,0 +1,84 @@
|
||||
import { Logger } from '@nestjs/common'; |
||||
import type { Knex } from 'knex'; |
||||
import { MetaTable } from '~/utils/globals'; |
||||
|
||||
const logger = new Logger('nc_046_comment_mentions'); |
||||
|
||||
const READ_BATCH_SIZE = 1000; |
||||
const INSERT_BATCH_SIZE = 200; |
||||
|
||||
const up = async (knex: Knex) => { |
||||
logger.log('Migration Started'); |
||||
|
||||
let fetchNextBatch = true; |
||||
|
||||
for (let offset = 0; fetchNextBatch; offset += READ_BATCH_SIZE) { |
||||
const rows = await knex |
||||
.select( |
||||
`${MetaTable.AUDIT}.id`, |
||||
`${MetaTable.AUDIT}.row_id`, |
||||
`${MetaTable.AUDIT}.description`, |
||||
`${MetaTable.AUDIT}.user as user_email`, |
||||
`${MetaTable.AUDIT}.source_id`, |
||||
`${MetaTable.AUDIT}.base_id`, |
||||
`${MetaTable.AUDIT}.fk_model_id`, |
||||
`${MetaTable.AUDIT}.created_at`, |
||||
`${MetaTable.AUDIT}.updated_at`, |
||||
`${MetaTable.USERS}.id as user_id`, |
||||
) |
||||
.from(MetaTable.AUDIT) |
||||
.where(`${MetaTable.AUDIT}.op_type`, 'COMMENT') |
||||
.leftJoin( |
||||
MetaTable.USERS, |
||||
`${MetaTable.AUDIT}.user`, |
||||
`${MetaTable.USERS}.email`, |
||||
) |
||||
.offset(offset) |
||||
// increase limit by 1 to check if there are more rows
|
||||
.limit(READ_BATCH_SIZE + 1); |
||||
|
||||
logger.log( |
||||
`Data from Audit Table fetched, batch: ${offset} - ${ |
||||
offset + READ_BATCH_SIZE |
||||
}`,
|
||||
); |
||||
|
||||
const formattedRows = rows |
||||
// exclude the last row since it was used to check if there are more rows
|
||||
.slice(0, READ_BATCH_SIZE) |
||||
.map((row) => ({ |
||||
id: row.id, |
||||
row_id: row.row_id, |
||||
comment: (row.description ?? '') |
||||
.substring((row.description ?? '').indexOf(':') + 1) |
||||
.trim(), |
||||
created_by: row.user_id, |
||||
created_by_email: row.user_email, |
||||
source_id: row.source_id, |
||||
base_id: row.base_id, |
||||
fk_model_id: row.fk_model_id, |
||||
created_at: row.created_at, |
||||
updated_at: row.updated_at, |
||||
})); |
||||
|
||||
logger.log('Data from Audit Table formatted'); |
||||
|
||||
await knex.batchInsert( |
||||
MetaTable.COMMENTS, |
||||
formattedRows, |
||||
INSERT_BATCH_SIZE, |
||||
); |
||||
|
||||
// check if there are more rows to fetch
|
||||
fetchNextBatch = rows.length > READ_BATCH_SIZE; |
||||
} |
||||
logger.log( |
||||
'Data migrated from Audit Table to Comments Table', |
||||
); |
||||
}; |
||||
|
||||
const down = async (knex: Knex) => { |
||||
await knex.schema.dropTable(MetaTable.COMMENTS); |
||||
}; |
||||
|
||||
export { up, down }; |
Loading…
Reference in new issue