diff --git a/packages/types/engines.d.ts b/packages/types/engines.d.ts
index e4282af0a..69115d199 100644
--- a/packages/types/engines.d.ts
+++ b/packages/types/engines.d.ts
@@ -42,13 +42,22 @@ export interface NewObjectTemplate {
sql: string;
}
+export interface SupportedDbKeyType {
+ name: string;
+ label: string;
+ dbKeyFields: { name: string }[];
+ addMethod: string;
+ keyColumn?: string;
+ showItemList?: boolean;
+}
+
export interface EngineDriver {
engine: string;
title: string;
defaultPort?: number;
databaseEngineTypes: string[];
readOnlySessions: boolean;
- supportedKeyTypes: { name: string; label: string }[];
+ supportedKeyTypes: SupportedDbKeyType[];
supportsDatabaseUrl?: boolean;
isElectronOnly?: boolean;
showConnectionField?: (field: string, values: any) => boolean;
diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts
index 46d1ff008..bc7484191 100644
--- a/packages/web/src/commands/stdCommands.ts
+++ b/packages/web/src/commands/stdCommands.ts
@@ -238,6 +238,16 @@ registerCommand({
conid: connection._id,
database,
driver,
+ onConfirm: async item => {
+ const type = driver.supportedKeyTypes.find(x => x.name == item.type);
+
+ await apiCall('database-connections/call-method', {
+ conid: connection._id,
+ database,
+ method: type.addMethod,
+ args: [item.keyName, ...type.dbKeyFields.map(fld => item[fld.name])],
+ });
+ },
});
},
});
diff --git a/packages/web/src/modals/AddDbKeyModal.svelte b/packages/web/src/modals/AddDbKeyModal.svelte
index 78453ad5d..aeff778c5 100644
--- a/packages/web/src/modals/AddDbKeyModal.svelte
+++ b/packages/web/src/modals/AddDbKeyModal.svelte
@@ -1,9 +1,11 @@
@@ -26,16 +29,29 @@