Files
cloudbeaver/webapp/packages/plugin-data-viewer/src/DatabaseDataModel/DatabaseDataAction.ts
T

33 lines
1.0 KiB
TypeScript

/*
* CloudBeaver - Cloud Database Manager
* Copyright (C) 2020-2021 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 type { IDatabaseDataAction, IDatabaseDataActionClass } from './IDatabaseDataAction';
import type { IDatabaseDataResult } from './IDatabaseDataResult';
import type { IDatabaseDataSource } from './IDatabaseDataSource';
export abstract class DatabaseDataAction<TOptions, TResult extends IDatabaseDataResult>
implements IDatabaseDataAction<TOptions, TResult> {
readonly source: IDatabaseDataSource<TOptions, TResult>;
result: TResult;
constructor(source: IDatabaseDataSource<TOptions, TResult>, result: TResult) {
this.result = result;
this.source = source;
}
updateResult(result: TResult): void {
this.result = result;
}
getAction<T extends IDatabaseDataAction<TOptions, TResult>>(
action: IDatabaseDataActionClass<TOptions, TResult, T>
): T {
return this.source.actions.get(this.result, action);
}
}