diff --git a/server/bundles/io.cloudbeaver.server/schema/service.core.graphqls b/server/bundles/io.cloudbeaver.server/schema/service.core.graphqls index cd50318ad2..72f12ddc98 100644 --- a/server/bundles/io.cloudbeaver.server/schema/service.core.graphqls +++ b/server/bundles/io.cloudbeaver.server/schema/service.core.graphqls @@ -211,14 +211,18 @@ type DatabaseAuthModel { } type DriverInfo { + # Driver unique full ID. It is `providerId + "." + driverId`. + # It is recommended to use providerId and driverId separately. id: ID! name: String description: String icon: String iconBig: String - # Driver provider ID - providerId: ID + # Driver ID. It is unique within provider + driverId: ID! + # Driver provider ID. It is globally unique + providerId: ID! # Driver Java class name driverClassName: String defaultHost: String @@ -272,6 +276,7 @@ type DriverInfo { configurationTypes: [DriverConfigurationType]! + driverInstalled: Boolean! driverLibraries: [DriverLibraryInfo!]! } diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebDatabaseDriverInfo.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebDatabaseDriverInfo.java index c1bf020243..6fbd1d5c20 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebDatabaseDriverInfo.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/model/WebDatabaseDriverInfo.java @@ -86,6 +86,11 @@ public String getIconBig() { return WebServiceUtils.makeIconId(driver.getIconBig()); } + @Property + public String getDriverId() { + return driver.getId(); + } + @Property public String getProviderId() { return driver.getProviderId(); @@ -295,6 +300,11 @@ public WebDriverLibraryInfo[] getDriverLibraries() { .toArray(WebDriverLibraryInfo[]::new); } + @Property + public boolean isDriverInstalled() { + return !driver.needsExternalDependencies(webSession.getProgressMonitor()); + } + @Property public boolean getUseCustomPage() { return !ArrayUtils.isEmpty(driver.getMainPropertyDescriptors());