Skip to content

Commit

Permalink
Add new helpes to inferschematype.d.ts file
Browse files Browse the repository at this point in the history
  • Loading branch information
ts-benchmark committed Aug 3, 2022
1 parent 8b42562 commit 2c50cdf
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 4 deletions.
17 changes: 14 additions & 3 deletions types/inferschematype.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,24 @@ declare module 'mongoose' {
*/
type ResolveSchemaOptions<T> = Omit<MergeType<DefaultSchemaOptions, T>, 'statics' | 'methods' | 'query' | 'virtuals'>;

type ApplySchemaOptions<T, O = DefaultSchemaOptions> = FlatRecord<Resolve_timestamps<T, O>>;
type ApplySchemaOptions<T, O = DefaultSchemaOptions, P extends 'paths' | 'virtuals' = 'paths'> = FlatRecord<(P extends 'paths'
? ResolveTimestamps<T, O>
: ResolveId<T, O>
)>;
}


type Resolve_timestamps<T, O> = O extends { timestamps: false }
type ResolveTimestamps<T, O> = O extends { timestamps: false }
? T
: T extends { timestamps: any } ? T : MergeType<T, { createdAt: Date ;updatedAt: Date }>;
: T extends { timestamps: any } ? T : MergeType<T, { createdAt: Date; updatedAt: Date }>;

type ResolveId<T, O> = O extends { id: false }
? T
: T extends { id: any } ? T : MergeType<T, { id: string }>;

type Resolve_id<T, O> = T extends { _id: any }
? T
: O extends { _id: false } ? T : MergeType<T, { _id: Types.ObjectId }>;

/**
* @summary Checks if a document path is required or optional.
Expand Down
2 changes: 1 addition & 1 deletion types/schemaoptions.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ declare module 'mongoose' {
interface DefaultSchemaOptions {
typeKey: 'type';
id: true;
_id: '_id';
_id: true;
timestamps: false;
versionKey: '__v'
}
Expand Down

0 comments on commit 2c50cdf

Please sign in to comment.