import { IServiceVersion, IExistsRes, CreateIndex, DropIndex, IndexInfo, TableInfo, Pager, IResponseInfo, CollectionDispension } from '../interfaces/'; import { Environment } from '../environment'; import { IDescribePGUserMigrationOptions, IDescribePGUserMigrationResult, IDescribeTaskResultOptions, IDescribeTaskResultResult, IListAllPGUserMigrationsOptions, IListPGUserMigrationsOptions, IListPGUserMigrationsResult, IPreviewPGUserMigrationsOptions, IPreviewPGUserMigrationsResult, IPushPGUserMigrationsOptions, IPushPGUserMigrationsResult, IRepairPGUserMigrationHistoryOptions } from './type'; interface IDatabaseConfig { Tag: string; } interface IIndexiesInfo { CreateIndexes?: Array; DropIndexes?: Array; } interface ITableInfo extends IResponseInfo { Indexes?: Array; IndexNum?: number; } interface IMgoQueryInfo { MgoLimit?: number; MgoOffset?: number; } /** 待执行命令参数 */ interface IMgoCommandParam { /** 表名 */ TableName: string; /** 操作类型:UPDATE / QUERY / INSERT / DELETE / COMMAND */ CommandType: string; /** 待执行命令(JSON 字符串) */ Command: string; } /** MongoDB 连接器配置 */ interface IMongoConnector { /** 连接器实例 ID */ InstanceId?: string; /** MongoDB 数据库名 */ DatabaseName?: string; } /** RunCommands 请求参数 */ interface IRunCommandsOptions { /** 待执行命令列表 */ MgoCommands: IMgoCommandParam[]; /** 实例 ID,如 tnt-xxxx。不传则自动使用当前环境的数据库实例 ID */ Tag?: string; /** 环境 ID。不传则自动使用当前环境 ID */ EnvId?: string; /** Mongo 连接器实例信息 */ MongoConnector?: IMongoConnector; } /** RunCommands 返回结果 */ interface IRunCommandsResult extends IResponseInfo { /** 返回结果,每个元素是一个 JSON 字符串 */ Data: string[]; } /** ExecutePGSql 请求参数 */ interface IExecutePGSqlOptions { /** 要执行的 SQL 语句 */ Sql: string; /** 指定 role 执行 SQL(可选) */ Role?: string; /** 云开发环境 ID(可选,不传则自动使用当前环境 ID) */ EnvId?: string; } /** ExecutePGSql 返回结果 */ interface IExecutePGSqlResult extends IResponseInfo { /** 影响行数 */ AffectedRows: number; /** * 字段名列表 * 注意:此字段可能返回 null,表示取不到有效值 */ Columns: string[] | null; /** * 数据行。每一行数据都是一个 JSON 串, * 将 JSON 进行反序列化将得到每列的值(值可能是 null 或字符串) * 注意:此字段可能返回 null,表示取不到有效值 */ Rows: string[] | null; /** SQL 执行耗时(单位:毫秒) */ ExecutionTimeMs: number; } interface ICollectionInfo extends IResponseInfo { Collections: Array; Pager: Pager; } interface ICollectionExistInfo extends IResponseInfo { IsCreated: boolean; ExistsResult: IExistsRes; } interface IDistributionInfo extends IResponseInfo { Collections: CollectionDispension; Count: number; Total: number; } interface IDatabaseMigrateQueryInfo extends IResponseInfo { Status: string; RecordSuccess: number; RecordFail: number; ErrorMsg: string; FileUrl: string; } interface IDatabaseImportAndExportInfo extends IResponseInfo { JobId: number; } /** 回档表格名称映射信息 */ interface IModifyTableNamesInfo { /** 原表名 */ OldTableName: string; /** 新表名 */ NewTableName: string; } /** 回档任务信息 */ interface IRestoreTask { /** 恢复任务ID */ TaskId?: string; /** 任务状态 */ Status?: string; /** 任务创建时间 */ Time?: string; /** 环境ID */ EnvId?: string; /** 恢复类型 */ Type?: string; } /** 任意时间回档范围 */ interface IRestoreTableTimeRange { [key: string]: any; } /** 获取可回档表格返回结果 */ interface IDescribeRestoreTablesResult extends IResponseInfo { /** 可回档表格列表 */ Tables: string[]; } /** 获取回档任务返回结果 */ interface IDescribeRestoreTaskResult extends IResponseInfo { /** 回档任务列表 */ Tasks: IRestoreTask[]; } /** 获取可回档时间返回结果 */ interface IDescribeRestoreTimeResult extends IResponseInfo { /** 可回档时间列表 */ RestoreTimes: string[]; /** 任意时间回档列表 */ RestoreTimeRanges: IRestoreTableTimeRange[]; } /** 实例表格回档返回结果 */ interface IRestoreTCBTablesResult extends IResponseInfo { /** 流程ID */ FlowId: number; } export declare class DatabaseService { static tcbServiceVersion: IServiceVersion; static flexdbServiceVersion: IServiceVersion; private environment; private envId; private dbOpService; private collOpService; private DEFAULT_MGO_OFFSET; private DEFAULT_MGO_LIMIT; constructor(environment: Environment); getCurrEnvironment(): Environment; getDatabaseConfig(): IDatabaseConfig; getMongoConnector(): IMongoConnector; checkCollectionExists(collectionName: string): Promise; createCollection(collectionName: string): Promise; deleteCollection(collectionName: string): Promise; updateCollection(collectionName: string, indexiesInfo: IIndexiesInfo): Promise; describeCollection(collectionName: string): Promise; listCollections(options?: IMgoQueryInfo): Promise; createCollectionIfNotExists(collectionName: string): Promise; checkIndexExists(collectionName: string, indexName: string): Promise; distribution(): Promise; migrateStatus(jobId: number): Promise; import(collectionName: string, file: any, options: any): Promise; export(collectionName: string, file: any, options: any): Promise; /** * 获取可回档表格 * @param time 回档时间,格式 YYYY-MM-DD HH:MM:SS * @param filters 过滤器(可选) * @param instanceId 实例ID(可选,不传则自动使用当前环境的数据库实例 ID) * @returns 可回档表格列表 */ describeRestoreTables(time: string, filters?: string[], instanceId?: string): Promise; /** * 获取回档任务 * @param instanceId 实例ID(可选,不传则自动使用当前环境的数据库实例 ID) * @returns 回档任务列表 */ describeRestoreTask(instanceId?: string): Promise; /** * 获取可回档时间 * @param instanceId 实例ID(可选,不传则自动使用当前环境的数据库实例 ID) * @returns 可回档时间列表及任意时间回档列表 */ describeRestoreTime(instanceId?: string): Promise; /** * 实例表格回档 * @param time 回档时间,格式 YYYY-MM-DD HH:MM:SS * @param modifyTableNamesInfo 回档表格信息(原表名 → 新表名映射) * @param instanceId 实例ID(可选,不传则自动使用当前环境的数据库实例 ID) * @returns 流程ID */ restoreTables(time: string, modifyTableNamesInfo: IModifyTableNamesInfo[], instanceId?: string): Promise; /** * 执行文档型数据库命令 * @param options 命令参数(命令列表、可选的 EnvId/MongoConnector) * @returns 执行结果,Data 为 JSON 字符串数组 */ runCommands(options: IRunCommandsOptions): Promise; /** * 在 PostgreSQL 数据库上执行 SQL 语句 * * @param options 执行参数 * @param options.Sql 要执行的 SQL 语句 * @param options.Role 指定 role 执行 SQL(可选) * @param options.EnvId 环境 ID(可选,不传则自动使用当前环境 ID) * @returns 执行结果,包含影响行数、字段列表、数据行及执行耗时 * * @example * // 创建表 * const res = await database.executePGSql({ * Sql: 'CREATE TABLE users (id SERIAL PRIMARY KEY, name TEXT NOT NULL)' * }) * * @example * // 查询数据 * const res = await database.executePGSql({ * Sql: "SELECT * FROM users WHERE id = 1" * }) * console.log(res.Columns) // ['id', 'name'] * console.log(res.Rows) // ['["1","Alice"]'] */ executePGSql(options: IExecutePGSqlOptions): Promise; /** * 预览 PG 用户 migrations 的远端执行计划(不实际执行 SQL) * @param options 预览参数 * @returns 预览结果(Pending、Applied、Conflicts、Executable) */ previewPGUserMigrations(options: IPreviewPGUserMigrationsOptions): Promise; /** * 批量应用 PG 用户 migrations * @param options 批量 migration 参数 * @returns 任务信息(TaskId、RequestId) */ pushPGUserMigrations(options: IPushPGUserMigrationsOptions): Promise; /** * 修复 PG 用户 migration history,仅维护 user_schema_migrations 记录,不执行 SQL * @param options 修复参数 * @returns RequestId */ repairPGUserMigrationHistory(options: IRepairPGUserMigrationHistoryOptions): Promise; /** * 查询目标环境已应用的用户 migration 列表 * @param options 查询参数(EnvId 可选、Limit、Offset) * @returns 已应用 migration 列表、总数量、最新版本号 */ listPGUserMigrations(options?: IListPGUserMigrationsOptions): Promise; /** * 查询目标环境全部已应用的用户 migration 列表 * @param options 查询参数(EnvId 可选、PageSize) * @returns 已应用 migration 列表、总数量、最新版本号 */ listAllPGUserMigrations(options?: IListAllPGUserMigrationsOptions): Promise; /** * 查询目标环境指定 migration 详情 * @param options 查询参数(EnvId 可选、MigrationVersion 必填) * @returns migration 详情(Version、Name、Query) */ describePGUserMigration(options: IDescribePGUserMigrationOptions): Promise; /** * 查询任务结果 * @param options 查询参数(EnvId 可选、TaskId 必填) * @returns 任务状态详情(TaskType、Status、Phase、Reason 等) */ describeTaskResult(options: IDescribeTaskResultOptions): Promise; private getDefaultDatabaseInstanceId; } export {};