/* * CloudBeaver - Cloud Database Manager * Copyright (C) 2020-2022 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 { IConnectionExecutionContext } from '@cloudbeaver/core-connections'; import type { IServiceInjector } from '@cloudbeaver/core-di'; import type { ResultDataFormat } from '@cloudbeaver/core-sdk'; import type { IDatabaseDataAction, IDatabaseDataActionClass, IDatabaseDataActionInterface } from './IDatabaseDataAction'; import type { IDatabaseDataActions } from './IDatabaseDataActions'; import type { IDatabaseDataResult } from './IDatabaseDataResult'; export interface IRequestInfo { readonly requestDuration: number; readonly requestMessage: string; readonly requestFilter: string; readonly source: string | null; } export enum DatabaseDataAccessMode { Default, Readonly } export interface IDatabaseDataSource { readonly access: DatabaseDataAccessMode; readonly dataFormat: ResultDataFormat; readonly supportedDataFormats: ResultDataFormat[]; readonly constraintsAvailable: boolean; readonly actions: IDatabaseDataActions; readonly results: TResult[]; readonly offset: number; readonly count: number; readonly prevOptions: Readonly | null; readonly options: TOptions | null; readonly requestInfo: IRequestInfo; readonly error: Error | null; readonly executionContext: IConnectionExecutionContext | null; readonly canCancel: boolean; readonly serviceInjector: IServiceInjector; isReadonly: () => boolean; isLoading: () => boolean; isDisabled: (resultIndex: number) => boolean; hasResult: (resultIndex: number) => boolean; tryGetAction: (>( resultIndex: number, action: IDatabaseDataActionClass ) => T | undefined) & (>( result: TResult, action: IDatabaseDataActionClass ) => T | undefined); getAction: (>( resultIndex: number, action: IDatabaseDataActionClass ) => T) & (>( result: TResult, action: IDatabaseDataActionClass ) => T); getActionImplementation: (>( resultIndex: number, action: IDatabaseDataActionInterface ) => T | undefined) & (>( result: TResult, action: IDatabaseDataActionInterface ) => T | undefined); getResult: (index: number) => TResult | null; setResults: (results: TResult[]) => this; setAccess: (access: DatabaseDataAccessMode) => this; setSlice: (offset: number, count: number) => this; setOptions: (options: TOptions) => this; setDataFormat: (dataFormat: ResultDataFormat) => this; setSupportedDataFormats: (dataFormats: ResultDataFormat[]) => this; setExecutionContext: (context: IConnectionExecutionContext | null) => this; retry: () => Promise; runTask: (task: () => Promise) => Promise; requestData: () => Promise | void; refreshData: () => Promise | void; saveData: () => Promise | void; cancel: () => Promise | void; clearError: () => void; resetData: () => void; dispose: () => Promise; }