Skip to content

Commit

Permalink
Fix additional TS types (#74)
Browse files Browse the repository at this point in the history
  • Loading branch information
kibertoad authored Oct 28, 2020
1 parent 9078f00 commit cf14e84
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 3 deletions.
35 changes: 32 additions & 3 deletions index.d.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,15 @@
import { Constructor, Model, ModelClass, Page, RelationExpression } from 'objection';
import {
ArrayQueryBuilder,
Constructor,
Model,
ModelClass,
NumberQueryBuilder,
Page,
PageQueryBuilder,
QueryBuilder,
RelationExpression,
SingleQueryBuilder,
} from 'objection';

interface FilterFn<M extends Model> {
(propertyRef: PropertyRef<M>, value: string, modelClass: ModelClass<M>): {
Expand Down Expand Up @@ -139,8 +150,26 @@ export class FindQueryBuilder<M extends Model, R = M[]> {
build(
// eslint-disable-next-line
params: Record<string, any>,
builder?: this['SingleQueryBuilderType'] & M['QueryBuilderType']['SingleQueryBuilderType']
): this['SingleQueryBuilderType'] & M['QueryBuilderType']['SingleQueryBuilderType'];
builder?: ArrayQueryBuilder<QueryBuilder<M>>
): ArrayQueryBuilder<QueryBuilder<M>>;

build(
// eslint-disable-next-line
params: Record<string, any>,
builder?: SingleQueryBuilder<QueryBuilder<M>>
): SingleQueryBuilder<QueryBuilder<M>>;

build(
// eslint-disable-next-line
params: Record<string, any>,
builder?: NumberQueryBuilder<QueryBuilder<M>>
): NumberQueryBuilder<QueryBuilder<M>>;

build(
// eslint-disable-next-line
params: Record<string, any>,
builder?: PageQueryBuilder<QueryBuilder<M>>
): PageQueryBuilder<QueryBuilder<M>>;
}

export class PropertyRef<M extends Model> {
Expand Down
20 changes: 20 additions & 0 deletions tests/types/index.test-d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,14 @@ import findQueryDefault from '../../';
import * as findQueryStar from '../../';
import findQueryCjsImport = require('../../');
import Movie from './Movie';
import {
ArrayQueryBuilder,
NumberQueryBuilder,
PageQueryBuilder,
QueryBuilder,
SingleQueryBuilder,
} from 'objection';

const findQueryCjs = require('../../');
const { findQuery: findQueryCjsNamed } = require('../../');

Expand All @@ -22,3 +30,15 @@ findQuery(Movie).specialParameter('eager', 'withRelated').build({
'id:eq': 5,
withRelated: 'parent.[movies, pets]',
});

expectType<PageQueryBuilder<QueryBuilder<Movie>>>(Movie.query().page(1, 2));
findQuery(Movie).build({}, Movie.query().page(1, 2));

expectType<ArrayQueryBuilder<QueryBuilder<Movie>>>(Movie.query().insertAndFetch([]));
findQuery(Movie).build({}, Movie.query().insertAndFetch([]));

expectType<SingleQueryBuilder<QueryBuilder<Movie>>>(Movie.query().findById(1));
findQuery(Movie).build({}, Movie.query().findById(1));

expectType<NumberQueryBuilder<QueryBuilder<Movie>>>(Movie.query().update());
findQuery(Movie).build({}, Movie.query().update());

0 comments on commit cf14e84

Please sign in to comment.