Skip to content

Commit e43eba9

Browse files
authored
Merge pull request #12298 from hasezoey/apply12125ToConnection
[types] Apply #12125 to Connection
2 parents 40fa081 + 3bce106 commit e43eba9

File tree

2 files changed

+41
-2
lines changed

2 files changed

+41
-2
lines changed

test/types/connection.test.ts

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { createConnection, Schema, Collection, Connection, ConnectionSyncIndexesResult, Model, connection } from 'mongoose';
1+
import { createConnection, Schema, Collection, Connection, ConnectionSyncIndexesResult, Model, connection, HydratedDocument, Query } from 'mongoose';
22
import * as mongodb from 'mongodb';
33
import { expectAssignable, expectError, expectType } from 'tsd';
44
import { AutoTypedSchemaType, autoTypedSchema } from './schema.test';
@@ -142,3 +142,42 @@ export function autoTypedModelConnection() {
142142
})();
143143
return AutoTypedModel;
144144
}
145+
146+
function schemaInstanceMethodsAndQueryHelpersOnConnection() {
147+
type UserModelQuery = Query<any, HydratedDocument<User>, UserQueryHelpers> & UserQueryHelpers;
148+
interface UserQueryHelpers {
149+
byName(this: UserModelQuery, name: string): this
150+
}
151+
interface User {
152+
name: string;
153+
}
154+
interface UserInstanceMethods {
155+
doSomething(this: HydratedDocument<User>): string;
156+
}
157+
interface UserStaticMethods {
158+
findByName(name: string): Promise<HydratedDocument<User>>;
159+
}
160+
type UserModel = Model<User, UserQueryHelpers, UserInstanceMethods> & UserStaticMethods;
161+
162+
const userSchema = new Schema<User, UserModel, UserInstanceMethods, UserQueryHelpers, any, UserStaticMethods>({
163+
name: String
164+
}, {
165+
statics: {
166+
findByName(name: string) {
167+
return connection.model('User').findOne({ name }).orFail();
168+
}
169+
},
170+
methods: {
171+
doSomething() {
172+
return 'test';
173+
}
174+
},
175+
query: {
176+
byName(this: UserModelQuery, name: string) {
177+
return this.where({ name });
178+
}
179+
}
180+
});
181+
182+
const TestModel = connection.model<User, UserModel, UserQueryHelpers>('User', userSchema);
183+
}

types/connection.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ declare module 'mongoose' {
150150
): Model<InferSchemaType<TSchema>, ObtainSchemaGeneric<TSchema, 'TQueryHelpers'>, ObtainSchemaGeneric<TSchema, 'TInstanceMethods'>, {}, TSchema> & ObtainSchemaGeneric<TSchema, 'TStaticMethods'>;
151151
model<T, U, TQueryHelpers = {}>(
152152
name: string,
153-
schema?: Schema<T, U, any, TQueryHelpers, any, any>,
153+
schema?: Schema<T, any, any, TQueryHelpers, any, any>,
154154
collection?: string,
155155
options?: CompileModelOptions
156156
): U;

0 commit comments

Comments
 (0)