Skip to content

Commit

Permalink
Refactor operations module away - for some reason the need vanished
Browse files Browse the repository at this point in the history
  • Loading branch information
Lauri Svan committed Dec 29, 2020
1 parent 7e1d799 commit f98b75a
Show file tree
Hide file tree
Showing 15 changed files with 167 additions and 136 deletions.
2 changes: 0 additions & 2 deletions backend/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import { createApplication } from 'graphql-modules'
import AssignmentModule from './modules/assignment'
import CommonModule from './modules/common'
import CustomerModule from './modules/customer'
import OperationsModule from './modules/operations'
import PersonModule from './modules/person'

import Database from './models/Database'
Expand All @@ -15,7 +14,6 @@ async function start (): Promise<void> {
AssignmentModule,
CustomerModule,
CommonModule,
OperationsModule,
PersonModule
]
})
Expand Down
56 changes: 28 additions & 28 deletions backend/src/interfaces/schema-typings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,18 +43,6 @@ export type IAssignmentInput = {
ends: Scalars['DateTime'];
};


export type ICustomer = {
__typename?: 'Customer';
id: Scalars['ID'];
name: Scalars['String'];
};

export type ICustomerInput = {
name: Scalars['String'];
description?: Maybe<Scalars['String']>;
};

export type IQuery = {
__typename?: 'Query';
assignments: Array<IAssignment>;
Expand Down Expand Up @@ -84,6 +72,18 @@ export type IMutationCreatePersonArgs = {
input?: Maybe<IPersonInput>;
};


export type ICustomer = {
__typename?: 'Customer';
id: Scalars['ID'];
name: Scalars['String'];
};

export type ICustomerInput = {
name: Scalars['String'];
description?: Maybe<Scalars['String']>;
};

export type IPerson = {
__typename?: 'Person';
id: Scalars['ID'];
Expand Down Expand Up @@ -175,12 +175,12 @@ export type IResolversTypes = {
Assignment: ResolverTypeWrapper<IAssignment>;
String: ResolverTypeWrapper<Scalars['String']>;
AssignmentInput: IAssignmentInput;
Query: ResolverTypeWrapper<{}>;
Mutation: ResolverTypeWrapper<{}>;
DateTime: ResolverTypeWrapper<Scalars['DateTime']>;
ID: ResolverTypeWrapper<Scalars['ID']>;
Customer: ResolverTypeWrapper<ICustomer>;
CustomerInput: ICustomerInput;
Query: ResolverTypeWrapper<{}>;
Mutation: ResolverTypeWrapper<{}>;
Person: ResolverTypeWrapper<IPerson>;
PersonInput: IPersonInput;
Boolean: ResolverTypeWrapper<Scalars['Boolean']>;
Expand All @@ -191,12 +191,12 @@ export type IResolversParentTypes = {
Assignment: IAssignment;
String: Scalars['String'];
AssignmentInput: IAssignmentInput;
Query: {};
Mutation: {};
DateTime: Scalars['DateTime'];
ID: Scalars['ID'];
Customer: ICustomer;
CustomerInput: ICustomerInput;
Query: {};
Mutation: {};
Person: IPerson;
PersonInput: IPersonInput;
Boolean: Scalars['Boolean'];
Expand All @@ -213,16 +213,6 @@ export type IAssignmentResolvers<ContextType = any, ParentType extends IResolver
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
};

export interface IDateTimeScalarConfig extends GraphQLScalarTypeConfig<IResolversTypes['DateTime'], any> {
name: 'DateTime';
}

export type ICustomerResolvers<ContextType = any, ParentType extends IResolversParentTypes['Customer'] = IResolversParentTypes['Customer']> = {
id?: Resolver<IResolversTypes['ID'], ParentType, ContextType>;
name?: Resolver<IResolversTypes['String'], ParentType, ContextType>;
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
};

export type IQueryResolvers<ContextType = any, ParentType extends IResolversParentTypes['Query'] = IResolversParentTypes['Query']> = {
assignments?: Resolver<Array<IResolversTypes['Assignment']>, ParentType, ContextType>;
customers?: Resolver<Array<IResolversTypes['Customer']>, ParentType, ContextType>;
Expand All @@ -235,6 +225,16 @@ export type IMutationResolvers<ContextType = any, ParentType extends IResolversP
createPerson?: Resolver<IResolversTypes['Person'], ParentType, ContextType, RequireFields<IMutationCreatePersonArgs, never>>;
};

export interface IDateTimeScalarConfig extends GraphQLScalarTypeConfig<IResolversTypes['DateTime'], any> {
name: 'DateTime';
}

export type ICustomerResolvers<ContextType = any, ParentType extends IResolversParentTypes['Customer'] = IResolversParentTypes['Customer']> = {
id?: Resolver<IResolversTypes['ID'], ParentType, ContextType>;
name?: Resolver<IResolversTypes['String'], ParentType, ContextType>;
__isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
};

export type IPersonResolvers<ContextType = any, ParentType extends IResolversParentTypes['Person'] = IResolversParentTypes['Person']> = {
id?: Resolver<IResolversTypes['ID'], ParentType, ContextType>;
name?: Resolver<IResolversTypes['String'], ParentType, ContextType>;
Expand All @@ -243,10 +243,10 @@ export type IPersonResolvers<ContextType = any, ParentType extends IResolversPar

export type IResolvers<ContextType = any> = {
Assignment?: IAssignmentResolvers<ContextType>;
DateTime?: GraphQLScalarType;
Customer?: ICustomerResolvers<ContextType>;
Query?: IQueryResolvers<ContextType>;
Mutation?: IMutationResolvers<ContextType>;
DateTime?: GraphQLScalarType;
Customer?: ICustomerResolvers<ContextType>;
Person?: IPersonResolvers<ContextType>;
};

Expand Down
16 changes: 15 additions & 1 deletion backend/src/modules/assignment/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,28 @@ import path from 'path'
import { createModule, gql } from 'graphql-modules'

// These are types injected from the generated schema types
import { IResolvers } from '../../interfaces/schema-typings'
import { IAssignment, IResolvers } from '../../interfaces/schema-typings'

import AssignmentProvider from './provider'

const data = fs.readFileSync(path.join(__dirname, 'schema.graphql'))
const typeDefs = gql(data.toString())

const resolvers: IResolvers = {
Query: {
assignments: async (parent, args, context, info): Promise<IAssignment[]> => {
const provider = context.injector.get(AssignmentProvider)

return provider.find()
}
},
Mutation: {
createAssignment: async (parent, { input }, context, info): Promise<IAssignment> => {
const provider = context.injector.get(AssignmentProvider)

return provider.create(input)
}
}
}

export const AssignmentModule = createModule({
Expand Down
8 changes: 8 additions & 0 deletions backend/src/modules/assignment/schema.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,11 @@ input AssignmentInput {
starts: DateTime!
ends: DateTime!
}

extend type Query {
assignments: [Assignment!]!
}

extend type Mutation {
createAssignment(input: AssignmentInput): Assignment!
}
6 changes: 5 additions & 1 deletion backend/src/modules/common/schema.graphql
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# We need to declare the scalars we aim to use in schema
scalar DateTime
scalar ID
scalar ID

type Query

type Mutation
16 changes: 15 additions & 1 deletion backend/src/modules/customer/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import path from 'path'
import { createModule, gql } from 'graphql-modules'

// These are types injected from the generated schema types
import { IResolvers, ICustomer } from '../../interfaces/schema-typings'
import { ICustomer, IResolvers } from '../../interfaces/schema-typings'

import CustomerProvider from './provider'

Expand All @@ -19,6 +19,20 @@ const resolvers: IResolvers = {

return provider.findById(assignment.recipientId)
}
},
Query: {
customers: async (parent, args, context, info): Promise<ICustomer[]> => {
const provider = context.injector.get(CustomerProvider)

return provider.find()
},
},
Mutation: {
createCustomer: async (parent, { input }, context, info): Promise<ICustomer> => {
const provider = context.injector.get(CustomerProvider)

return provider.create(input)
}
}
}

Expand Down
8 changes: 8 additions & 0 deletions backend/src/modules/customer/schema.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,12 @@ input CustomerInput {
### We can augment the existing types from other modules
extend type Assignment {
recipient: Customer
}

extend type Query {
customers: [Customer!]!
}

extend type Mutation {
createCustomer(input: CustomerInput): Customer!
}
57 changes: 0 additions & 57 deletions backend/src/modules/operations/index.ts

This file was deleted.

11 changes: 0 additions & 11 deletions backend/src/modules/operations/schema.graphql

This file was deleted.

16 changes: 15 additions & 1 deletion backend/src/modules/person/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,28 @@ import path from 'path'
import { createModule, gql } from 'graphql-modules'

// These are types injected from the generated schema types
import { IResolvers } from '../../interfaces/schema-typings'
import { IPerson, IResolvers } from '../../interfaces/schema-typings'

import PersonProvider from './provider'

const data = fs.readFileSync(path.join(__dirname, 'schema.graphql'))
const typeDefs = gql(data.toString())

const resolvers: IResolvers = {
Query: {
persons: async (parent, args, context, info): Promise<IPerson[]> => {
const provider = context.injector.get(PersonProvider)

return provider.find()
}
},
Mutation: {
createPerson: async (parent, { input }, context, info): Promise<IPerson> => {
const provider = context.injector.get(PersonProvider)

return provider.create(input)
}
}
}

export const PersonModule = createModule({
Expand Down
8 changes: 8 additions & 0 deletions backend/src/modules/person/schema.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,11 @@ type Person {
input PersonInput {
name: String!
}

extend type Query {
persons: [Person!]!
}

extend type Mutation {
createPerson(input: PersonInput): Person!
}
Loading

0 comments on commit f98b75a

Please sign in to comment.