Una implementación GraphQL para exponer los recursos de desbordamiento de pila de manera eficiente (comentarios, publicaciones, respuestas, votos, etc.)
Stack Exchange no tiene un punto final GraphQL, así que hice uno. La API en vivo anterior está en modo POC por ahora, ya que se construye el esquema. Actualmente está sirviendo contenido de https://health.stackexchange.com/ y se actualiza semanalmente con más por venir, ya que la tubería e infra se reforzan y se construyen. Espere una cantidad mínima de latencia porque esto se aloja actualmente en un servicio de aplicaciones, que girará durante los períodos de bajo uso. Si esto sucede, sea paciente y el patio de recreo/las solicitudes debe entrar después del primer 'despertar'. Si esto obtiene algo de tracción, se aumentará la disponibilidad.
Para ejecutar localmente:
docker-compose up
¡Y visite http: // localhost: 8080 para comenzar a usar el patio de recreo o llegar al punto final con algunas consultas! Por ejemplo, para obtener información sobre las páginas de preguntas y respuestas de mayor puntuación en una subcomunidad:
query postsPagination {
allPostsCursor(first: 10, where: { order: { field: votes, order: DESC } }) {
pageInfo {
hasNextPage
hasPreviousPage
}
edges {
cursor
node {
score
title
body
comments {
userId
text
}
answers {
score
body
comments {
userDisplayName
text
}
}
}
}
}
}
El servidor también está disponible como contenedor Docker, siempre que exista un backend separado:
docker run -e SERVER='<dbhost>' -e UNAME='<dbUname>' -e PASS='<dbPass>' snimmagadda/stack-exchange-graphql-server:latest
o para correr desde la fuente:
go run cmd/server.goSe deben configurar algunas variables de entorno para ejecutarse localmente
| Llave | Tipo | Descripción | Ejemplo |
|---|---|---|---|
SERVER | Cadena | Anfitrión de DB | hostil |
SCHEMA | Cadena | esquema de la aplicación DB | stacke |
UNAME | Cadena | App DB Nombre de usuario Cred | apusador |
PASS | Cadena | App DB Contraseña Cred | supersecret123 |
SERVER debe ser el nombre de host de un DB MySQL. Para servir contenido, el servidor GraphQL espera un esquema stacke poblado.
TODO: parámetros configurables ...
go build cmd/server.goLas opciones para el desarrollo son fácilmente flexibles con rutas más simplificadas por venir ... por ahora las siguientes están disponibles:
Ejecute el backend solo con Docker (o ajuste y use docker-compose.yml )
docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=password -e MYSQL_ROOT_USER=root -e MYSQL_PASSWORD=password -d -p 3306:3306 mysql:5.7.26
~ 1k Las filas existen aquí se utilizarán como insertos en su esquema.
Crear (o copiar) un archivo .env con las variables en la tabla anterior establecida para configurar el servidor GraphQL local.
Inicie el servidor:
go run cmd/server.go
TODO Probablemente voy a hacer un refinamiento e intercambiar a algo como un backend elástico, pero por ahora aquí está la configuración temprana. Los volcados XML publicados por Stack Exchange se importan a un backend relacional indexado utilizando un trabajo escrito con Spring Batch en un horario. El servidor GraphQL se lee de este backend para exponer datos de intercambio de pila. 
? Sai Nimmagadda
Este proyecto se encuentra actualmente en modo de construcción. ¡Las contribuciones, los problemas y las solicitudes de funciones son bienvenidas!
No dude en verificar la página de problemas.
¡Dale una osa si este proyecto te ayudó!
Copyright © 2020 Sai Nimmagadda.
Este proyecto tiene licencia MIT.
Este readMe fue generado con ❤️ por ReadMe-MD-Generator