mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
feat(core): extensions
This commit is contained in:
+23
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* cloudbeaver - Cloud Database Manager
|
||||
* Copyright (C) 2020 DBeaver Corp and others
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0.
|
||||
* you may not use this file except in compliance with the License.
|
||||
*/
|
||||
|
||||
import { createExtension, isExtension, IExtension } from '../../../../extensions';
|
||||
|
||||
const connectionProviderSymbol = Symbol('@extension/ConnectionProvider');
|
||||
|
||||
export interface IConnectionProvider<T = never> {
|
||||
(context: T): string;
|
||||
}
|
||||
|
||||
export function connectionProvider<T>(provider: IConnectionProvider<T>) {
|
||||
return createExtension<T>(provider, connectionProviderSymbol);
|
||||
}
|
||||
|
||||
export function isConnectionProvider<T>(obj: IExtension<T>): obj is IConnectionProvider<T> & IExtension<T> {
|
||||
return isExtension(obj, connectionProviderSymbol);
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* cloudbeaver - Cloud Database Manager
|
||||
* Copyright (C) 2020 DBeaver Corp and others
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0.
|
||||
* you may not use this file except in compliance with the License.
|
||||
*/
|
||||
|
||||
import { createExtension, isExtension, IExtension } from '../../../../extensions';
|
||||
|
||||
const connectionSetterSymbol = Symbol('@extension/ConnectionSetter');
|
||||
|
||||
export interface IConnectionSetter<T = never> {
|
||||
(connectionId: string, context: T): Promise<boolean> | boolean;
|
||||
}
|
||||
|
||||
export function connectionSetter<T>(setter: IConnectionSetter<T>) {
|
||||
return createExtension<T>(setter, connectionSetterSymbol);
|
||||
}
|
||||
|
||||
export function isConnectionSetter<T>(obj: IExtension<T>): obj is IConnectionSetter<T> & IExtension<T> {
|
||||
return isExtension(obj, connectionSetterSymbol);
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* cloudbeaver - Cloud Database Manager
|
||||
* Copyright (C) 2020 DBeaver Corp and others
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0.
|
||||
* you may not use this file except in compliance with the License.
|
||||
*/
|
||||
|
||||
import { createExtension, isExtension, IExtension } from '../../../../extensions';
|
||||
|
||||
const objectCatalogProviderSymbol = Symbol('@extension/ObjectCatalogProvider');
|
||||
|
||||
export interface IObjectCatalogProvider<T = never> {
|
||||
(context: T): string | undefined;
|
||||
}
|
||||
|
||||
export function objectCatalogProvider<T>(provider: IObjectCatalogProvider<T>) {
|
||||
return createExtension<T>(provider, objectCatalogProviderSymbol);
|
||||
}
|
||||
|
||||
export function isObjectCatalogProvider<T>(obj: IExtension<T>): obj is IObjectCatalogProvider<T> & IExtension<T> {
|
||||
return isExtension(obj, objectCatalogProviderSymbol);
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* cloudbeaver - Cloud Database Manager
|
||||
* Copyright (C) 2020 DBeaver Corp and others
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0.
|
||||
* you may not use this file except in compliance with the License.
|
||||
*/
|
||||
|
||||
import { createExtension, isExtension, IExtension } from '../../../../extensions';
|
||||
|
||||
const objectCatalogSetterSymbol = Symbol('@extension/ObjectCatalogSetter');
|
||||
|
||||
export interface IObjectCatalogSetter<T = never> {
|
||||
(catalogId: string, context: T): Promise<boolean> | boolean;
|
||||
}
|
||||
|
||||
export function objectCatalogSetter<T>(provider: IObjectCatalogSetter<T>) {
|
||||
return createExtension<T>(provider, objectCatalogSetterSymbol);
|
||||
}
|
||||
|
||||
export function isObjectCatalogSetter<T>(obj: IExtension<T>): obj is IObjectCatalogSetter<T> & IExtension<T> {
|
||||
return isExtension(obj, objectCatalogSetterSymbol) as boolean;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* cloudbeaver - Cloud Database Manager
|
||||
* Copyright (C) 2020 DBeaver Corp and others
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0.
|
||||
* you may not use this file except in compliance with the License.
|
||||
*/
|
||||
|
||||
import { createExtension, isExtension, IExtension } from '../../../../extensions';
|
||||
|
||||
const objectSchemaProviderSymbol = Symbol('@extension/ObjectSchemaProvider');
|
||||
|
||||
export interface IObjectSchemaProvider<T = never> {
|
||||
(context: T): string | undefined;
|
||||
}
|
||||
|
||||
export function objectSchemaProvider<T>(provider: IObjectSchemaProvider<T>) {
|
||||
return createExtension<T>(provider, objectSchemaProviderSymbol);
|
||||
}
|
||||
|
||||
export function isObjectSchemaProvider<T>(obj: IExtension<T>): obj is IObjectSchemaProvider<T> & IExtension<T> {
|
||||
return isExtension(obj, objectSchemaProviderSymbol);
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* cloudbeaver - Cloud Database Manager
|
||||
* Copyright (C) 2020 DBeaver Corp and others
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0.
|
||||
* you may not use this file except in compliance with the License.
|
||||
*/
|
||||
|
||||
import { createExtension, isExtension, IExtension } from '../../../../extensions';
|
||||
|
||||
const objectSchemaSetterSymbol = Symbol('@extension/ObjectSchemaSetter');
|
||||
|
||||
export interface IObjectSchemaSetter<T = never> {
|
||||
(schemaId: string, context: T): Promise<boolean> | boolean;
|
||||
}
|
||||
|
||||
export function objectSchemaSetter<T>(provider: IObjectSchemaSetter<T>) {
|
||||
return createExtension<T>(provider, objectSchemaSetterSymbol);
|
||||
}
|
||||
|
||||
export function isObjectSchemaSetter<T>(obj: IExtension<T>): obj is IObjectSchemaSetter<T> & IExtension<T> {
|
||||
return isExtension(obj, objectSchemaSetterSymbol) as boolean;
|
||||
}
|
||||
Reference in New Issue
Block a user