/** * 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 {PluginClient, Value} from 'flipper'; type ClientCall = (arg: 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 = () => 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); }