sequelize-typescript
Version:
Decorators and some other extras for sequelize (v3 + v4)
76 lines (75 loc) • 3.42 kB
TypeScript
/// <reference types="sequelize" />
import { WhereOptions, LoggingOptions, SearchPathOptions, col, and, or, FindOptionsAttributesArray, literal } from 'sequelize';
import { IScopeIncludeOptions } from "./IScopeIncludeOptions";
import { ModelClassGetter } from "../types/ModelClassGetter";
export interface IScopeFindOptions extends LoggingOptions, SearchPathOptions {
/**
* A hash of attributes to describe your search. See above for examples.
*/
where?: WhereOptions<any> | Array<col | and | or | string> | col | and | or | string;
/**
* A list of the attributes that you want to select. To rename an attribute, you can pass an array, with
* two elements - the first is the name of the attribute in the DB (or some kind of expression such as
* `Sequelize.literal`, `Sequelize.fn` and so on), and the second is the name you want the attribute to
* have in the returned instance
*/
attributes?: FindOptionsAttributesArray | {
include?: FindOptionsAttributesArray;
exclude?: Array<string>;
};
/**
* If true, only non-deleted records will be returned. If false, both deleted and non-deleted records will
* be returned. Only applies if `options.paranoid` is true for the model.
*/
paranoid?: boolean;
/**
* A list of associations to eagerly load using a left join. Supported is either
* `{ include: [ Model1, Model2, ...]}` or `{ include: [{ model: Model1, as: 'Alias' }]}`.
* If your association are set up with an `as` (eg. `X.hasMany(Y, { as: 'Z }`, you need to specify Z in
* the as attribute when eager loading Y).
*/
include?: Array<ModelClassGetter | IScopeIncludeOptions>;
/**
* Specifies an ordering. If a string is provided, it will be escaped. Using an array, you can provide
* several columns / functions to order by. Each element can be further wrapped in a two-element array. The
* first element is the column / function to order by, the second is the direction. For example:
* `order: [['name', 'DESC']]`. In this way the column will be escaped, but the direction will not.
*/
order?: string | col | literal | Array<string | col | number | ModelClassGetter | {
model: ModelClassGetter;
as?: string;
}> | Array<string | col | literal | Array<string | col | number | ModelClassGetter | {
model: ModelClassGetter;
as?: string;
}>>;
/**
* Limit the results
*/
limit?: number;
/**
* Skip the results;
*/
offset?: number;
/**
* Lock the selected rows. Possible options are transaction.LOCK.UPDATE and transaction.LOCK.SHARE.
* Postgres also supports transaction.LOCK.KEY_SHARE, transaction.LOCK.NO_KEY_UPDATE and specific model
* locks with joins. See [transaction.LOCK for an example](transaction#lock)
*/
lock?: string | {
level: string;
of: ModelClassGetter;
};
/**
* Return raw result. See sequelize.query for more information.
*/
raw?: boolean;
/**
* having ?!?
*/
having?: WhereOptions<any>;
/**
* Group by. It is not mentioned in sequelize's JSDoc, but mentioned in docs.
* https://github.com/sequelize/sequelize/blob/master/docs/docs/models-usage.md#user-content-manipulating-the-dataset-with-limit-offset-order-and-group
*/
group?: string | string[] | Object;
}