generator-ptz-graphql
Version:
Yeoman generator to create polutz graphql server.
74 lines (60 loc) • 1.82 kB
text/typescript
import { IUserApp } from 'ptz-user-domain';
import MenuSchema, { menu } from '../menus/menuSchema';
import UserSchema from '../users/userSchema';
import AppSchema, { app } from './appSchema';
import {
GraphQLID,
GraphQLInt,
GraphQLList,
GraphQLNonNull,
GraphQLObjectType,
GraphQLSchema,
GraphQLString
} from 'graphql';
import {
connectionArgs,
connectionDefinitions,
connectionFromPromisedArray,
globalIdField,
mutationWithClientMutationId
} from 'graphql-relay';
import { Ilog } from 'ptz-log';
function Schema(userApp: IUserApp, log: Ilog) {
const appSchema = AppSchema({ log });
const menuSchema = MenuSchema({ log });
const userSchema = UserSchema({ userApp, log });
const viewer = {};
const viewerType = new GraphQLObjectType({
name: 'Viewer',
fields: () => ({
id: globalIdField('Viewer'),
app: { type: appSchema.appType, resolve: () => app },
menu: { type: menuSchema.menuType, resolve: () => menu },
userConnection: userSchema.getUserConnection()
})
});
const outputViewer = {
type: viewerType,
resolve: () => viewer
};
const schema = new GraphQLSchema({
query: new GraphQLObjectType({
name: 'Query',
fields: () => ({
viewer: {
type: viewerType,
resolve: () => viewer
}
})
}),
mutation: new GraphQLObjectType({
name: 'Mutation',
fields: () => ({
saveUser: userSchema.getSaveUserMutation(outputViewer),
getAuthToken: userSchema.getAuthTokenMutation(outputViewer)
})
})
});
return schema;
}
export default Schema;