Skip to content

Commit bd96fe2

Browse files
Merge pull request #5 from dantehemerson/migrate-to-v7
Migrate to v7
2 parents 5c94893 + fe6f82c commit bd96fe2

11 files changed

+376
-501
lines changed

package.json

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -20,69 +20,69 @@
2020
"test:e2e": "jest --config ./test/jest-e2e.json"
2121
},
2222
"dependencies": {
23-
"@nestjs/common": "6.11.0",
24-
"@nestjs/core": "6.11.0",
25-
"@nestjs/graphql": "6.4.2",
26-
"@nestjs/jwt": "^6.1.1",
27-
"@nestjs/passport": "^6.1.0",
28-
"@nestjs/platform-fastify": "^6.10.11",
29-
"@nestjs/swagger": "^4.0.9",
30-
"@typegoose/typegoose": "^6.3.2",
31-
"apollo-server-fastify": "^2.9.14",
32-
"automapper-nartc": "^3.0.19",
33-
"bluebird": "3.5.5",
23+
"@nestjs/common": "7.0.9",
24+
"@nestjs/core": "7.0.9",
25+
"@nestjs/graphql": "7.3.4",
26+
"@nestjs/jwt": "^7.0.0",
27+
"@nestjs/passport": "^7.0.0",
28+
"@nestjs/platform-fastify": "^7.0.9",
29+
"@nestjs/swagger": "^4.5.3",
30+
"@typegoose/typegoose": "^7.0.0",
31+
"apollo-server-fastify": "^2.12.0",
32+
"automapper-nartc": "^6.1.3",
33+
"bluebird": "3.7.2",
3434
"bunyan": "^1.8.12",
3535
"bunyan-prettystream": "^0.1.3",
3636
"class-transformer": "0.2.3",
37-
"class-validator": "0.10.0",
37+
"class-validator": "0.12.2",
3838
"dotenv": "^8.2.0",
3939
"faker": "^4.1.0",
40-
"fastify-swagger": "^2.5.0",
41-
"graphql": "14.5.0",
40+
"fastify-swagger": "^2.5.1",
41+
"graphql": "15.0.0",
4242
"graphql-objectid-scalar": "^0.1.3",
43-
"graphql-tools": "4.0.5",
43+
"graphql-tools": "5.0.0",
4444
"graphql-type-json": "^0.3.1",
45-
"helmet": "3.21.2",
45+
"helmet": "3.22.0",
4646
"lodash.get": "^4.4.2",
4747
"lodash.keyby": "^4.6.0",
48-
"mongoose": "5.8.11",
49-
"nestjs-dataloader": "^2.0.0",
50-
"nestjs-typegoose": "^7.1.0",
48+
"mongoose": "5.9.10",
49+
"nestjs-dataloader-dan": "2.0.52-dan",
50+
"nestjs-typegoose": "^7.1.16",
5151
"passport": "^0.4.0",
5252
"passport-google-oauth": "^2.0.0",
5353
"passport-jwt": "^4.0.0",
5454
"passport-local": "^1.0.0",
5555
"reflect-metadata": "0.1.13",
56-
"rimraf": "3.0.0",
57-
"rxjs": "6.5.2",
58-
"slugify": "^1.3.5"
56+
"rimraf": "3.0.2",
57+
"rxjs": "6.5.5",
58+
"slugify": "^1.4.0"
5959
},
6060
"devDependencies": {
61-
"@nestjs/testing": "6.6.5",
62-
"@types/faker": "^4.1.9",
63-
"@types/jest": "24.0.18",
61+
"@nestjs/testing": "7.0.9",
62+
"@types/faker": "^4.1.11",
63+
"@types/jest": "25.2.1",
6464
"@types/lodash.get": "^4.4.6",
6565
"@types/lodash.keyby": "^4.6.6",
66-
"@types/mongoose": "5.5.22",
67-
"@types/node": "12.11.2",
66+
"@types/mongoose": "5.7.14",
67+
"@types/node": "13.13.4",
6868
"@types/passport-google-oauth": "^1.0.41",
6969
"@types/passport-jwt": "^3.0.3",
7070
"@types/passport-local": "^1.0.33",
7171
"@types/supertest": "2.0.8",
72-
"concurrently": "4.1.2",
73-
"jest": "24.9.0",
74-
"nodemon": "1.19.2",
75-
"prettier": "1.18.2",
72+
"concurrently": "5.2.0",
73+
"jest": "25.4.0",
74+
"nodemon": "2.0.3",
75+
"prettier": "2.0.5",
7676
"supertest": "4.0.2",
77-
"ts-jest": "24.0.2",
78-
"ts-node": "8.3.0",
77+
"ts-jest": "25.4.0",
78+
"ts-node": "8.9.1",
7979
"tsconfig-paths": "3.8.0",
80-
"tslint": "5.18.0",
81-
"typescript": "3.5.3",
82-
"wait-on": "3.3.0"
80+
"tslint": "6.1.2",
81+
"typescript": "3.8.3",
82+
"wait-on": "4.0.2"
8383
},
8484
"resolutions": {
85-
"graphql": "14.5.0"
85+
"graphql": "15.0.0"
8686
},
8787
"jest": {
8888
"moduleFileExtensions": [

src/app.module.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { CategoriesModule } from './modules/categories/categories.module'
1515
useClass: GraphqlOptions
1616
}),
1717
AuthModule,
18-
WordsModule,
18+
// WordsModule,
1919
CategoriesModule
2020
]
2121
})

src/graphql.schema.generated.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,18 @@ export class Category {
3434
description?: string;
3535
}
3636

37+
export abstract class IQuery {
38+
abstract categories(): Category[] | Promise<Category[]>;
39+
40+
abstract category(_id: GraphQLObjectId): Category | Promise<Category>;
41+
42+
abstract words(): Word[] | Promise<Word[]>;
43+
44+
abstract word(_id: GraphQLObjectId): Word | Promise<Word>;
45+
46+
abstract randomWords(categoryId?: GraphQLObjectId, limit?: number): Word[] | Promise<Word[]>;
47+
}
48+
3749
export abstract class IMutation {
3850
abstract createCategory(data: CategoryCreateInput): Category | Promise<Category>;
3951

@@ -48,18 +60,6 @@ export abstract class IMutation {
4860
abstract deleteWord(_id: GraphQLObjectId): Word | Promise<Word>;
4961
}
5062

51-
export abstract class IQuery {
52-
abstract categories(): Category[] | Promise<Category[]>;
53-
54-
abstract category(_id: GraphQLObjectId): Category | Promise<Category>;
55-
56-
abstract words(): Word[] | Promise<Word[]>;
57-
58-
abstract word(_id: GraphQLObjectId): Word | Promise<Word>;
59-
60-
abstract randomWords(categoryId?: GraphQLObjectId, limit?: number): Word[] | Promise<Word[]>;
61-
}
62-
6363
export class Word {
6464
_id: GraphQLObjectId;
6565
name: string;

src/modules/auth/auth.module.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import { Module } from '@nestjs/common'
2+
import { JwtModule } from '@nestjs/jwt'
3+
import { PassportModule } from '@nestjs/passport'
4+
import { config } from '../../config'
25
import { AuthController } from './auth.controller'
36
import { AuthService } from './auth.service'
47
import { JwtStrategy } from './strategies/jwt.strategy'
5-
import { PassportModule } from '@nestjs/passport'
6-
import { GoogleStrategy } from './strategies/google.strategy'
78
import { LocalStrategy } from './strategies/local.strategy'
8-
import { JwtModule } from '@nestjs/jwt'
9-
import { config } from '../../config'
109

1110
@Module({
1211
imports: [
@@ -21,6 +20,6 @@ import { config } from '../../config'
2120
})
2221
],
2322
controllers: [AuthController],
24-
providers: [AuthService, LocalStrategy, JwtStrategy, GoogleStrategy]
23+
providers: [AuthService, LocalStrategy, JwtStrategy /* GoogleStrategy */]
2524
})
2625
export class AuthModule {}

src/modules/categories/categories.loader.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as DataLoader from 'dataloader'
22
import { Injectable } from '@nestjs/common'
3-
import { NestDataLoader } from 'nestjs-dataloader'
3+
import { NestDataLoader } from 'nestjs-dataloader-dan'
44
import { CategoriesService } from './categories.service'
55
import { Category } from './categories.model'
66
import { concatMap } from 'rxjs/operators'

src/modules/categories/categories.module.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Module } from '@nestjs/common'
22
import { APP_INTERCEPTOR } from '@nestjs/core'
3-
import { DataLoaderInterceptor } from 'nestjs-dataloader'
3+
import { DataLoaderInterceptor } from 'nestjs-dataloader-dan'
44
import { MongoModule } from '../mongo/mongo.module'
55
import { CategoriesLoader } from './categories.loader'
66
import { Category } from './categories.model'

src/modules/categories/categories.resolver.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,20 @@ import { UpdateCategoryDto } from './dto/updateCategory.dto'
44
import { CreateCategoryDto } from './dto/createCategory.dto'
55
import { CategoriesLoader } from './categories.loader'
66
import * as DataLoader from 'dataloader'
7-
import { Loader } from 'nestjs-dataloader'
7+
import { Loader } from 'nestjs-dataloader-dan'
88
import { Category } from './categories.model'
99
import { from } from 'rxjs'
10-
@Resolver('Category')
10+
import { CategoryGraphQLModel } from './category.graphql-model'
11+
@Resolver(of => CategoryGraphQLModel)
1112
export class CategoriesResolver {
1213
constructor(private readonly categoriesService: CategoriesService) {}
1314

14-
@Query()
15+
@Query(returns => [CategoryGraphQLModel])
1516
categories() {
1617
return this.categoriesService.findAll()
1718
}
1819

19-
@Query()
20+
@Query(() => [Category])
2021
category(@Args('_id') _id, @Loader(CategoriesLoader.name) categoriesLoader: DataLoader<string, Category>) {
2122
return from(categoriesLoader.load(_id))
2223
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { Field, ObjectType, ID } from '@nestjs/graphql'
2+
3+
@ObjectType()
4+
export class CategoryGraphQLModel {
5+
@Field(type => ID)
6+
_id: string
7+
8+
@Field(type => String)
9+
name: string
10+
11+
@Field(type => String, { nullable: true })
12+
color?: string
13+
14+
@Field(type => String, { nullable: true })
15+
description?: string
16+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { Field, ObjectType, ID } from '@nestjs/graphql'
2+
import { CategoryGraphQLModel } from '../categories/category.graphql-model'
3+
4+
@ObjectType()
5+
export class Words {
6+
@Field(type => ID)
7+
_id: string
8+
9+
@Field(type => String)
10+
name: string
11+
12+
@Field(type => [CategoryGraphQLModel])
13+
posts: CategoryGraphQLModel[]
14+
}

src/modules/words/words.resolver.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
1-
import { Args, Mutation, Query, Resolver, ResolveProperty, Parent } from '@nestjs/graphql'
1+
import { Args, Mutation, Query, Resolver, Parent, ResolveField } from '@nestjs/graphql'
22
import { WordsService } from './words.service'
33
import { CreateWord } from './interface/createWord.interface'
44
import { UpdateWord } from './interface/updateWord.interface'
55
import * as DataLoader from 'dataloader'
66
import { Category } from '../categories/categories.model'
77
import { Word } from './words.model'
8-
import { Loader } from 'nestjs-dataloader'
8+
import { Loader } from 'nestjs-dataloader-dan'
99
import { CategoriesLoader } from '../categories/categories.loader'
1010
import { from, Observable } from 'rxjs'
11+
import { WordsGraphQLModel } from './words.graphql-model'
1112

12-
@Resolver('Word')
13+
@Resolver(of => WordsGraphQLModel)
1314
export class WordsResolver {
1415
constructor(private readonly wordsService: WordsService) {}
1516

@@ -43,7 +44,7 @@ export class WordsResolver {
4344
return this.wordsService.deleteById(_id)
4445
}
4546

46-
@ResolveProperty('category', () => Category)
47+
@ResolveField('category', () => Category)
4748
resolveCategory(
4849
@Parent() word: Word,
4950
@Loader(CategoriesLoader.name) categoriesLoader: DataLoader<string, Category>

0 commit comments

Comments
 (0)