refactor to use overloads on type WithPaginationModel

This commit is contained in:
pilagod
2018-08-25 09:28:55 +08:00
parent 805e31077b
commit 563b1b804b

View File

@@ -38,20 +38,12 @@ declare namespace SequelizeCursorPagination {
primaryKeyField?: string; // [default: 'id']
}
type WithPaginationModel<MethodName extends string, Model, ModelInst, ModelAttrs> = Model & (
{
[key in MethodName]: (options?: PaginateRawOptions<ModelAttrs>) => {
results: ModelAttrs[]
cursors: Cursors
}
} &
{
[key in MethodName]: (options?: PaginateInstOptions<ModelAttrs>) => {
results: ModelInst[]
cursors: Cursors
}
type WithPaginationModel<MethodName extends string, Model, ModelInst, ModelAttrs> = Model & {
[key in MethodName]: {
(options?: PaginateRawOptions<ModelAttrs>): { results: ModelAttrs[], cursors: Cursors }
(options?: PaginateInstOptions<ModelAttrs>): { results: ModelInst[], cursors: Cursors }
}
);
};
function withPagination<MethodName extends string = 'paginate'>(options?: WithPaginationOptions<MethodName>): (
<Model extends Sequelize.Model<ModelInst, ModelAttrs>, ModelInst, ModelAttrs>(model: Model) => WithPaginationModel<MethodName, Model, ModelInst, ModelAttrs>