Uma implementação do GraphQL para expor os recursos de transbordamento da pilha com eficiência (comentários, postagens, respostas, votos, etc)
O Stack Exchange não possui um endpoint do GraphQL, então eu fiz um. A API ao vivo acima está no modo POC por enquanto, pois o esquema é construído. Atualmente, ele está servindo conteúdo em https://health.stackexchange.com/ e é atualizado semanalmente com mais por vir, pois o pipeline & infra são reforçados e construídos. Espere uma quantidade mínima de latência, porque atualmente está hospedado em um serviço de aplicativo, que será divulgado durante períodos de baixa resposta. Se isso acontecer, seja paciente e o playground/solicitações deverá aparecer após o primeiro 'despertar'. Se isso receber alguma tração, a disponibilidade será aumentada.
Para executar localmente:
docker-compose up
E visite http: // localhost: 8080 para começar a usar o playground ou acertar o terminal com algumas consultas! Por exemplo, para obter informações sobre as páginas de perguntas e respostas com maior pontuação em uma subcomunidade:
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
}
}
}
}
}
}
O servidor também está disponível como um contêiner do Docker, desde que exista um back -end separado:
docker run -e SERVER='<dbhost>' -e UNAME='<dbUname>' -e PASS='<dbPass>' snimmagadda/stack-exchange-graphql-server:latest
ou para fugir da fonte:
go run cmd/server.goAlgumas variáveis de ambiente devem ser definidas para executar localmente
| Chave | Tipo | Descrição | Exemplo |
|---|---|---|---|
SERVER | Corda | Host do banco de dados | LocalHost |
SCHEMA | Corda | Esquema do DB do App | Stacke |
UNAME | Corda | App DB de credibilidade de nome de usuário | AppUser |
PASS | Corda | Credor de senha do aplicativo db | SuperSecret123 |
SERVER deve ser o nome do host de um db mysql. Para servir o conteúdo, o GraphQL Server espera um esquema stacke povoado.
TODO: parâmetros configuráveis ...
go build cmd/server.goAs opções de desenvolvimento são prontamente flexíveis, com rotas mais simplificadas por vir ... por enquanto, o seguinte está disponível:
Execute o back-end apenas com o Docker (ou Tweak e 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 linhas aqui serão usadas como inserções no seu esquema.
Crie (ou cópia) um arquivo .env com as variáveis na tabela acima definida para configurar o servidor grafql local.
Inicie o servidor:
go run cmd/server.go
TODO Provavelmente vou fazer algum refinamento e trocar por algo como um back -end elástico, mas por enquanto aqui está a configuração inicial. Os dumps XML publicados pela Stack Exchange são importados para um back -end relacional indexado usando um trabalho escrito com o lote da primavera em um cronograma. O servidor GraphQL lê a partir deste back -end para expor dados de troca de pilha. 
? Sai Nimmagadda
Este projeto está atualmente em modo de construção. Contribuições, questões e solicitações de recursos são bem -vindos!
Sinta -se à vontade para verificar a página de problemas.
Dê a um ️ se este projeto o ajudar!
Copyright © 2020 Sai Nimmagadda.
Este projeto está licenciado pelo MIT.
Este readme foi gerado com ❤️ por readme-md-gerador