# 元数据

# 导入

通过如下方式导入元数据api

import metadata from "svr-api/metadata";

# 方法

/**
 * 元数据相关API
 */


import { File } from "./fs";

/**返回系统所有的元数据项目 */
export function getAllProjects(): Array<MetaProjectInfo>;

/**
 * 创建新的元数据项目
 */
export function createProject(args: { name: string, desc?: string }): void;

/**删除元数据项目 */
export function deleteProject(name: string): void;

/**
 * 返回指定的元数据文件。
 * 
 * @param idOrPath 元数据路径或者id,若是路径,可以是如下形式:
 *  1. 完整的绝对路径,如`/ProjectName/data/path/to/yourfile.tbl`
 *  2. 相对路径,相对于当前执行的脚本文件,如 `yourfile.tbl`、`../folder/yourfile.tbl`
 * 	3. 资源id
 * @param throwIfNotExist 不存在时是否抛出异常,默认为false。
 * @returns 返回文件或文件夹信息,不存在时返回`null` 。
 */
export function getFile(idOrPath: string, throwIfNotExist?: boolean): MetaFileInfo;

/**
 * 返回指定的元数据文件夹。
 * 
 * @param idOrPath 元数据路径或者id,若是路径,可以是如下形式:
 *  1. 完整的绝对路径,如`/ProjectName/data/path/to/yourfile.tbl`
 *  2. 相对路径,相对于当前执行的脚本文件,如 `yourfile.tbl`、`../folder/yourfile.tbl`
 * 	3. 资源id
 * @param throwIfNotExist 不存在时是否抛出异常,默认为false。
 * @returns 返回文件或文件夹信息,不存在时(也包括存在文件但不是文件夹)返回`null`。
 */
export function getFolder(idOrPath: string, throwIfNotExist?: boolean): MetaFileInfo;

/**
 * 读取一个json文件,并返回json对象。
 * 
 * @param path 元数据路径,可以是如下形式:
 *  1. 完整的绝对路径,如`/ProjectName/data/path/to/yourfile.tbl`
 *  2. 相对路径,相对于当前执行的脚本文件,如 `yourfile.tbl`、`../folder/yourfile.tbl`
 * 	3. 资源id
 * @param throwIfNotExist 不存在时是否抛出异常,默认为false。
 * @returns 返回文件的json信息,不存在时返回`null`。
 */
export function getJSON(path: string, throwIfNotExist?: boolean): any;

/**
 * 读取一个模型文件,并返回`DwTableInfo`对象。
 * 
 * @param path 元数据路径,可以是如下形式:
 *  1. 完整的绝对路径,如`/ProjectName/data/path/to/yourfile.tbl`
 *  2. 相对路径,相对于当前执行的脚本文件,如 `yourfile.tbl`、`../folder/yourfile.tbl`
 * 	3. 资源id
 * @param throwIfNotExist 不存在时是否抛出异常,默认为false。
 * @returns 返回模型表的信息,不存在时返回`null`。
 */
export function getDwTable(path: string, throwIfNotExist?: boolean): DwTableInfo;

/**
 * 读取一个文件,并返回文件内容字符串。
 * 
 * @param path 元数据路径,可以是如下形式:
 *  1. 完整的绝对路径,如`/ProjectName/data/path/to/yourfile.tbl`
 *  2. 相对路径,相对于当前执行的脚本文件,如 `yourfile.tbl`、`../folder/yourfile.tbl`
 * 	3. 资源id
 * @param throwIfNotExist 不存在时是否抛出异常,默认为false。
 * @returns 以字符串形式返回文件内容,不存在时返回`null`。
 */
export function getString(path: string): string;

/**
 * 读取一个文件,并返回XML文档。
 * 
 * @param path 元数据路径,可以是如下形式:
 *  1. 完整的绝对路径,如`/ProjectName/data/path/to/yourfile.tbl`
 *  2. 相对路径,相对于当前执行的脚本文件,如 `yourfile.tbl`、`../folder/yourfile.tbl`
 * 	3. 资源id
 * @param throwIfNotExist 不存在时是否抛出异常,默认为false。
 * @returns 以XML文档对象形式返回文件内容,不存在时返回`null`。
 */
export function getXML(path: string): XMLDocument;

/**
 * 读取一个文件的内容,并返回对应的对象,支持如下对象:
 * 1. tbl
 * 2. dash
 * 2. json
 * 3. xml
 * 4. 其它文件返回字符串
 * @param path 元数据路径,可以是如下形式:
 *  1. 完整的绝对路径,如`/ProjectName/data/path/to/yourfile.tbl`
 *  2. 相对路径,相对于当前执行的脚本文件,如 `yourfile.tbl`、`../folder/yourfile.tbl`
 * 	3. 资源id
 * @param throwIfNotExist 不存在时是否抛出异常,默认为false。
 * @returns 根据文件的类型返回对应的对象,不存在时返回`null`。
 */
export function getObject(path: string): any;

/**
 * 从物理表导入模型
 * @returns 模型表的信息。path 模型表的路径,dbTableName 模型表对应的物理表
 */
export function importDWModelFromDbTables(args: {
	projectName: string;
	tables: Array<{
		/**
		 * 来源数据表所在的数据源
		 */
		datasource: string,
		/**
		 * 来源数据表所在的schema
		 */
		schema: string,
		/**
		 * 来源数据表的表名
		 */
		dbTable: string,
		/**
		 * 导入后的模型的名称
		 */
		name?: string,
		/**
		 * 导入后模型的描述信息
		 */
		desc?: string
	}>;
	schema?: string;
	/**目标元数据目录 */
	targetFolder: string;
	/** 
	 * readonly 实时连接(只读模式,用于实时数据分析)
	 * readwrite 实时连接(读写模式,系统可能会更新数据或者表结构)
	 * extract 提取数据(只读模式,将业务系统数据提取到指定数据源,默认为分析主数据库)
	 **/
	connectionType: 'readonly' | 'readwrite' | 'extract';
	schedule?: string;
}): Array<{ path: string, dbTableName: string }>;

/**
 * 查找满足条件的文件。
 * 
 * @example
 * searchFiles({parentDir:'/TestCase/ana/folder1'}); //列出目录`/TestCase/ana/folder1`下的文件列表(不返回文件夹,不递归到子文件夹)
 * 
 * @param args 
 */
export function searchFiles(args: {
    /**父文件夹路径,完整的绝对路径,或相对于当前脚本的相对路径*/
    parentDir: string,
    /**是否递归查找,默认`false` */
    recur?: boolean,
    /**类型匹配,如:`"tbl"`、`["tbl","xml"]`,默认匹配所有类型 */
    type?: string | string[],
    /**是否返回文件夹对象,默认`false` */
    includeFolder?: boolean,
    /**包含哪些文件,如`*.tbl`、`['name1.tbl', 'name2.tbl']`,默认匹配所有文件 */
    includeFiles?: string | string[],
    /**排除那些文件,如`*.tbl`、`['name1.tbl', 'name2.tbl']`,默认不排除任何文件 */
    excludeFiles?: string | string[],
    /**匹配的文件内容,可以传递字符串或正则表达式,表示只返回包含指定内容的文件,默认不进行内容匹配查找 */
    searchContent?: string | RegExp,
}): Array<MetaFileInfo>;

/**
 * 创建文件,并保存文件内容。如果文件已存在,那么抛出异常,父文件夹不存在时将自动创建父文件夹。
 * 
 * @param pathOrFileInfo 可以是:
 * 	1. 文件路径,完整的绝对路径,或相对于当前脚本文件的相对路径
 * 	2. `MetaFile`文件信息,可以传递`name`、`desc`、`icon`、`type`、`parentDir`、`path`、`content`属性。
 * @param content 当`pathOrFileInfo`传递路径时,可以通过此参数传递文件内容,可传递json对象或字符串对象,不传递时写入空内容。
 * @returns 返回新建的文件的文件信息,创建失败时跑出异常。
 */
export function createFile(pathOrFileInfo: string | MetaFileModifyInfo, content?: any): MetaFileInfo;

/**
 * 写入文件内容,文件不存在时将自动创建,存在时将改写文件内容,父文件夹不存在时将自动创建父文件夹。
 * 
 * @param path 文件路径,完整的绝对路径,或相对于当前脚本的相对路径
 * @param content 文件内容,可传递json对象,或字符串对象,不传递时写入空内容
 */
export function writeFile(path: string, content?: any): void;

/**
 * 创建文件夹,如果文件夹已存在,那么什么也不做。
 *
 * @param pathOrFileInfo 可以是:
 * 	1. 文件路径,完整的绝对路径,或相对于当前脚本文件的相对路径
 * 	2. `MetaFile`文件信息,可以传递`name`、`desc`、`icon`、`type`、`parentDir`、`path`属性。
 */
export function mkdirs(pathOrFileInfo: string | MetaFileModifyInfo): void;

/**
 * 更新文件信息,如果文件不存在,那么抛出异常。
 * 
 * @param resIdOrpath 要更新的文件夹路径或者元数据id,完整的绝对路径,或相对于当前脚本的相对路径
 * @param info 更新信息,可以传递`name`、`desc`、`icon`、`type`、`parentDir`、`path`、`content`属性。
 */
export function modifyFile(resIdOrpath: string, info: MetaFileModifyInfo): void;

/**
 * 删除元数据文件,如果文件不存在则什么都不做。
 * @param path 要删除文件的path或path数组
 */
export function removeFiles(path: string | string[]): void;

/**
 * 移动或重命名文件。如果文件不存在或目标文件已存在,那么抛出异常
 * 
 * @param path 要移动的文件路径,完整的绝对路径,或相对于当前脚本的相对路径
 * @param targetPath 要移动到的目标路径,完整的绝对路径,或相对于当前脚本的相对路径
 */
export function move(path: string, targetPath: string): void;

/**
 * 删除文件到回收站。如果文件不存在,那么抛出异常
 * 
 * @param path 要删除的文件路径,完整的绝对路径,或相对于当前脚本的相对路径
 */
export function remove(path: string): void;

/**
 * 刷新指定的文件夹或文件的所有缓存对象。
 * 
 * @param path 要刷新的文件路径,完整的绝对路径,或相对于当前脚本的相对路径
 */
export function refresh(path: string): void;

/**
 * 运算一个activeDocx文件,并返回结果文件。
 */
export function runDocx(args: {
	path: string;
	/**如果不传递,默认生成docx */
	export?: "pdf";
	/**传递`false`表示忽略缓存,重新刷新文档(但本次刷新的结果还是会缓存起来供下次使用),默认系统会使用缓存尽量快速的显示文档 */
	cache?: boolean;
	/**传递给docx的计算参数 */
	params?: { [name: string]: string | number }
}): File;

/**
 * 导出报表、仪表板等对象的运行结果。
 * 
 * @param args 
 * @return 返回导出的文件
 */
export function exportContent(args: {
	/**导出到指定的文件夹,如果不传递,那么将自动产生一个临时文件 */
	targetDir?: string,
	/**导出设置 */
	exportParams?: {
		//压缩,可选参数,当resources有多个文件时总是压缩,只有一个文件时默认是false 不压缩
		compress?: boolean,
		/**压缩文件名。默认为`第一个资源名称_多文件。 */
		fileName?: string;
		/**导出资源信息 */
		resources?: ExportContentObjectArgs[];
	}
}): File;

/**
 * 获取元数据影响关系,会通过元数据缓存机制获取
 * @param resIdOrpath
 * @param needLevel 是否查询下级
 */
export function getImpacts(resIdOrpath: string, needLevel: boolean): FileReferenceInfo;
是否有帮助?
0条评论
评论