import 'reflect-metadata';
import { ConnectionOptions, Connection } from 'typeorm';
import { BaseService } from '../../base';
import { BaseAddon, IDataService } from 'pao-aop';
/**
 * 数据过滤器接口
 * @author huyl
 */
export interface IRelationDataFilter {
    /**
     * 获取运算符
     */
    getLogicSign?(): string;
    /**
     * 获取过滤语句
     * @param paramValues 参数
     */
    getFilterSql?(paramValues: {} | any): string | undefined;
    /**
     * 获取参数
     */
    getParameters?(paramValues: {} | any): Array<any> | undefined;
}
/**
 * 数据过滤器
 * @author huyl
 */
export declare class BaseRelationDataFilter extends BaseAddon implements IRelationDataFilter {
    /**
     * 子过滤器列表
     */
    childFilters: IRelationDataFilter[];
    /**
     * 过滤参数
     */
    parameters?: any[];
    /**
     * 获取过滤语句
     * @param paramValues 参数
     */
    getFilterSql?(paramValues: {} | any): string | undefined;
    /**
     * 获取过滤参数
     * @param paramValues 参数
     */
    getParameters?(paramValues: {} | any): Array<any> | undefined;
    /**
     * 获取运算符
     */
    getLogicSign?(): string;
    /**
     * AND逻辑运算
     * @param filters 表达式
     * @remark 传入的表示式可以是sqlFilter或者baseDataFilter,
     * 如果是baseDataFilter,则baseDataFilter生成表达式会用()闭包
     * 例如(sqlfilter,baseDataFilter)生成结果(sqlFilterSql and ( baseDataFilterSql ) )
     */
    and?(...filters: IRelationDataFilter[]): BaseRelationDataFilter;
    /**
     * OR逻辑运算
     * @param filters 表达式
     * @remark 和and方法一样,只是最后是使用OR的逻辑运算符
     */
    or?(...filters: IRelationDataFilter[]): BaseRelationDataFilter;
    /**
     * 添加筛选类型的过滤条件
     * @param filters 筛选类型的过滤条件
     * @remark 筛选类型:group by/having/limit等
     */
    add?(...filters: IRelationDataFilter[]): BaseRelationDataFilter;
}
/**
 * AND逻辑运算过滤器
 * @author huyl
 */
export declare class AndRelationDataFilter extends BaseRelationDataFilter implements IRelationDataFilter {
    getLogicSign?(): string;
}
/**
 * OR逻辑运算过滤器
 * @author huyl
 */
export declare class OrRelationDataFilter extends BaseRelationDataFilter implements IRelationDataFilter {
    getLogicSign?(): string;
}
/**
 * SQL语句过滤器
 * @author huyl
 */
export declare class SqlRelationDataFilter extends BaseAddon implements IRelationDataFilter {
    fieldKey: string;
    sql: string;
    caption?: string;
    /**
     * SQL语句过滤器
     * @param fieldKey 字段关键字
     * @param sql SQL过滤语句
     * @param caption 标题
     */
    constructor(fieldKey: string, sql: string, caption?: string);
    /**
     * 获取过滤语句
     * @param paramValues 参数
     */
    getFilterSql?(paramValues: {} | any): string | undefined;
    /**
     * 获取参数
     * @param paramValues 参数列表
     */
    getParameters?(paramValues: {} | any): Array<any> | undefined;
}
/**
 * 数据命令
 * @author huyl
 */
export declare class RelationDataCommand extends BaseAddon {
    id?: string;
    name?: string;
    primaryKeyFields?: string[];
    sql?: string;
    /** 表名 */
    tableName?: string;
    /** 是否为多表查询(默认为多表查询) */
    isMultiTableQuery?: boolean;
    /** 数据过滤器 */
    dataFilter?: BaseRelationDataFilter[];
    /** TRUE条件过滤字符串 */
    private trueFilterString?;
    /** 参数 */
    private parameters?;
    /**
     * 数据命令
     * @param id 唯一标识
     * @param name 名称
     * @param primaryKeyFields 主键
     * @param sql SQL语句
     */
    constructor(id?: string, name?: string, primaryKeyFields?: string[], sql?: string);
    /**
     * 获取命令字符串
     * @param paramValues 查询参数
     */
    getCommandText?(paramValues?: {}): string | undefined;
    /**
     * 获取过滤参数
     */
    getParameters?(): any[] | undefined;
}
/**
 * 数据连接对象
 * @author huyl
 */
export declare class DatabaseConnection extends BaseAddon {
    /**
     * 数据库连接配置
     * @description 可以是连接的字符串，或者连接的配置对象
     */
    dbConnection?: ConnectionOptions;
    /** 当前TypeORM的连接对象 */
    private _currentConnection?;
    /** 数据连接对象管理器 */
    private databaseManager;
    /** 连接数据库 */
    connect?(): Promise<Connection>;
}
/**
 * 关系型数据服务
 * @author huyl
 */
export declare class RelationDataService extends BaseService implements IDataService {
    /** 数据连接信息 */
    connection: ConnectionOptions | any;
    /** 命令列表 */
    commandList: RelationDataCommand[];
    /**
     * 获取命令信息
     * @param commandID 命令ID
     */
    getCommandByID?(commandID: string): RelationDataCommand | undefined;
    /**
     * 查询
     * @param params 查询参数
     */
    query(command: string, params?: {}): Promise<any>;
}
//# sourceMappingURL=index.d.ts.map