Skip to content

Commit

Permalink
fix(query-typegoose): add new enhanced type
Browse files Browse the repository at this point in the history
  • Loading branch information
smolinari committed Mar 31, 2023
1 parent 9da118a commit ddb3ebc
Show file tree
Hide file tree
Showing 9 changed files with 30 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { InjectModel, TypegooseModule } from '@m8a/nestjs-typegoose'
import { Test, TestingModule } from '@nestjs/testing'
import { FindRelationOptions, SortDirection } from '@ptc-org/nestjs-query-core'
import { DocumentType, getModelForClass, mongoose } from '@typegoose/typegoose'
import { ReturnModelType } from '@typegoose/typegoose/lib/types'
import { ReturnModelType } from 'packages/query-typegoose/src/typegoose-types.helper'

import { NestjsQueryTypegooseModule } from '../../src'
import { TypegooseQueryService } from '../../src/services'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { InjectModel, TypegooseModule } from '@m8a/nestjs-typegoose'
import { Test, TestingModule } from '@nestjs/testing'
import { FindRelationOptions, SortDirection } from '@ptc-org/nestjs-query-core'
import { DocumentType, getModelForClass, mongoose } from '@typegoose/typegoose'
import { ReturnModelType } from '@typegoose/typegoose/lib/types'
import { ReturnModelType } from 'packages/query-typegoose/src/typegoose-types.helper'

import { NestjsQueryTypegooseModule } from '../../src'
import { TypegooseQueryService } from '../../src/services'
Expand Down
3 changes: 2 additions & 1 deletion packages/query-typegoose/src/providers.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import { getModelToken } from '@m8a/nestjs-typegoose'
import { FactoryProvider } from '@nestjs/common'
import { AssemblerSerializer, getQueryServiceToken } from '@ptc-org/nestjs-query-core'
import { DocumentType, mongoose, ReturnModelType } from '@typegoose/typegoose'
import { DocumentType, mongoose } from '@typegoose/typegoose'
import { Base } from '@typegoose/typegoose/lib/defaultClasses'
import { isClass } from 'is-class'

import { TypegooseQueryService } from './services'
import { TypegooseClass, TypegooseClassWithOptions, TypegooseDiscriminator } from './typegoose-interface.helpers'
import { ReturnModelType } from './typegoose-types.helper'

type ClassOrDiscriminator = TypegooseClassWithOptions | TypegooseDiscriminator
type TypegooseInput = TypegooseClass | ClassOrDiscriminator
Expand Down
3 changes: 2 additions & 1 deletion packages/query-typegoose/src/query/comparison.builder.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import { BadRequestException } from '@nestjs/common'
import { CommonFieldComparisonBetweenType, FilterComparisonOperators } from '@ptc-org/nestjs-query-core'
import { mongoose, ReturnModelType } from '@typegoose/typegoose'
import { mongoose } from '@typegoose/typegoose'
import escapeRegExp from 'lodash.escaperegexp'

import { ReturnModelType } from '../typegoose-types.helper'
import { getSchemaKey } from './helpers'

/**
Expand Down
3 changes: 2 additions & 1 deletion packages/query-typegoose/src/query/filter-query.builder.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { AggregateQuery, Filter, Query, SortDirection, SortField } from '@ptc-org/nestjs-query-core'
import { DocumentType, mongoose, ReturnModelType } from '@typegoose/typegoose'
import { DocumentType, mongoose } from '@typegoose/typegoose'

import { ReturnModelType } from '../typegoose-types.helper'
import { AggregateBuilder, TypegooseGroupAndAggregate } from './aggregate.builder'
import { getSchemaKey } from './helpers'
import { WhereBuilder } from './where.builder'
Expand Down
3 changes: 2 additions & 1 deletion packages/query-typegoose/src/query/where.builder.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { Filter, FilterComparisons, FilterFieldComparison } from '@ptc-org/nestjs-query-core'
import { mongoose, ReturnModelType } from '@typegoose/typegoose'
import { mongoose } from '@typegoose/typegoose'

import { ReturnModelType } from '../typegoose-types.helper'
import { ComparisonBuilder, EntityComparisonField } from './comparison.builder'

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import {
ModifyRelationOptions,
Query
} from '@ptc-org/nestjs-query-core'
import { DocumentType, getClass, getModelWithString, mongoose, ReturnModelType } from '@typegoose/typegoose'
import { DocumentType, getClass, getModelWithString, mongoose } from '@typegoose/typegoose'
import { Base } from '@typegoose/typegoose/lib/defaultClasses'
import { PipelineStage } from 'mongoose'

Expand All @@ -21,6 +21,7 @@ import {
isEmbeddedSchemaTypeOptions,
isSchemaTypeWithReferenceOptions,
isVirtualTypeWithReferenceOptions,
ReturnModelType,
VirtualTypeWithOptions
} from '../typegoose-types.helper'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ import {
UpdateManyResponse,
UpdateOneOptions
} from '@ptc-org/nestjs-query-core'
import { DocumentType, mongoose, ReturnModelType } from '@typegoose/typegoose'
import { DocumentType, mongoose } from '@typegoose/typegoose'
import { Base } from '@typegoose/typegoose/lib/defaultClasses'
import { PipelineStage } from 'mongoose'

import { AggregateBuilder, FilterQueryBuilder } from '../query'
import { UpdateArrayQuery } from '../typegoose-types.helper'
import { ReturnModelType, UpdateArrayQuery } from '../typegoose-types.helper'
import { ReferenceQueryService } from './reference-query.service'

export interface TypegooseQueryServiceOpts {
Expand Down
17 changes: 16 additions & 1 deletion packages/query-typegoose/src/typegoose-types.helper.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { mongoose } from '@typegoose/typegoose'
import { DocumentType, mongoose } from '@typegoose/typegoose'
import { AnyParamConstructor, BeAnObject, BeAnyObject, IObjectWithTypegooseFunction } from '@typegoose/typegoose/lib/types'

export type ReferenceOptions = {
type: mongoose.SchemaType
Expand Down Expand Up @@ -78,3 +79,17 @@ export function isVirtualTypeWithReferenceOptions(virtualType: unknown): virtual
}
return false
}

type CustomModelType<T, QueryHelpers = BeAnObject> = mongoose.Model<
T, // raw doc type
QueryHelpers, // query helpers
IObjectWithTypegooseFunction, // instance methods
BeAnyObject,
DocumentType<T>
>

export type ReturnModelType<U extends AnyParamConstructor<any>, QueryHelpers = BeAnObject> = CustomModelType<
InstanceType<U>,
QueryHelpers
> &
U

0 comments on commit ddb3ebc

Please sign in to comment.