# Working with other typeDefs and resolvers
This library coexists with your other typeDefs and resolvers well.
This is an example:
const { ApolloServer, makeExecutableSchema, gql } = require('apollo-server')
const { applyMiddleware } = require('graphql-middleware')
const typeDef = gql`
type Query {
root: String
}
type Mutation {
root: String
}
`
// userInfo domain
const userInfo = require('./userInfo')
const typeDefs = [typeDef, userInfo.typeDef]
const resolvers = [userInfo.resolvers]
// add default typeDefs and resolvers
const { addTypeDefs, addResolvers } = require('../src')
const models = require('./models')
addTypeDefs(typeDefs, models)
addResolvers(resolvers, models)
// define the schema
const schema = makeExecutableSchema({
typeDefs,
resolvers
})
// add middleware
const { middlewares } = require('./middlewares')
const schemaWithMiddleware = applyMiddleware(schema, ...middlewares)
const server = new ApolloServer({ schema: schemaWithMiddleware })