ココらへんでDBにデータを入れられるようにModelを作ったので、APIを叩いた結果を入れるコマンドを今度は作る。
Laravelにははじめから artisan というツールが用意されていて、ここに自分で作ったコマンドを増やしていくことができる。
デフォルトで入っているコマンドたちは php artisan list
と叩くと出てきてくれる。
ここに自分用のコマンドを生やしてみよう。
$ php artisan make:command FetchGitHubRepo Console command created successfully.
これでコマンドを作るための雛形が作られた。
まずは簡単に 15日目: GitHubのAPIを叩いてとりあえず中身を表示させる - わすれっぽいきみえ で実行した結果が見れるだけのコマンドを作ってみる。
<?php namespace App\Console\Commands; use Github\Client; use Illuminate\Console\Command; class FetchGitHubRepo extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'fetch:github {repo}'; /** * The console command description. * * @var string */ protected $description = 'Fetch GitHub Repo data and save DB'; /** * GitHub API client. * * @var Client */ private $client; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); $this->client = new \Github\Client(); } /** * Execute the console command. * * @return mixed */ public function handle() { $repositories = $this->client->api('user')->repositories($this->argument('repo')); $this->info(json_encode($repositories)); } }
実行してみる。
$ php artisan fetch:github kimikimi714 [{"id":30191594,"name":"ansible_lesson","full_name":"kimikimi714\/ansible_... (長すぎるので省略)
いけたっぽい。 ではこのデータの中から必要な情報をそれぞれ引っこ抜いてこよう。
自分のリポジトリの中でPRしてるやつ見ても正直面白くないので、せっかくだし
Vue.jsを使って実験してみる。*1
本当はPRを限定したくはないが、一応自分が参加したものを使うことにしよう。
そこでおこないたいことは
- UserにPR参加者のデータをDBに入れる。
- ReviewにPRのデータをDBに入れる。
- CommentにPRについたコメントを入れる。そのうちissueコメント(PRそのものに付いたコメント)とreviewコメント(ファイルの特定差分についてついたコメント)を区別してDBに入れる。
だいたいこんな感じ。
最初に書いた差分のままだとrepositoryの中の特定PRが選択できない状態なので、PRの番号を指定できるように変更しようと思う。
が、今日はここまで。
*1:実はこのためにも翻訳に参加してみたいと思っていた