mirror of https://github.com/Fabio286/antares.git
fix: table options not loaded on restored setting tabs at startup
This commit is contained in:
parent
71e2c911ae
commit
622b519cbb
|
@ -48,6 +48,16 @@ export default (connections) => {
|
|||
}
|
||||
});
|
||||
|
||||
ipcMain.handle('get-table-options', async (event, params) => {
|
||||
try {
|
||||
const result = await connections[params.uid].getTableOptions(params);
|
||||
return { status: 'success', response: result };
|
||||
}
|
||||
catch (err) {
|
||||
return { status: 'error', response: err.toString() };
|
||||
}
|
||||
});
|
||||
|
||||
ipcMain.handle('get-table-indexes', async (event, params) => {
|
||||
try {
|
||||
const result = await connections[params.uid].getTableIndexes(params);
|
||||
|
|
|
@ -437,6 +437,43 @@ export class MySQLClient extends AntaresCore {
|
|||
return rows.length ? rows[0].count : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Object} params
|
||||
* @param {String} params.schema
|
||||
* @param {String} params.table
|
||||
* @returns {Object} table options
|
||||
* @memberof MySQLClient
|
||||
*/
|
||||
async getTableOptions ({ schema, table }) {
|
||||
const { rows } = await this.raw(`SHOW TABLE STATUS FROM \`${schema}\` WHERE Name = '${table}'`);
|
||||
|
||||
if (rows.length) {
|
||||
let tableType;
|
||||
switch (rows[0].Comment) {
|
||||
case 'VIEW':
|
||||
tableType = 'view';
|
||||
break;
|
||||
default:
|
||||
tableType = 'table';
|
||||
break;
|
||||
}
|
||||
|
||||
return {
|
||||
name: rows[0].Name,
|
||||
type: tableType,
|
||||
rows: rows[0].Rows,
|
||||
created: rows[0].Create_time,
|
||||
updated: rows[0].Update_time,
|
||||
engine: rows[0].Engine,
|
||||
comment: rows[0].Comment,
|
||||
size: rows[0].Data_length + rows[0].Index_length,
|
||||
autoIncrement: rows[0].Auto_increment,
|
||||
collation: rows[0].Collation
|
||||
};
|
||||
};
|
||||
return {};
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Object} params
|
||||
* @param {String} params.schema
|
||||
|
|
|
@ -306,6 +306,40 @@ export class PostgreSQLClient extends AntaresCore {
|
|||
return rows.length ? rows[0].count : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Object} params
|
||||
* @param {String} params.schema
|
||||
* @param {String} params.table
|
||||
* @returns {Object} table options
|
||||
* @memberof MySQLClient
|
||||
*/
|
||||
async getTableOptions ({ schema, table }) {
|
||||
const { rows } = await this.raw(`
|
||||
SELECT *,
|
||||
pg_table_size(QUOTE_IDENT(t.TABLE_SCHEMA) || '.' || QUOTE_IDENT(t.TABLE_NAME))::bigint AS data_length,
|
||||
pg_relation_size(QUOTE_IDENT(t.TABLE_SCHEMA) || '.' || QUOTE_IDENT(t.TABLE_NAME))::bigint AS index_length,
|
||||
c.reltuples, obj_description(c.oid) AS comment
|
||||
FROM "information_schema"."tables" AS t
|
||||
LEFT JOIN "pg_namespace" n ON t.table_schema = n.nspname
|
||||
LEFT JOIN "pg_class" c ON n.oid = c.relnamespace AND c.relname=t.table_name
|
||||
WHERE t."table_schema" = '${schema}'
|
||||
AND table_name = '${table}'
|
||||
`);
|
||||
|
||||
if (rows.length) {
|
||||
return {
|
||||
name: rows[0].table_name,
|
||||
type: rows[0].table_type === 'VIEW' ? 'view' : 'table',
|
||||
rows: rows[0].reltuples,
|
||||
size: +rows[0].data_length + +rows[0].index_length,
|
||||
collation: rows[0].Collation,
|
||||
comment: rows[0].comment,
|
||||
engine: ''
|
||||
};
|
||||
};
|
||||
return {};
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Object} params
|
||||
* @param {String} params.schema
|
||||
|
|
|
@ -232,6 +232,7 @@ export default {
|
|||
localKeyUsage: [],
|
||||
originalIndexes: [],
|
||||
localIndexes: [],
|
||||
tableOptions: {},
|
||||
localOptions: {},
|
||||
lastTable: null,
|
||||
newFieldsCounter: 0
|
||||
|
@ -249,10 +250,6 @@ export default {
|
|||
tabUid () {
|
||||
return this.$vnode.key;
|
||||
},
|
||||
tableOptions () {
|
||||
const db = this.workspace.structure.find(db => db.name === this.schema);
|
||||
return db && this.table ? db.tables.find(table => table.name === this.table) : {};
|
||||
},
|
||||
defaultEngine () {
|
||||
const engine = this.getDatabaseVariable(this.connection.uid, 'default_storage_engine');
|
||||
return engine ? engine.value : '';
|
||||
|
@ -311,6 +308,20 @@ export default {
|
|||
renameTabs: 'workspaces/renameTabs',
|
||||
changeBreadcrumbs: 'workspaces/changeBreadcrumbs'
|
||||
}),
|
||||
async getTableOptions (params) {
|
||||
const db = this.workspace.structure.find(db => db.name === this.schema);
|
||||
|
||||
if (db && db.tables.length && this.table)
|
||||
this.tableOptions = db.tables.find(table => table.name === this.table);
|
||||
else {
|
||||
const { status, response } = await Tables.getTableOptions(params);
|
||||
|
||||
if (status === 'success')
|
||||
this.tableOptions = response;
|
||||
else
|
||||
this.addNotification({ status: 'error', message: response });
|
||||
}
|
||||
},
|
||||
async getFieldsData () {
|
||||
if (!this.table) return;
|
||||
|
||||
|
@ -318,10 +329,6 @@ export default {
|
|||
this.lastTable = this.table;
|
||||
this.newFieldsCounter = 0;
|
||||
this.isLoading = true;
|
||||
try {
|
||||
this.localOptions = JSON.parse(JSON.stringify(this.tableOptions));
|
||||
}
|
||||
catch (err) {}
|
||||
|
||||
const params = {
|
||||
uid: this.connection.uid,
|
||||
|
@ -329,6 +336,14 @@ export default {
|
|||
table: this.table
|
||||
};
|
||||
|
||||
try {
|
||||
await this.getTableOptions(params);
|
||||
this.localOptions = JSON.parse(JSON.stringify(this.tableOptions));
|
||||
}
|
||||
catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
|
||||
try { // Columns data
|
||||
const { status, response } = await Tables.getTableColumns(params);
|
||||
if (status === 'success') {
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column col-4">
|
||||
<div class="column">
|
||||
<div class="form-group">
|
||||
<label class="form-label">{{ $t('word.comment') }}</label>
|
||||
<input
|
||||
|
|
|
@ -14,6 +14,10 @@ export default class {
|
|||
return ipcRenderer.invoke('get-table-count', params);
|
||||
}
|
||||
|
||||
static getTableOptions (params) {
|
||||
return ipcRenderer.invoke('get-table-options', params);
|
||||
}
|
||||
|
||||
static getTableIndexes (params) {
|
||||
return ipcRenderer.invoke('get-table-indexes', params);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue