Skip to content

Commit b9e8844

Browse files
committed
Update
Signed-off-by: Arda TANRIKULU <[email protected]>
1 parent b7008ca commit b9e8844

19 files changed

+555
-484
lines changed

Diff for: codegen.yml

+8-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@ require:
66
generates:
77
./src/generated-models.ts:
88
plugins:
9+
- add: /* tslint:ignore */
910
- typescript-common
10-
- typescript-server
1111
- typescript-mongodb
12+
- typescript-server
13+
- typescript-resolvers
14+
config:
15+
contextType: "@graphql-modules/core#ModuleContext"
16+
mappers:
17+
Chat: ChatDbObject
18+
Message: MessageDbObject

Diff for: package.json

+17-16
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"author": "Niccolò Belli <[email protected]>",
88
"license": "MIT",
99
"scripts": {
10-
"generate": "gql-gen --config ./codegen.yml",
10+
"generate": "gql-gen",
1111
"generate:watch": "nodemon --exec yarn generate -e graphql",
1212
"start:server": "ts-node -r tsconfig-paths/register src/index.ts",
1313
"start:server:watch": "nodemon --exec yarn start:server -e ts",
@@ -16,25 +16,26 @@
1616
"build": "tsc"
1717
},
1818
"dependencies": {
19-
"@graphql-modules/core": "0.2.0",
20-
"@graphql-modules/epoxy": "0.2.0",
21-
"@graphql-modules/logger": "0.2.0",
22-
"@graphql-modules/sonar": "0.2.0",
23-
"apollo-server": "2.1.0",
19+
"@graphql-modules/core": "0.2.18",
20+
"@graphql-modules/epoxy": "0.2.18",
21+
"@graphql-modules/sonar": "0.2.18",
22+
"apollo-server": "2.3.1",
2423
"graphql": "14.0.2",
2524
"reflect-metadata": "0.1.12",
2625
"ts-node": "7.0.1",
27-
"tsconfig-paths": "3.6.0",
28-
"typescript": "3.1.3"
26+
"tsconfig-paths": "3.7.0",
27+
"typescript": "3.2.2"
2928
},
3029
"devDependencies": {
31-
"concurrently": "4.0.1",
32-
"@types/graphql": "14.0.3",
33-
"graphql-code-generator": "0.14.0-alpha.d97d93cd",
34-
"graphql-codegen-plugin-helpers": "0.14.0-alpha.d97d93cd",
35-
"graphql-codegen-typescript-common": "0.14.0-alpha.d97d93cd",
36-
"graphql-codegen-typescript-mongodb": "0.14.0-alpha.d97d93cd",
37-
"graphql-codegen-typescript-server": "0.14.0-alpha.d97d93cd",
38-
"nodemon": "1.18.5"
30+
"concurrently": "4.1.0",
31+
"@types/graphql": "14.0.4",
32+
"graphql-code-generator": "0.15.2",
33+
"graphql-codegen-plugin-helpers": "0.15.2",
34+
"graphql-codegen-add": "0.15.2",
35+
"graphql-codegen-typescript-common": "0.15.2",
36+
"graphql-codegen-typescript-mongodb": "0.15.2",
37+
"graphql-codegen-typescript-server": "0.15.2",
38+
"graphql-codegen-typescript-resolvers": "0.15.2",
39+
"nodemon": "1.18.9"
3940
}
4041
}

Diff for: src/modules/app.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@ import { ChatsModule } from "./chats";
55
import { MessagesModule } from "./messages";
66

77
export const AppModule = new GraphQLModule({
8-
imports: ({ chats, messages}) => [
8+
imports: ({ config: { chats, messages} }) => [
99
CommonModule.forRoot({
1010
chats,
1111
messages,
1212
}),
1313
ChatsModule,
1414
MessagesModule,
1515
],
16+
configRequired: true,
1617
});

Diff for: src/modules/chats/index.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
import { GraphQLModule } from '@graphql-modules/core';
22
import { loadResolversFiles, loadSchemaFiles } from '@graphql-modules/sonar';
33
import { mergeGraphQLSchemas, mergeResolvers } from '@graphql-modules/epoxy';
4-
import { MessagesModule } from "@modules/messages";
54
import { CommonModule } from "@modules/common";
65
import { ChatsProvider } from "@modules/chats/providers/chats.provider";
76

87
export const ChatsModule = new GraphQLModule({
9-
imports: () => [
10-
CommonModule.forChild(),
11-
MessagesModule,
8+
imports: [
9+
CommonModule.forChild()
1210
],
1311
providers: [
1412
ChatsProvider,

Diff for: src/modules/chats/providers/chats.provider.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Injectable, Inject } from '@graphql-modules/core';
1+
import { Injectable, Inject } from '@graphql-modules/di';
22
import { ChatDbObject, MessageDbObject } from "@models";
33
import { CHATS, MESSAGES } from "@modules/common";
44

Diff for: src/modules/chats/resolvers/chats.resolver.ts

-10
This file was deleted.

Diff for: src/modules/chats/resolvers/mutation.resolver.ts

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
import { ModuleContext } from '@graphql-modules/core';
21
import { ChatsProvider } from "../providers/chats.provider";
3-
import { ChatDbObject, CreateChatMutationArgs, DeleteChatMutationArgs } from "@models";
2+
import { IResolvers } from "@models";
43

54
export default {
65
Mutation: {
7-
createChat: (root, {title, description}: CreateChatMutationArgs, { injector }: ModuleContext): ChatDbObject =>
6+
createChat: (root, {title, description}, { injector }) =>
87
injector.get(ChatsProvider).createChat({title, description}),
9-
deleteChat: (root, {id}: DeleteChatMutationArgs, { injector }: ModuleContext): number =>
8+
deleteChat: (root, {id}, { injector }) =>
109
injector.get(ChatsProvider).deleteChat(id),
1110
},
12-
};
11+
} as IResolvers;

Diff for: src/modules/chats/resolvers/query.resolver.ts

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
import { ModuleContext } from '@graphql-modules/core';
21
import { ChatsProvider } from "../providers/chats.provider";
3-
import { ChatDbObject } from "@models";
2+
import { IResolvers } from "@models";
43

54
export default {
65
Query: {
7-
chats: (root, args, { injector }: ModuleContext): ChatDbObject[] =>
6+
chats: (root, args, { injector }) =>
87
injector.get(ChatsProvider).getChats(),
9-
chat: (root, {id}: any, { injector }: ModuleContext): ChatDbObject =>
8+
chat: (root, {id}: any, { injector }) =>
109
injector.get(ChatsProvider).getChat(id),
1110
},
12-
};
11+
} as IResolvers;

Diff for: src/modules/chats/schema/chat.graphql

-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,4 @@ type Chat @entity {
22
id: Int! @column
33
title: String! @column
44
description: String! @column
5-
messages: [Message] @column(overrideType: "Int") @map(path: "messageIds")
65
}

Diff for: src/modules/common/index.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,14 @@ export interface CommonModuleConfig {
1313
}
1414

1515
export const CommonModule = new GraphQLModule<CommonModuleConfig>({
16-
providers: ({chats, messages}) => [
16+
providers: ({ config: {chats, messages} }) => [
1717
{ provide: CHATS, useValue: chats },
1818
{ provide: MESSAGES, useValue: messages },
1919
],
20-
typeDefs: mergeGraphQLSchemas([
20+
typeDefs: [
2121
...loadSchemaFiles(__dirname + '/schema/'),
2222
DIRECTIVES,
23-
]),
23+
],
2424
resolvers: mergeResolvers(loadResolversFiles(__dirname + '/resolvers/')),
25+
configRequired: true
2526
});

Diff for: src/modules/messages/index.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
import { GraphQLModule } from '@graphql-modules/core';
22
import { loadResolversFiles, loadSchemaFiles } from '@graphql-modules/sonar';
3-
import { mergeGraphQLSchemas, mergeResolvers } from '@graphql-modules/epoxy';
3+
import { mergeResolvers } from '@graphql-modules/epoxy';
44
import { MessagesProvider } from "@modules/messages/providers/messages.provider";
55
import { CommonModule } from "@modules/common";
66
import { ChatsModule } from "@modules/chats";
77

88
export const MessagesModule = new GraphQLModule({
9-
imports: () => [
9+
imports: [
1010
CommonModule.forChild(),
1111
ChatsModule,
1212
],
1313
providers: [
1414
MessagesProvider,
1515
],
16-
typeDefs: mergeGraphQLSchemas(loadSchemaFiles(__dirname + '/schema/')),
16+
typeDefs: loadSchemaFiles(__dirname + '/schema/'),
1717
resolvers: mergeResolvers(loadResolversFiles(__dirname + '/resolvers/')),
1818
});

Diff for: src/modules/messages/providers/messages.provider.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Inject, Injectable } from '@graphql-modules/core';
1+
import { Inject, Injectable } from '@graphql-modules/di';
22
import { ChatDbObject, MessageDbObject } from "@models";
33
import { CHATS, MESSAGES } from "@modules/common";
44

@@ -27,7 +27,7 @@ export class MessagesProvider {
2727

2828
this.chats = this.chats.map(chat => chat.id !== chatId ? chat : {
2929
...chat,
30-
messageIds: [...chat.messageIds, newMessage.id],
30+
messageIds: [...this.messages.filter(message => message.chatId === chat.id).map(message => message.id), newMessage.id],
3131
});
3232

3333
return newMessage;
@@ -38,7 +38,7 @@ export class MessagesProvider {
3838
this.messages.filter(message => message.id !== id);
3939
this.chats = this.chats.map(chat => chat.id !== chatId ? chat : {
4040
...chat,
41-
messages: chat.messageIds.filter(messageId => messageId !== id),
41+
messages: this.messages.filter(message => message.chatId === chat.id).map(message => message.id),
4242
});
4343

4444
return id;

Diff for: src/modules/messages/resolvers/chats.resolver.ts

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { MessagesProvider } from "@modules/messages/providers/messages.provider";
2+
import { IResolvers } from "@models";
3+
4+
export default {
5+
Chat: {
6+
messages: (chat: any, args, { injector }) =>
7+
injector.get(MessagesProvider).getMessages(chat.id),
8+
},
9+
} as IResolvers;

Diff for: src/modules/messages/resolvers/messages.resolver.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
import { ModuleContext } from "@graphql-modules/core";
21
import { ChatsProvider } from "@modules/chats/providers/chats.provider";
3-
import { ChatDbObject } from "@models";
2+
import { IResolvers } from "@models";
43

54
export default {
65
Message: {
7-
chat: (message: any, args, { injector }: ModuleContext): ChatDbObject =>
6+
chat: (message, args, { injector }) =>
87
injector.get(ChatsProvider).getChat(message.chatId),
98
},
10-
};
9+
} as IResolvers;

Diff for: src/modules/messages/resolvers/mutation.resolver.ts

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
import { ModuleContext } from '@graphql-modules/core';
21
import { MessagesProvider } from "../providers/messages.provider";
3-
import { CreateMessageMutationArgs, DeleteMessageMutationArgs, MessageDbObject } from "@models";
2+
import { IResolvers } from "@models";
43

54
export default {
65
Mutation: {
7-
createMessage: (root, {content, chatId}: CreateMessageMutationArgs, { injector }: ModuleContext): MessageDbObject =>
6+
createMessage: (root, {content, chatId}, { injector }) =>
87
injector.get(MessagesProvider).createMessage(content, chatId),
9-
deleteMessage: (root, {id}: DeleteMessageMutationArgs, { injector }: ModuleContext): number =>
8+
deleteMessage: (root, {id}, { injector }) =>
109
injector.get(MessagesProvider).deleteMessage(id),
1110
},
12-
};
11+
} as IResolvers;

Diff for: src/modules/messages/resolvers/query.resolver.ts

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
import { ModuleContext } from '@graphql-modules/core';
21
import { MessagesProvider } from "../providers/messages.provider";
3-
import { MessageDbObject } from "@models";
2+
import { IResolvers } from "@models";
43

54
export default {
65
Query: {
7-
messages: (root, {chatId}: any, { injector }: ModuleContext): MessageDbObject[] =>
6+
messages: (root, {chatId}, { injector }) =>
87
injector.get(MessagesProvider).getMessages(chatId),
9-
message: (root, {id}: any, { injector }: ModuleContext): MessageDbObject =>
8+
message: (root, {id}, { injector }) =>
109
injector.get(MessagesProvider).getMessage(id),
1110
},
12-
};
11+
} as IResolvers;

Diff for: src/modules/messages/schema/message.graphql

+5-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,8 @@ type Message @entity {
22
id: Int! @column
33
content: String! @column
44
chat: Chat! @column(overrideType: "Int") @map(path: "chatId")
5-
}
5+
}
6+
7+
extend type Chat {
8+
messages: [Message]
9+
}

Diff for: src/schema.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ import 'reflect-metadata';
22
import { AppModule } from '@modules/app';
33

44
// Ask for typeDefs without all schema with business logic
5-
export default AppModule.typeDefs;
5+
export default AppModule.forRoot({ chats: [], messages: []}).typeDefs;

0 commit comments

Comments
 (0)