mirror of
https://github.com/sergeyyarkov/next-apollo-graphql-setup.git
synced 2026-10-12 02:39:26 +03:00
♻️ graphql file structure to role-oriented
This commit is contained in:
parent
8e785f3e1c
commit
c8c5063f8f
11
graphql/data/index.js
Normal file
11
graphql/data/index.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
const articles = [
|
||||||
|
{ id: 1, title: 'Article 1' },
|
||||||
|
{ id: 2, title: 'Article 2' },
|
||||||
|
{ id: 3, title: 'Article 3' },
|
||||||
|
{ id: 4, title: 'Article 4' },
|
||||||
|
{ id: 5, title: 'Article 5' }
|
||||||
|
]
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
articles
|
||||||
|
}
|
||||||
11
graphql/models/Article.js
Normal file
11
graphql/models/Article.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
const { articles } = require('../data')
|
||||||
|
|
||||||
|
class Article {
|
||||||
|
static all () {
|
||||||
|
return articles
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
Article
|
||||||
|
}
|
||||||
5
graphql/models/index.js
Normal file
5
graphql/models/index.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
const { Article } = require('./Article')
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
Article
|
||||||
|
}
|
||||||
11
graphql/resolvers/articlesResolvers.js
Normal file
11
graphql/resolvers/articlesResolvers.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
const { Article } = require('../models')
|
||||||
|
|
||||||
|
const articlesResolvers = {
|
||||||
|
Query: {
|
||||||
|
articles: () => Article.all()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
articlesResolvers
|
||||||
|
}
|
||||||
7
graphql/resolvers/index.js
Normal file
7
graphql/resolvers/index.js
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
const { articlesResolvers } = require('./articlesResolvers')
|
||||||
|
|
||||||
|
const resolvers = [articlesResolvers]
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
resolvers
|
||||||
|
}
|
||||||
8
graphql/typeDefs/index.js
Normal file
8
graphql/typeDefs/index.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
const { query } = require('./query')
|
||||||
|
const { articleType } = require('./types')
|
||||||
|
|
||||||
|
const typeDefs = [query, articleType]
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
typeDefs
|
||||||
|
}
|
||||||
11
graphql/typeDefs/query.js
Normal file
11
graphql/typeDefs/query.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
const { gql } = require('apollo-boost')
|
||||||
|
|
||||||
|
const query = gql`
|
||||||
|
type Query {
|
||||||
|
articles: [Article]
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
query
|
||||||
|
}
|
||||||
12
graphql/typeDefs/types/articleType.js
Normal file
12
graphql/typeDefs/types/articleType.js
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
const { gql } = require('apollo-boost')
|
||||||
|
|
||||||
|
const articleType = gql`
|
||||||
|
type Article {
|
||||||
|
id: ID
|
||||||
|
title: String
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
articleType
|
||||||
|
}
|
||||||
5
graphql/typeDefs/types/index.js
Normal file
5
graphql/typeDefs/types/index.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
const { articleType } = require('./articleType')
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
articleType
|
||||||
|
}
|
||||||
@ -2,12 +2,12 @@ const withSass = require('@zeit/next-sass')
|
|||||||
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
|
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
|
||||||
|
|
||||||
module.exports = withSass({
|
module.exports = withSass({
|
||||||
cssModules: true,
|
cssModules: true,
|
||||||
webpack: (config, { dev, isServer }) => {
|
webpack: (config, { dev, isServer }) => {
|
||||||
if (isServer) return config
|
if (isServer) return config
|
||||||
|
|
||||||
config.optimization.minimizer.push(new OptimizeCSSAssetsPlugin({}))
|
config.optimization.minimizer.push(new OptimizeCSSAssetsPlugin({}))
|
||||||
|
|
||||||
return config
|
return config
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@ -1,29 +1,6 @@
|
|||||||
import { gql, ApolloServer } from 'apollo-server-micro'
|
const { ApolloServer, gql } = require('apollo-server-micro')
|
||||||
|
const { typeDefs } = require('../../graphql/typeDefs')
|
||||||
const Articles = [
|
const { resolvers } = require('../../graphql/resolvers')
|
||||||
{ id: 1, title: 'Article 1' },
|
|
||||||
{ id: 2, title: 'Article 2' },
|
|
||||||
{ id: 3, title: 'Article 3' },
|
|
||||||
{ id: 4, title: 'Article 4' },
|
|
||||||
{ id: 5, title: 'Article 5' }
|
|
||||||
]
|
|
||||||
|
|
||||||
const typeDefs = gql`
|
|
||||||
type Query {
|
|
||||||
articles: [Article]
|
|
||||||
}
|
|
||||||
|
|
||||||
type Article {
|
|
||||||
id: ID
|
|
||||||
title: String
|
|
||||||
}
|
|
||||||
`
|
|
||||||
|
|
||||||
const resolvers = {
|
|
||||||
Query: {
|
|
||||||
articles: (_parent, _args, _context) => Articles
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const apolloServer = new ApolloServer({ typeDefs, resolvers })
|
const apolloServer = new ApolloServer({ typeDefs, resolvers })
|
||||||
const handler = apolloServer.createHandler({ path: '/api/graphql' })
|
const handler = apolloServer.createHandler({ path: '/api/graphql' })
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user