mirror of
https://github.com/FranP-code/countries.git
synced 2025-10-13 00:02:15 +00:00
Use netlify functions
This commit is contained in:
1
.netlify/functions-serve/graphql/graphql.js
Normal file
1
.netlify/functions-serve/graphql/graphql.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
module.exports = require('./src/netlify/functions/graphql/graphql.js')
|
||||||
1
.netlify/functions-serve/graphql/package.json
Normal file
1
.netlify/functions-serve/graphql/package.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"type":"commonjs"}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
64
.netlify/functions-serve/graphql/src/schema.graphql
Normal file
64
.netlify/functions-serve/graphql/src/schema.graphql
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
type Country @key(fields: "code") {
|
||||||
|
code: ID!
|
||||||
|
name: String!
|
||||||
|
native: String!
|
||||||
|
phone: String!
|
||||||
|
continent: Continent!
|
||||||
|
capital: String
|
||||||
|
currency: String
|
||||||
|
languages: [Language!]!
|
||||||
|
emoji: String!
|
||||||
|
emojiU: String!
|
||||||
|
states: [State!]!
|
||||||
|
}
|
||||||
|
|
||||||
|
type Continent @key(fields: "code") {
|
||||||
|
code: ID!
|
||||||
|
name: String!
|
||||||
|
countries: [Country!]!
|
||||||
|
}
|
||||||
|
|
||||||
|
type Language @key(fields: "code") {
|
||||||
|
code: ID!
|
||||||
|
name: String
|
||||||
|
native: String
|
||||||
|
rtl: Boolean!
|
||||||
|
}
|
||||||
|
|
||||||
|
type State {
|
||||||
|
code: String
|
||||||
|
name: String!
|
||||||
|
country: Country!
|
||||||
|
}
|
||||||
|
|
||||||
|
input StringQueryOperatorInput {
|
||||||
|
eq: String
|
||||||
|
ne: String
|
||||||
|
in: [String]
|
||||||
|
nin: [String]
|
||||||
|
regex: String
|
||||||
|
glob: String
|
||||||
|
}
|
||||||
|
|
||||||
|
input CountryFilterInput {
|
||||||
|
code: StringQueryOperatorInput
|
||||||
|
currency: StringQueryOperatorInput
|
||||||
|
continent: StringQueryOperatorInput
|
||||||
|
}
|
||||||
|
|
||||||
|
input ContinentFilterInput {
|
||||||
|
code: StringQueryOperatorInput
|
||||||
|
}
|
||||||
|
|
||||||
|
input LanguageFilterInput {
|
||||||
|
code: StringQueryOperatorInput
|
||||||
|
}
|
||||||
|
|
||||||
|
type Query {
|
||||||
|
countries(filter: CountryFilterInput): [Country!]!
|
||||||
|
country(code: ID!): Country
|
||||||
|
continents(filter: ContinentFilterInput): [Continent!]!
|
||||||
|
continent(code: ID!): Continent
|
||||||
|
languages(filter: LanguageFilterInput): [Language!]!
|
||||||
|
language(code: ID!): Language
|
||||||
|
}
|
||||||
1
_redirects
Normal file
1
_redirects
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/ /.netlify/functions/graphql 200
|
||||||
43
fly.toml
43
fly.toml
@@ -1,43 +0,0 @@
|
|||||||
# fly.toml file generated for empty-cherry-6843 on 2021-07-26T09:56:09-07:00
|
|
||||||
|
|
||||||
app = "empty-cherry-6843"
|
|
||||||
|
|
||||||
kill_signal = "SIGINT"
|
|
||||||
kill_timeout = 5
|
|
||||||
|
|
||||||
[build]
|
|
||||||
builder = "heroku/buildpacks:20"
|
|
||||||
|
|
||||||
[env]
|
|
||||||
PORT = 8080
|
|
||||||
APOLLO_GRAPH_REF = "Countries-gxmwa8@current"
|
|
||||||
APOLLO_SCHEMA_REPORTING = true
|
|
||||||
|
|
||||||
[experimental]
|
|
||||||
allowed_public_ports = []
|
|
||||||
auto_rollback = true
|
|
||||||
|
|
||||||
[[services]]
|
|
||||||
http_checks = []
|
|
||||||
internal_port = 8080
|
|
||||||
protocol = "tcp"
|
|
||||||
script_checks = []
|
|
||||||
|
|
||||||
[services.concurrency]
|
|
||||||
hard_limit = 25
|
|
||||||
soft_limit = 20
|
|
||||||
type = "connections"
|
|
||||||
|
|
||||||
[[services.ports]]
|
|
||||||
handlers = ["http"]
|
|
||||||
port = 80
|
|
||||||
|
|
||||||
[[services.ports]]
|
|
||||||
handlers = ["tls", "http"]
|
|
||||||
port = 443
|
|
||||||
|
|
||||||
[[services.tcp_checks]]
|
|
||||||
grace_period = "1s"
|
|
||||||
interval = "15s"
|
|
||||||
restart_limit = 6
|
|
||||||
timeout = "2s"
|
|
||||||
18
index.js
18
index.js
@@ -1,18 +0,0 @@
|
|||||||
import {ApolloServer, gql} from 'apollo-server';
|
|
||||||
import {ApolloServerPluginLandingPageGraphQLPlayground} from 'apollo-server-core';
|
|
||||||
import {buildSubgraphSchema} from '@apollo/subgraph';
|
|
||||||
import {readFileSync} from 'fs';
|
|
||||||
import {resolvers} from './resolvers.js';
|
|
||||||
|
|
||||||
const typeDefs = gql(readFileSync('./schema.graphql', 'utf-8'));
|
|
||||||
const schema = buildSubgraphSchema({typeDefs, resolvers});
|
|
||||||
|
|
||||||
const server = new ApolloServer({
|
|
||||||
schema,
|
|
||||||
introspection: true,
|
|
||||||
plugins: [ApolloServerPluginLandingPageGraphQLPlayground()]
|
|
||||||
});
|
|
||||||
|
|
||||||
server.listen({port: process.env.PORT || 4000}).then(({url}) => {
|
|
||||||
console.log(`🚀 Server ready at ${url}`);
|
|
||||||
});
|
|
||||||
3
netlify.toml
Normal file
3
netlify.toml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[functions]
|
||||||
|
node_bundler = "esbuild"
|
||||||
|
included_files = ["schema.graphql"]
|
||||||
35
netlify/functions/graphql/graphql.js
Normal file
35
netlify/functions/graphql/graphql.js
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
import {ApolloServer, gql} from 'apollo-server-lambda';
|
||||||
|
import {ApolloServerPluginLandingPageGraphQLPlayground} from 'apollo-server-core';
|
||||||
|
import {buildSubgraphSchema} from '@apollo/subgraph';
|
||||||
|
import {join} from 'path';
|
||||||
|
import {readFileSync} from 'fs';
|
||||||
|
import {resolvers} from './resolvers';
|
||||||
|
|
||||||
|
const typeDefs = gql(
|
||||||
|
readFileSync(join(__dirname, '../../../schema.graphql')).toString()
|
||||||
|
);
|
||||||
|
|
||||||
|
const schema = buildSubgraphSchema({
|
||||||
|
typeDefs,
|
||||||
|
resolvers
|
||||||
|
});
|
||||||
|
|
||||||
|
const server = new ApolloServer({
|
||||||
|
schema,
|
||||||
|
introspection: true,
|
||||||
|
plugins: [ApolloServerPluginLandingPageGraphQLPlayground()]
|
||||||
|
});
|
||||||
|
|
||||||
|
const apolloHandler = server.createHandler();
|
||||||
|
|
||||||
|
// workaround for netlify dev to play nice with ac3
|
||||||
|
// from https://github.com/vendia/serverless-express/issues/427#issuecomment-924580007
|
||||||
|
export const handler = (event, context, ...args) =>
|
||||||
|
apolloHandler(
|
||||||
|
{
|
||||||
|
...event,
|
||||||
|
requestContext: context
|
||||||
|
},
|
||||||
|
context,
|
||||||
|
...args
|
||||||
|
);
|
||||||
78
package-lock.json
generated
78
package-lock.json
generated
@@ -6,7 +6,7 @@
|
|||||||
"": {
|
"": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@apollo/subgraph": "^0.3.1",
|
"@apollo/subgraph": "^0.3.1",
|
||||||
"apollo-server": "^3.6.3",
|
"apollo-server-lambda": "^3.6.3",
|
||||||
"countries-list": "^2.5.4",
|
"countries-list": "^2.5.4",
|
||||||
"graphql": "^15.8.0",
|
"graphql": "^15.8.0",
|
||||||
"provinces": "^1.11.0",
|
"provinces": "^1.11.0",
|
||||||
@@ -415,6 +415,11 @@
|
|||||||
"@types/node": "*"
|
"@types/node": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/aws-lambda": {
|
||||||
|
"version": "8.10.92",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.92.tgz",
|
||||||
|
"integrity": "sha512-dB14TltT1SNq73z3MaZfKyyBZ37NAgAFl8jze59bisR4fJ6pB6AYGxItHFkooZbN7UcVJX/cFudM4p8wp1W4rA=="
|
||||||
|
},
|
||||||
"node_modules/@types/body-parser": {
|
"node_modules/@types/body-parser": {
|
||||||
"version": "1.19.2",
|
"version": "1.19.2",
|
||||||
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
|
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
|
||||||
@@ -587,6 +592,14 @@
|
|||||||
"semver": "bin/semver"
|
"semver": "bin/semver"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@vendia/serverless-express": {
|
||||||
|
"version": "4.5.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vendia/serverless-express/-/serverless-express-4.5.4.tgz",
|
||||||
|
"integrity": "sha512-Ptrp8toFPv5Py3VNXRgiJp4XO7KTK992bM1ZrHjjfKJ8ThjJr87Hqs3UpeKHW12ABZ4e062NbDmgmY9NxsYR2w==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/abbrev": {
|
"node_modules/abbrev": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
||||||
@@ -710,19 +723,6 @@
|
|||||||
"@apollo/protobufjs": "1.2.2"
|
"@apollo/protobufjs": "1.2.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/apollo-server": {
|
|
||||||
"version": "3.6.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-3.6.3.tgz",
|
|
||||||
"integrity": "sha512-kNvOiDNkIaO+MsfR9v40Vz4ArlDdc9VwVKGJy5dniLW9AoDa/tSF99m8ItfGoMypqlRPMgrNGxkMuToBnvYXNQ==",
|
|
||||||
"dependencies": {
|
|
||||||
"apollo-server-core": "^3.6.3",
|
|
||||||
"apollo-server-express": "^3.6.3",
|
|
||||||
"express": "^4.17.1"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"graphql": "^15.3.0 || ^16.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/apollo-server-caching": {
|
"node_modules/apollo-server-caching": {
|
||||||
"version": "3.3.0",
|
"version": "3.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-3.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-3.3.0.tgz",
|
||||||
@@ -814,6 +814,24 @@
|
|||||||
"graphql": "^15.3.0 || ^16.0.0"
|
"graphql": "^15.3.0 || ^16.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/apollo-server-lambda": {
|
||||||
|
"version": "3.6.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/apollo-server-lambda/-/apollo-server-lambda-3.6.3.tgz",
|
||||||
|
"integrity": "sha512-ImQoXudxXhsR0wVSSA6oPxG+eDeekDq9ooE2I7OTGoEHS+31wj5Rx39KKtql36NLVodhl9ubjr0Et0HGQYae6Q==",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/aws-lambda": "^8.10.76",
|
||||||
|
"@vendia/serverless-express": "^4.3.9",
|
||||||
|
"apollo-server-core": "^3.6.3",
|
||||||
|
"apollo-server-express": "^3.6.3",
|
||||||
|
"express": "^4.17.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"graphql": "^15.3.0 || ^16.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/apollo-server-plugin-base": {
|
"node_modules/apollo-server-plugin-base": {
|
||||||
"version": "3.5.1",
|
"version": "3.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.5.1.tgz",
|
||||||
@@ -5604,6 +5622,11 @@
|
|||||||
"@types/node": "*"
|
"@types/node": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@types/aws-lambda": {
|
||||||
|
"version": "8.10.92",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.92.tgz",
|
||||||
|
"integrity": "sha512-dB14TltT1SNq73z3MaZfKyyBZ37NAgAFl8jze59bisR4fJ6pB6AYGxItHFkooZbN7UcVJX/cFudM4p8wp1W4rA=="
|
||||||
|
},
|
||||||
"@types/body-parser": {
|
"@types/body-parser": {
|
||||||
"version": "1.19.2",
|
"version": "1.19.2",
|
||||||
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
|
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
|
||||||
@@ -5753,6 +5776,11 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@vendia/serverless-express": {
|
||||||
|
"version": "4.5.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vendia/serverless-express/-/serverless-express-4.5.4.tgz",
|
||||||
|
"integrity": "sha512-Ptrp8toFPv5Py3VNXRgiJp4XO7KTK992bM1ZrHjjfKJ8ThjJr87Hqs3UpeKHW12ABZ4e062NbDmgmY9NxsYR2w=="
|
||||||
|
},
|
||||||
"abbrev": {
|
"abbrev": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
||||||
@@ -5850,16 +5878,6 @@
|
|||||||
"@apollo/protobufjs": "1.2.2"
|
"@apollo/protobufjs": "1.2.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"apollo-server": {
|
|
||||||
"version": "3.6.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-3.6.3.tgz",
|
|
||||||
"integrity": "sha512-kNvOiDNkIaO+MsfR9v40Vz4ArlDdc9VwVKGJy5dniLW9AoDa/tSF99m8ItfGoMypqlRPMgrNGxkMuToBnvYXNQ==",
|
|
||||||
"requires": {
|
|
||||||
"apollo-server-core": "^3.6.3",
|
|
||||||
"apollo-server-express": "^3.6.3",
|
|
||||||
"express": "^4.17.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"apollo-server-caching": {
|
"apollo-server-caching": {
|
||||||
"version": "3.3.0",
|
"version": "3.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-3.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-3.3.0.tgz",
|
||||||
@@ -5927,6 +5945,18 @@
|
|||||||
"parseurl": "^1.3.3"
|
"parseurl": "^1.3.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"apollo-server-lambda": {
|
||||||
|
"version": "3.6.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/apollo-server-lambda/-/apollo-server-lambda-3.6.3.tgz",
|
||||||
|
"integrity": "sha512-ImQoXudxXhsR0wVSSA6oPxG+eDeekDq9ooE2I7OTGoEHS+31wj5Rx39KKtql36NLVodhl9ubjr0Et0HGQYae6Q==",
|
||||||
|
"requires": {
|
||||||
|
"@types/aws-lambda": "^8.10.76",
|
||||||
|
"@vendia/serverless-express": "^4.3.9",
|
||||||
|
"apollo-server-core": "^3.6.3",
|
||||||
|
"apollo-server-express": "^3.6.3",
|
||||||
|
"express": "^4.17.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"apollo-server-plugin-base": {
|
"apollo-server-plugin-base": {
|
||||||
"version": "3.5.1",
|
"version": "3.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.5.1.tgz",
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@apollo/subgraph": "^0.3.1",
|
"@apollo/subgraph": "^0.3.1",
|
||||||
"apollo-server": "^3.6.3",
|
"apollo-server-lambda": "^3.6.3",
|
||||||
"countries-list": "^2.5.4",
|
"countries-list": "^2.5.4",
|
||||||
"graphql": "^15.8.0",
|
"graphql": "^15.8.0",
|
||||||
"provinces": "^1.11.0",
|
"provinces": "^1.11.0",
|
||||||
|
|||||||
Reference in New Issue
Block a user