/** * Copyright (c) Facebook, Inc. and its affiliates. * * 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, Value} from 'flipper'; 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 = ( 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 = ( params, ) => this.client.call('getTableInfo', params); }