-
Notifications
You must be signed in to change notification settings - Fork 504
Custom Plugin
dbeaver-devops edited this page May 29, 2025
·
4 revisions
This guide explains how to create a custom plugin for CloudBeaver. It walks you through the process of adding a simple button to the application's top bar.
Follow these steps to create a custom plugin that adds a button to the top bar and logs Hello, World! to the console.
- Inside
/webapp/packages, create a folder with your desired name, e.g.,plugin-hello-world.
- Copy the following files from any existing package into your plugin folder:
.gitignorepackage.jsontsconfig.json
- Open
package.jsonand update thenamefield to your plugin's name,@cloudbeaver/plugin-hello-world. - Remove the
dependenciesanddevDependenciessections.
- Remove the
referencessection fromtsconfig.json.
- Inside your plugin folder, create a
srcfolder. - Add two files in
src:index.tsmanifest.ts
- Export the manifest from
index.ts:export * from './manifest.js';
- Create a service to add the button.
- It should:
- Be an injectable class.
- Extend the
Bootstrapclass.
- Add a
registermethod and implement the button-adding logic.
Example service:
import { Bootstrap, injectable } from '@cloudbeaver/core-di';
import { ActionService, MenuService } from '@cloudbeaver/core-view';
import { MENU_APP_ACTIONS } from '@cloudbeaver/plugin-top-app-bar';
import { ACTION_HELLO_WORLD } from './ACTION_HELLO_WORLD.js';
@injectable()
export class HelloWorldService extends Bootstrap {
constructor(
private readonly actionService: ActionService,
private readonly menuService: MenuService,
) {
super();
}
override register(): void {
this.menuService.addCreator({
menus: [MENU_APP_ACTIONS],
getItems: (context, items) => [...items, ACTION_HELLO_WORLD],
});
this.actionService.addHandler({
id: 'hello-world-handler',
actions: [ACTION_HELLO_WORLD],
handler: (context, action) => {
switch (action) {
case ACTION_HELLO_WORLD: {
console.log('Hello, World!');
break;
}
}
},
});
}
}Create the ACTION_HELLO_WORLD file:
import { createAction } from '@cloudbeaver/core-view';
export const ACTION_HELLO_WORLD = createAction('hello-world', {
label: 'Hello, world!',
});Register your service in manifest.ts:
import type { PluginManifest } from '@cloudbeaver/core-di';
export const helloWorldPlugin: PluginManifest = {
info: {
name: 'Hello World Plugin',
},
providers: [() => import('./HelloWorldService.js').then(m => m.HelloWorldService)],
};Run the following command from /webapp and choose the name of your plugin:
yarn add-pluginAlternatively, if you're using VSCode, run the "Add Custom Plugin" workspace command.
In /webapp, run:
yarn run update-ts-references
yarn
yarn run update-ts-referencesYour button should now appear in the top bar and log Hello, World! to the console when clicked.
- Getting started
- Create connection
- Connection network options
- Supported databases
-
Drivers management
- Database authentication methods
- Database navigator
- Properties editor
- Data editor
- SQL editor
-
Entity relation diagrams
- Cloud services
-
AI Smart assistance
- Data transfer
- General user guide
- Administration
- Server configuration
-
Server security and access configuration
- Authentication methods
- Access management
- Proxy configuration
-
Secret management
- Logs
-
Query manager
- Workspace location
- Command line parameters
-
Session manager
- Deployment options
- CloudBeaver Editions
- FAQ
- Development