スタックオーバーフローリソースを効率的に公開するためのGraphQLの実装(コメント、投稿、回答、投票など)
Stack ExchangeにはGraphQLエンドポイントがないので、作成しました。上記のライブAPIは、スキーマが構築されているため、今のところPOCモードです。現在、https://health.stackexchange.com/からコンテンツを提供しており、パイプライン&インフラが強化され、構築されているため、毎週更新されます。これは現在、アプリサービスでホストされているため、最小限のレイテンシーを期待してください。これが発生した場合は、我慢してください。最初の「ウェイクアップ」の後、遊び場/リクエストが燃え上がるはずです。これがある程度の牽引力を得ると、可用性が向上します。
ローカルで実行する:
docker-compose up
http:// localhost:8080にアクセスして、遊び場の使用を開始するか、いくつかのクエリでエンドポイントを押してください!たとえば、サブコミュニティで最高のスコアリングQ&Aページに関する情報を取得するには:
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
}
}
}
}
}
}
サーバーは、別のバックエンドが存在する場合、Dockerコンテナとしても利用できます。
docker run -e SERVER='<dbhost>' -e UNAME='<dbUname>' -e PASS='<dbPass>' snimmagadda/stack-exchange-graphql-server:latest
またはソースから実行するには:
go run cmd/server.go一部の環境変数は、ローカルで実行するように設定する必要があります
| 鍵 | タイプ | 説明 | 例 |
|---|---|---|---|
SERVER | 弦 | DBホスト | localhost |
SCHEMA | 弦 | アプリDBスキーマ | stacke |
UNAME | 弦 | アプリDBユーザー名クレジット | アッパーユー |
PASS | 弦 | アプリDBパスワードクレジット | SuperSecret123 |
SERVER 、MySQL DBのホスト名である必要があります。コンテンツを提供するために、GraphQL Serverは、人口型のstackeスキーマを期待しています。
TODO:構成可能なパラマ
go build cmd/server.go開発のためのオプションは、より合理化されたルートが来るために簡単に柔軟になります...今のところ、以下が利用可能です。
docker(またはtweake and 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行が存在します。スキーマの挿入物として使用されます。
上記のテーブルに変数を使用して、A.ENVファイルを作成(またはコピー)して、ローカルGraphQLサーバーを構成します。
サーバーを開始します:
go run cmd/server.go
TODO私はおそらくいくつかの洗練を行い、弾性バックエンドのようなものに交換するつもりですが、今のところここに早期のセットアップがあります。 Stack Exchangeが発行するXMLダンプは、スケジュールでスプリングバッチで書かれたジョブを使用して、インデックス付きリレーショナルバックエンドにインポートされます。 GraphQLサーバーは、このバックエンドから読み取り、スタック交換データを公開します。 
?サイ・ニンマガダ
このプロジェクトは現在ビルドモードにあります。貢献、問題、機能のリクエストは大歓迎です!
[問題]ページを自由に確認してください。
このプロジェクトがあなたを助けたなら、♥を与えてください!
Copyright©2020 Sai nimmagadda。
このプロジェクトはMITライセンスです。
このREADMEは、readme-md-generatorによって❤️で生成されました