Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add constructor definition for QueryBuilder class for typescript inheritance #2232

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 46 additions & 44 deletions typings/objection/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,14 @@ declare namespace Objection {
const ForeignKeyViolationError: typeof dbErrors.ForeignKeyViolationError;
const NotNullViolationError: typeof dbErrors.NotNullViolationError;

export interface RawBuilder extends Aliasable {}
export interface RawBuilder extends Aliasable { }

export interface RawFunction extends RawInterface<RawBuilder> {}
export interface RawFunction extends RawInterface<RawBuilder> { }
export interface RawInterface<R> {
(sql: string, ...bindings: any[]): R;
}

export interface ValueBuilder extends Castable {}
export interface ValueBuilder extends Castable { }
export interface ValueFunction {
(
value: PrimitiveValue | PrimitiveValue[] | PrimitiveValueObject | PrimitiveValueObject[]
Expand All @@ -63,7 +63,7 @@ declare namespace Objection {
(expression: string): ReferenceBuilder;
}

export interface FunctionBuilder extends Castable {}
export interface FunctionBuilder extends Castable { }
export interface SqlFunctionShortcut {
(...args: any[]): FunctionBuilder;
}
Expand Down Expand Up @@ -201,12 +201,12 @@ declare namespace Objection {
*/
type PartialModelObject<T extends Model> = {
[K in DataPropertyNames<T>]?: Defined<T[K]> extends Model
? T[K]
: Defined<T[K]> extends Array<infer I>
? I extends Model
? I[]
: Expression<T[K]>
: Expression<T[K]>;
? T[K]
: Defined<T[K]> extends Array<infer I>
? I extends Model
? I[]
: Expression<T[K]>
: Expression<T[K]>;
};

/**
Expand All @@ -223,12 +223,12 @@ declare namespace Objection {
*/
type PartialModelGraph<M, T = M & GraphParameters> = {
[K in DataPropertyNames<T>]?: Defined<T[K]> extends Model
? PartialModelGraph<Defined<T[K]>>
: Defined<T[K]> extends Array<infer I>
? I extends Model
? PartialModelGraph<I>[]
: Expression<T[K]>
: Expression<T[K]>;
? PartialModelGraph<Defined<T[K]>>
: Defined<T[K]> extends Array<infer I>
? I extends Model
? PartialModelGraph<I>[]
: Expression<T[K]>
: Expression<T[K]>;
};

/**
Expand All @@ -237,14 +237,14 @@ declare namespace Objection {
type ModelProps<T extends Model> = Exclude<
{
[K in keyof T]?: Defined<T[K]> extends Model
? never
: Defined<T[K]> extends Array<infer I>
? I extends Model
? never
: K
: T[K] extends Function
? never
: K;
? never
: Defined<T[K]> extends Array<infer I>
? I extends Model
? never
: K
: T[K] extends Function
? never
: K;
}[keyof T],
undefined | 'QueryBuilderType'
>;
Expand All @@ -255,12 +255,12 @@ declare namespace Objection {
type ModelRelations<T extends Model> = Defined<
{
[K in keyof T]?: Defined<T[K]> extends Model
? K
: Defined<T[K]> extends Array<infer I>
? I extends Model
? K
: never
: never;
? K
: Defined<T[K]> extends Array<infer I>
? I extends Model
? K
: never
: never;
}[keyof T]
>;

Expand All @@ -272,8 +272,8 @@ declare namespace Objection {
? SingleQueryBuilder<QueryBuilderType<T>>
: T extends Array<infer I>
? I extends Model
? QueryBuilderType<I>
: never
? QueryBuilderType<I>
: never
: never;

/**
Expand All @@ -285,8 +285,8 @@ declare namespace Objection {
? QueryBuilderType<T>
: T extends Array<infer I>
? I extends Model
? QueryBuilderType<I>
: never
? QueryBuilderType<I>
: never
: never;

/**
Expand Down Expand Up @@ -387,7 +387,7 @@ declare namespace Objection {
(obj: object): QB;
}

interface WhereRawMethod<QB extends AnyQueryBuilder> extends RawInterface<QB> {}
interface WhereRawMethod<QB extends AnyQueryBuilder> extends RawInterface<QB> { }

interface WhereWrappedMethod<QB extends AnyQueryBuilder> {
(cb: CallbackVoid<QB>): QB;
Expand Down Expand Up @@ -537,7 +537,7 @@ declare namespace Objection {
(raw: Raw): QB;
}

interface JoinRawMethod<QB extends AnyQueryBuilder> extends RawInterface<QB> {}
interface JoinRawMethod<QB extends AnyQueryBuilder> extends RawInterface<QB> { }

interface IncrementDecrementMethod<QB extends AnyQueryBuilder> {
(column: string, amount?: number): QB;
Expand Down Expand Up @@ -570,7 +570,7 @@ declare namespace Objection {
(columns: ColumnRefOrOrderByDescriptor[]): QB;
}

interface OrderByRawMethod<QB extends AnyQueryBuilder> extends RawInterface<QB> {}
interface OrderByRawMethod<QB extends AnyQueryBuilder> extends RawInterface<QB> { }

interface FirstMethod {
<QB extends AnyQueryBuilder>(this: QB): QB extends ArrayQueryBuilder<QB>
Expand Down Expand Up @@ -779,6 +779,8 @@ declare namespace Objection {

export class QueryBuilder<M extends Model, R = M[]> implements CatchablePromiseLike<R> {
static forClass: ForClassMethod;
new(...args: any[]): this;
constructor(...args: any[]): this;

select: SelectMethod<this>;
columns: SelectMethod<this>;
Expand Down Expand Up @@ -1148,7 +1150,7 @@ declare namespace Objection {
beforeInsert?: RelationMappingHook<M>;
}

export interface RelationType extends Constructor<Relation> {}
export interface RelationType extends Constructor<Relation> { }

export interface Relation {
name: string;
Expand Down Expand Up @@ -1308,10 +1310,10 @@ declare namespace Objection {
}

export interface Constructor<T> {
new (): T;
new(): T;
}

export interface ModelConstructor<M extends Model> extends Constructor<M> {}
export interface ModelConstructor<M extends Model> extends Constructor<M> { }

export interface ModelClass<M extends Model> extends ModelConstructor<M> {
QueryBuilder: typeof QueryBuilder;
Expand Down Expand Up @@ -1634,7 +1636,7 @@ declare namespace Objection {
MC2 extends AnyModelConstructor,
MC3 extends AnyModelConstructor,
ReturnValue
>(
>(
modelClass1: MC1,
modelClass2: MC2,
modelClass3: MC3,
Expand All @@ -1652,7 +1654,7 @@ declare namespace Objection {
MC3 extends AnyModelConstructor,
MC4 extends AnyModelConstructor,
ReturnValue
>(
>(
modelClass1: MC1,
modelClass2: MC2,
modelClass3: MC3,
Expand All @@ -1673,7 +1675,7 @@ declare namespace Objection {
MC4 extends AnyModelConstructor,
MC5 extends AnyModelConstructor,
ReturnValue
>(
>(
modelClass1: MC1,
modelClass2: MC2,
modelClass3: MC3,
Expand Down Expand Up @@ -1733,7 +1735,7 @@ declare namespace Objection {

// Workaround for infinite type recursion
// https://github.com/Microsoft/TypeScript/issues/3496#issuecomment-128553540
export interface JSONSchemaArray extends Array<JSONSchemaType> {}
export interface JSONSchemaArray extends Array<JSONSchemaType> { }

/**
* Meta schema
Expand Down