@bxjs/base
Version:
156 lines (149 loc) • 4 kB
text/typescript
/**
* Used to specify what entity relations should be loaded.
*
* Example:
* const options: JoinOptions = {
* alias: "photo",
* leftJoin: {
* author: "photo.author",
* categories: "categories",
* user: "categories.user",
* profile: "user.profile"
* },
* innerJoin: {
* author: "photo.author",
* categories: "categories",
* user: "categories.user",
* profile: "user.profile"
* },
* leftJoinAndSelect: {
* author: "photo.author",
* categories: "categories",
* user: "categories.user",
* profile: "user.profile"
* },
* innerJoinAndSelect: {
* author: "photo.author",
* categories: "categories",
* user: "categories.user",
* profile: "user.profile"
* }
* };
*/
export interface JoinOptions {
/**
* Alias of the main entity.
*/
alias: string;
/**
* Array of columns to LEFT JOIN.
*/
leftJoinAndSelect?: {
[]: string;
};
/**
* Array of columns to INNER JOIN.
*/
innerJoinAndSelect?: {
[]: string;
};
/**
* Array of columns to LEFT JOIN.
*/
leftJoin?: {
[]: string;
};
/**
* Array of columns to INNER JOIN.
*/
innerJoin?: {
[]: string;
};
}
/**
* Interface of the simple literal object with any string keys.
*/
export interface ObjectLiteral {
[]: any;
}
/**
* Used for find operations.
*/
export declare type FindConditions<T> = {
[]?: T[P] extends never ? FindConditions<T[P]>
: FindConditions<T[P]>;
};
// import { ObjectLiteral } from "../common/ObjectLiteral";
// import { FindConditions } from "./FindConditions";
/**
* Defines a special criteria to find specific entity.
*/
export interface FindOneOptions<Entity = any> {
/**
* Specifies what columns should be retrieved.
*/
select?: any[];
/**
* Simple condition that should be applied to match entities.
*/
where?: FindConditions<Entity>[] | FindConditions<Entity> | ObjectLiteral | string;
/**
* Indicates what relations of entity should be loaded (simplified left join form).
*/
relations?: any[];
// 暂不支持join,有待进一步检查实现方案。
// /**
// * Specifies what relations should be loaded.
// */
join?: JoinOptions;
/**
* Order, in which entities should be ordered.
*/
order?: {
[]?: 'ASC' | 'DESC' | 1 | -1;
};
/**
* Enables or disables query result caching.
*/
cache?: boolean | number | {
id: any;
milliseconds: number;
};
/**
* Enables or disables query result caching.
*/
lock?: {
mode: 'optimistic';
version: number;
// version: number | Date;
} | {
mode: 'pessimistic_read' | 'pessimistic_write';
// mode: 'pessimistic_read' | 'pessimistic_write' | 'dirty_read';
};
// /**
// * If sets to true then loads all relation ids of the entity and maps them into relation values (not relation objects).
// * If array of strings is given then loads only relation ids of the given properties.
// */
// loadRelationIds?: boolean | {
// relations?: string[];
// disableMixedMap?: boolean;
// };
// /**
// * Indicates if eager relations should be loaded or not.
// * By default they are loaded when find methods are used.
// */
// loadEagerRelations?: boolean;
}
/**
* Defines a special criteria to find specific entities.
*/
export interface FindManyOptions<Entity = any> extends FindOneOptions<Entity> {
/**
* Offset (paginated) where from entities should be taken.
*/
skip?: number;
/**
* Limit (paginated) - max number of entities should be taken.
*/
take?: number;
}