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>

View File

@ -60,6 +60,15 @@ const driver = {
title: 'Microsoft SQL Server',
defaultPort: 1433,
defaultAuthTypeName: 'tedious',
getNewObjectTemplates() {
return [
{ label: 'New view', sql: 'CREATE VIEW myview\nAS\nSELECT * FROM table1' },
{ label: 'New procedure', sql: 'CREATE PROCEDURE myproc (@arg1 INT)\nAS\nBEGIN\n SELECT * FROM table1\nEND' },
{ label: 'New function', sql: 'CREATE FUNCTION myfunc (@arg1 INT) RETURNS INT\nAS\nBEGIN\n RETURN 1;\nEND' },
{ label: 'New table valued function', sql: 'CREATE FUNCTION myfunc (@arg1 INT) RETURNS TABLE \nAS\nRETURN SELECT * FROM table1' },
];
},
};
module.exports = driver;