new object templates (generic+mssql)

This commit is contained in:
Jan Prochazka
2021-12-09 11:16:59 +01:00
parent 83544170f3
commit ad2c293f6f
4 changed files with 37 additions and 2 deletions

View File

@@ -40,4 +40,10 @@ export const driverBase = {
await this.query(pool, sqlItem, { discardResult: true });
}
},
getNewObjectTemplates() {
if (!this.dialect?.nosql) {
return [{ label: 'New view', sql: 'CREATE VIEW myview\nAS\nSELECT * FROM table1' }];
}
return [];
},
};

View File

@@ -37,6 +37,11 @@ export interface ReadCollectionOptions {
limit?: number;
}
export interface NewObjectTemplate {
label: string;
sql: string;
}
export interface EngineDriver {
engine: string;
title: string;
@@ -81,6 +86,7 @@ export interface EngineDriver {
createDatabase(pool: any, name: string): Promise;
getQuerySplitterOptions(usage: 'stream' | 'script'): any;
script(pool: any, sql: string): Promise;
getNewObjectTemplates(): NewObjectTemplate[];
analyserClass?: any;
dumperClass?: any;

View File

@@ -32,6 +32,7 @@
import CloseSearchButton from '../elements/CloseSearchButton.svelte';
import { findEngineDriver } from 'dbgate-tools';
import { extensions } from '../stores';
import newQuery from '../query/newQuery';
export let conid;
export let database;
@@ -64,11 +65,24 @@
};
function createAddMenu() {
const res = [];
if (driver?.dialect?.nosql) {
return [{ label: 'New collection', command: 'new.collection' }];
res.push({ command: 'new.collection' });
} else {
return [{ label: 'New table', command: 'new.table' }];
res.push({ command: 'new.table' });
}
if (driver)
res.push(
...driver.getNewObjectTemplates().map(tpl => ({
text: tpl.label,
onClick: () => {
newQuery({
initialData: tpl.sql,
});
},
}))
);
return res;
}
</script>