db sync fixes

This commit is contained in:
Jan Prochazka 2021-11-14 09:36:14 +01:00
parent 4260497900
commit bb9eacf38e
6 changed files with 30 additions and 3 deletions

View File

@ -54,6 +54,7 @@ module.exports = {
.filter(name => name.endsWith(ext))
.map(name => ({
name: name.slice(0, -ext.length),
label: path.parse(name.slice(0, -ext.length)).base,
type,
}));
}

View File

@ -16,7 +16,7 @@ async function importDbModel(inputDir) {
const text = await fs.readFile(path.join(dir, name), { encoding: 'utf-8' });
files.push({
name,
name: path.parse(name).base,
text,
json: name.endsWith('.yaml') ? yaml.load(text) : null,
});

View File

@ -226,6 +226,7 @@ export class AlterPlan {
_getDependendColumnConstraints(column: ColumnInfo, dependencyDefinition) {
const table = this.db.tables.find(x => x.pureName == column.pureName && x.schemaName == column.schemaName);
if (!table) return [];
const fks = dependencyDefinition?.includes('dependencies')
? table.dependencies.filter(fk => fk.columns.find(col => col.refColumnName == column.columnName))
: [];

View File

@ -178,7 +178,7 @@
<AppObjectCore
{...$$restProps}
{data}
title={data.fileName}
title={data.fileLabel}
icon={ARCHIVE_ICONS[data.fileType]}
menu={createMenu}
on:click={handleClick}

View File

@ -80,6 +80,24 @@ await dbgateApi.deployDb(${JSON.stringify(
newQuery({ initialData: resp.data.sql });
};
const handleCompareWithCurrentDb = () => {
openNewTab(
{
title: 'Compare',
icon: 'img compare',
tabComponent: 'CompareModelTab',
},
{
editor: {
sourceConid: '__model',
sourceDatabase: `archive:${data.name}`,
targetConid: _.get($currentDatabase, 'connection._id'),
targetDatabase: _.get($currentDatabase, 'name'),
},
}
);
};
function createMenu() {
return [
data.name != 'default' && { text: 'Delete', onClick: handleDelete },
@ -89,6 +107,12 @@ await dbgateApi.deployDb(${JSON.stringify(
{ text: 'Generate deploy DB SQL', onClick: handleGenerateDeploySql },
{ text: 'Shell: Deploy DB', onClick: handleGenerateDeployScript },
],
data.name != 'default' &&
_.get($currentDatabase, 'connection._id') && {
onClick: handleCompareWithCurrentDb,
text: `Compare with ${_.get($currentDatabase, 'name')}`,
},
];
}
</script>

View File

@ -3,7 +3,7 @@
jsonl: 'JSON table data',
'table.yaml': 'Tables',
'view.sql': 'Views',
'proce.sql': 'Procedures',
'proc.sql': 'Procedures',
'func.sql': 'Functions',
'trigger.sql': 'Triggers',
'matview.sql': 'Materialized views',
@ -45,6 +45,7 @@
fileName: file.name,
folderName: folder,
fileType: file.type,
fileLabel: file.label,
}))}
groupFunc={data => ARCHIVE_LABELS[data.fileType] || 'Archive'}
module={archiveFileAppObject}