diff --git a/webapp/packages/core/src/app/shared/ConnectionsManager/extensions/IConnectionProvider.ts b/webapp/packages/core/src/app/shared/ConnectionsManager/extensions/IConnectionProvider.ts new file mode 100644 index 0000000000..d470d472de --- /dev/null +++ b/webapp/packages/core/src/app/shared/ConnectionsManager/extensions/IConnectionProvider.ts @@ -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 { + (context: T): string; +} + +export function connectionProvider(provider: IConnectionProvider) { + return createExtension(provider, connectionProviderSymbol); +} + +export function isConnectionProvider(obj: IExtension): obj is IConnectionProvider & IExtension { + return isExtension(obj, connectionProviderSymbol); +} diff --git a/webapp/packages/core/src/app/shared/ConnectionsManager/extensions/IConnectionSetter.ts b/webapp/packages/core/src/app/shared/ConnectionsManager/extensions/IConnectionSetter.ts new file mode 100644 index 0000000000..d21b5ab4e4 --- /dev/null +++ b/webapp/packages/core/src/app/shared/ConnectionsManager/extensions/IConnectionSetter.ts @@ -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 { + (connectionId: string, context: T): Promise | boolean; +} + +export function connectionSetter(setter: IConnectionSetter) { + return createExtension(setter, connectionSetterSymbol); +} + +export function isConnectionSetter(obj: IExtension): obj is IConnectionSetter & IExtension { + return isExtension(obj, connectionSetterSymbol); +} diff --git a/webapp/packages/core/src/app/shared/NodesManager/extensions/IObjectCatalogProvider.ts b/webapp/packages/core/src/app/shared/NodesManager/extensions/IObjectCatalogProvider.ts new file mode 100644 index 0000000000..c4c8155fa4 --- /dev/null +++ b/webapp/packages/core/src/app/shared/NodesManager/extensions/IObjectCatalogProvider.ts @@ -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 { + (context: T): string | undefined; +} + +export function objectCatalogProvider(provider: IObjectCatalogProvider) { + return createExtension(provider, objectCatalogProviderSymbol); +} + +export function isObjectCatalogProvider(obj: IExtension): obj is IObjectCatalogProvider & IExtension { + return isExtension(obj, objectCatalogProviderSymbol); +} diff --git a/webapp/packages/core/src/app/shared/NodesManager/extensions/IObjectCatalogSetter.ts b/webapp/packages/core/src/app/shared/NodesManager/extensions/IObjectCatalogSetter.ts new file mode 100644 index 0000000000..32b9a1aac2 --- /dev/null +++ b/webapp/packages/core/src/app/shared/NodesManager/extensions/IObjectCatalogSetter.ts @@ -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 { + (catalogId: string, context: T): Promise | boolean; +} + +export function objectCatalogSetter(provider: IObjectCatalogSetter) { + return createExtension(provider, objectCatalogSetterSymbol); +} + +export function isObjectCatalogSetter(obj: IExtension): obj is IObjectCatalogSetter & IExtension { + return isExtension(obj, objectCatalogSetterSymbol) as boolean; +} diff --git a/webapp/packages/core/src/app/shared/NodesManager/extensions/IObjectSchemaProvider.ts b/webapp/packages/core/src/app/shared/NodesManager/extensions/IObjectSchemaProvider.ts new file mode 100644 index 0000000000..50d4358fd5 --- /dev/null +++ b/webapp/packages/core/src/app/shared/NodesManager/extensions/IObjectSchemaProvider.ts @@ -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 { + (context: T): string | undefined; +} + +export function objectSchemaProvider(provider: IObjectSchemaProvider) { + return createExtension(provider, objectSchemaProviderSymbol); +} + +export function isObjectSchemaProvider(obj: IExtension): obj is IObjectSchemaProvider & IExtension { + return isExtension(obj, objectSchemaProviderSymbol); +} diff --git a/webapp/packages/core/src/app/shared/NodesManager/extensions/IObjectSchemaSetter.ts b/webapp/packages/core/src/app/shared/NodesManager/extensions/IObjectSchemaSetter.ts new file mode 100644 index 0000000000..37b5efe2ee --- /dev/null +++ b/webapp/packages/core/src/app/shared/NodesManager/extensions/IObjectSchemaSetter.ts @@ -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 { + (schemaId: string, context: T): Promise | boolean; +} + +export function objectSchemaSetter(provider: IObjectSchemaSetter) { + return createExtension(provider, objectSchemaSetterSymbol); +} + +export function isObjectSchemaSetter(obj: IExtension): obj is IObjectSchemaSetter & IExtension { + return isExtension(obj, objectSchemaSetterSymbol) as boolean; +}