mirror of
https://github.com/apache/superset.git
synced 2024-09-12 00:29:39 -04:00
fix(sqllab): dedupe table_schemas in active_tab (#23514)
This commit is contained in:
parent
1ced7cdbbb
commit
b52efe0599
@ -113,7 +113,7 @@ export default function getInitialState({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const tabHistory = activeTab ? [activeTab.id.toString()] : [];
|
const tabHistory = activeTab ? [activeTab.id.toString()] : [];
|
||||||
const tables = [];
|
let tables = {};
|
||||||
if (activeTab) {
|
if (activeTab) {
|
||||||
activeTab.table_schemas
|
activeTab.table_schemas
|
||||||
.filter(tableSchema => tableSchema.description !== null)
|
.filter(tableSchema => tableSchema.description !== null)
|
||||||
@ -146,7 +146,10 @@ export default function getInitialState({
|
|||||||
partitions,
|
partitions,
|
||||||
metadata,
|
metadata,
|
||||||
};
|
};
|
||||||
tables.push(table);
|
tables = {
|
||||||
|
...tables,
|
||||||
|
[table.id]: table,
|
||||||
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,8 +186,15 @@ export default function getInitialState({
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
sqlLab.tables.forEach(table =>
|
tables = sqlLab.tables.reduce(
|
||||||
tables.push({ ...table, inLocalStorage: true }),
|
(merged, table) => ({
|
||||||
|
...merged,
|
||||||
|
[table.id]: {
|
||||||
|
...tables[table.id],
|
||||||
|
...table,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
tables,
|
||||||
);
|
);
|
||||||
Object.values(sqlLab.queries).forEach(query => {
|
Object.values(sqlLab.queries).forEach(query => {
|
||||||
queries[query.id] = { ...query, inLocalStorage: true };
|
queries[query.id] = { ...query, inLocalStorage: true };
|
||||||
@ -202,7 +212,7 @@ export default function getInitialState({
|
|||||||
queries,
|
queries,
|
||||||
queryEditors: Object.values(queryEditors),
|
queryEditors: Object.values(queryEditors),
|
||||||
tabHistory: dedupeTabHistory(tabHistory),
|
tabHistory: dedupeTabHistory(tabHistory),
|
||||||
tables,
|
tables: Object.values(tables),
|
||||||
queriesLastUpdate: Date.now(),
|
queriesLastUpdate: Date.now(),
|
||||||
user,
|
user,
|
||||||
unsavedQueryEditor,
|
unsavedQueryEditor,
|
||||||
|
@ -68,4 +68,58 @@ describe('getInitialState', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('dedupe tables schema', () => {
|
||||||
|
afterEach(() => {
|
||||||
|
localStorage.clear();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should dedupe the table schema', () => {
|
||||||
|
localStorage.setItem(
|
||||||
|
'redux',
|
||||||
|
JSON.stringify({
|
||||||
|
sqlLab: {
|
||||||
|
tables: [
|
||||||
|
{ id: 1, name: 'test1' },
|
||||||
|
{ id: 6, name: 'test6' },
|
||||||
|
],
|
||||||
|
queryEditors: [{ id: 1, title: 'editor1' }],
|
||||||
|
queries: {},
|
||||||
|
tabHistory: [],
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
const initializedTables = getInitialState({
|
||||||
|
...apiData,
|
||||||
|
active_tab: {
|
||||||
|
id: 1,
|
||||||
|
table_schemas: [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
table: 'table1',
|
||||||
|
tab_state_id: 1,
|
||||||
|
description: {
|
||||||
|
columns: [
|
||||||
|
{ name: 'id', type: 'INT' },
|
||||||
|
{ name: 'column2', type: 'STRING' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
table: 'table2',
|
||||||
|
tab_state_id: 1,
|
||||||
|
description: {
|
||||||
|
columns: [
|
||||||
|
{ name: 'id', type: 'INT' },
|
||||||
|
{ name: 'column2', type: 'STRING' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}).sqlLab.tables;
|
||||||
|
expect(initializedTables.map(({ id }) => id)).toEqual([1, 2, 6]);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user