Browse Source

fix: exclude other sources tables when fetching meta for ERD

pull/8747/head
Pranav C 3 weeks ago
parent
commit
71d3d68dbf
  1. 22
      packages/nc-gui/components/erd/View.vue

22
packages/nc-gui/components/erd/View.vue

@ -46,13 +46,25 @@ const config = reactive<ERDConfig>({
}) })
const loadMetaOfTablesNotInMetas = async (localTables: TableType[]) => { const loadMetaOfTablesNotInMetas = async (localTables: TableType[]) => {
await Promise.all( const chunkSize = 5
localTables
.filter((table) => !metas.value[table.id!] && table.source_id === props.sourceId) // Function to process a chunk of tables
.map(async (table) => { const processChunk = async (chunk: TableType[]) => {
await Promise.all(
chunk.map(async (table) => {
await getMeta(table.id!) await getMeta(table.id!)
}), }),
) )
}
// filter out tables that are already loaded and are not from the same source
const filteredTables = localTables.filter((t) => !metas.value[t.id!] && t.source_id === props.sourceId)
// Split the tables into chunks and process each chunk sequentially to avoid hitting throttling limits
for (let i = 0; i < filteredTables.length; i += chunkSize) {
const chunk = filteredTables.slice(i, i + chunkSize)
await processChunk(chunk)
}
} }
const populateTables = async () => { const populateTables = async () => {

Loading…
Cancel
Save