やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

GitHubリポジトリごとにライセンスを管理するDB(テーブル)を作成した

自作リポジトリのライセンスを管理するために。

成果物

GitHubGitHub.Repository.Licenses.Database.Create.201703140912

開発環境

前回まで

http://ytyaru.hatenablog.com/entry/2017/08/15/000000
http://ytyaru.hatenablog.com/entry/2017/08/16/000000
http://ytyaru.hatenablog.com/entry/2017/08/21/000000
http://ytyaru.hatenablog.com/entry/2017/08/21/000000
http://ytyaru.hatenablog.com/entry/2017/08/22/000000

ライセンスでのリポジトリ検索や、ライセンス管理の自動化ができるかもしれない。その足がかりとしてDBを作る。

今回DBのベースは以下。

今回

Licensesテーブルを追加する。

create table Licenses(
    Id                  integer primary key,
    RepositoryId        integer not null,
    LicenseId           integer,
    foreign key(RepositoryId) references Repositories(Id)
); 

自分のリポジトリ管理DBに、ライセンス用テーブルを追加する。

LicenseId

LicenseId前回作ったライセンスのマスターDBのLicensesテーブルのId列値を使う。ほかのSQLite3ファイルになるため外部キー制約が使えないのが悔しい。

別テーブルにした理由

わざわざRepositoriesテーブルと別にしたのは、複数ライセンス時に複数レコードを作成できるようにしたかったから。しかし、GitHubAPIでは1リポジトリ1ライセンスしか取得できなさそうな感じ。

既存のDBにテーブル新規追加

既存のDBGitHub.Repositories.ytyaru.sqlite3ファイルにLicensesテーブルを追加したいときは、今回のLicenses.sqlファイルを使えばいい。以下のようなコマンドになる。

sqlite3 GitHub.Repositories.ytyaru.sqlite3 < Licenses.sql

これで既存のレコードをそのまま使える。

所感

いまのところ私のリポジトリのライセンスはすべてCC0なのであまり意味はないのだが。