Skip to content

Commit

Permalink
Merge pull request #12298 from hasezoey/apply12125ToConnection
Browse files Browse the repository at this point in the history
[types] Apply #12125 to Connection
  • Loading branch information
vkarpov15 committed Aug 21, 2022
2 parents 40fa081 + 3bce106 commit e43eba9
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 2 deletions.
41 changes: 40 additions & 1 deletion test/types/connection.test.ts
@@ -1,4 +1,4 @@
import { createConnection, Schema, Collection, Connection, ConnectionSyncIndexesResult, Model, connection } from 'mongoose';
import { createConnection, Schema, Collection, Connection, ConnectionSyncIndexesResult, Model, connection, HydratedDocument, Query } from 'mongoose';
import * as mongodb from 'mongodb';
import { expectAssignable, expectError, expectType } from 'tsd';
import { AutoTypedSchemaType, autoTypedSchema } from './schema.test';
Expand Down Expand Up @@ -142,3 +142,42 @@ export function autoTypedModelConnection() {
})();
return AutoTypedModel;
}

function schemaInstanceMethodsAndQueryHelpersOnConnection() {
type UserModelQuery = Query<any, HydratedDocument<User>, UserQueryHelpers> & UserQueryHelpers;
interface UserQueryHelpers {
byName(this: UserModelQuery, name: string): this
}
interface User {
name: string;
}
interface UserInstanceMethods {
doSomething(this: HydratedDocument<User>): string;
}
interface UserStaticMethods {
findByName(name: string): Promise<HydratedDocument<User>>;
}
type UserModel = Model<User, UserQueryHelpers, UserInstanceMethods> & UserStaticMethods;

const userSchema = new Schema<User, UserModel, UserInstanceMethods, UserQueryHelpers, any, UserStaticMethods>({
name: String
}, {
statics: {
findByName(name: string) {
return connection.model('User').findOne({ name }).orFail();
}
},
methods: {
doSomething() {
return 'test';
}
},
query: {
byName(this: UserModelQuery, name: string) {
return this.where({ name });
}
}
});

const TestModel = connection.model<User, UserModel, UserQueryHelpers>('User', userSchema);
}
2 changes: 1 addition & 1 deletion types/connection.d.ts
Expand Up @@ -150,7 +150,7 @@ declare module 'mongoose' {
): Model<InferSchemaType<TSchema>, ObtainSchemaGeneric<TSchema, 'TQueryHelpers'>, ObtainSchemaGeneric<TSchema, 'TInstanceMethods'>, {}, TSchema> & ObtainSchemaGeneric<TSchema, 'TStaticMethods'>;
model<T, U, TQueryHelpers = {}>(
name: string,
schema?: Schema<T, U, any, TQueryHelpers, any, any>,
schema?: Schema<T, any, any, TQueryHelpers, any, any>,
collection?: string,
options?: CompileModelOptions
): U;
Expand Down

0 comments on commit e43eba9

Please sign in to comment.