/** * Copyright 2018-present Facebook. * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * @format */ import type {PluginClient} from '../../plugin'; import type {Value} from '../../ui/components/table/TypeBasedValueRenderer'; type ClientCall = Params => Promise; type DatabaseListRequest = {}; type DatabaseListResponse = Array<{ id: number, name: string, tables: Array, }>; type QueryTableRequest = { databaseId: number, table: string, order?: string, reverse: boolean, start: number, count: number, }; type QueryTableResponse = { columns: Array, values: Array>, start: number, count: number, total: number, }; type GetTableStructureRequest = { databaseId: number, table: string, }; type GetTableStructureResponse = { structureColumns: Array, structureValues: Array>, indexesColumns: Array, indexesValues: Array>, definition: string, }; type ExecuteSqlRequest = { databaseId: number, value: string, }; type ExecuteSqlResponse = { type: string, columns: Array, values: Array>, insertedId: number, affectedCount: number, }; type GetTableInfoRequest = { databaseId: number, table: string, }; type GetTableInfoResponse = { definition: string, }; export class DatabaseClient { client: PluginClient; constructor(pluginClient: PluginClient) { this.client = pluginClient; } getDatabases: ClientCall< DatabaseListRequest, DatabaseListResponse, > = params => this.client.call('databaseList', {}); getTableData: ClientCall = params => this.client.call('getTableData', params); getTableStructure: ClientCall< GetTableStructureRequest, GetTableStructureResponse, > = params => this.client.call('getTableStructure', params); getExecution: ClientCall = params => this.client.call('execute', params); getTableInfo: ClientCall< GetTableInfoRequest, GetTableInfoResponse, > = params => this.client.call('getTableInfo', params); }