やってみる

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

GitHubアカウントDBを修正した

前回のDBを修正した。

成果物

GitHubGitHub.Accounts.Database

開発環境

WebService

理由

AccessTokenを識別するためのidが必要だったので追加した。

テーブル

AccessTokensテーブルにIdOnGitHub, Note列を追加した。

before

名前 Key unique NotNull
Id integer P - -
AccountId integer F -
AccessToken text - -
Scopes text - - -

after

名前 Key unique NotNull
Id integer P - -
AccountId integer F -
IdOnGitHub integer -
Note text - - -
AccessToken text - -
Scopes text - - -

IdOnGitHub

List your authorizations APIで取得できるid値に該当する。

前回AccessTokenさえあればいいと思っていたが違った。APIを叩いたとき、Tokenが表示されない。結果、Tokenの特定にToken自身を使えない。セキュリティのためTokenの表出を避けていると思われる。代わりにidで識別する必要が生じる。

しかし、idはGitHubparsonal access token作成ページでは確認できない。APIを叩き、note(Token Description)やscopesが一致したものを同一とみなし、そのid値を取得する必要がある。

integer/textどちらかで迷った。

SQLiteで使える型

SQLiteのサイトによると、使える型は以下のとおり。

説明
NULL NULL値
INTEGER 符号付き整数。値の大きさに応じて1,2,4,6,8Byteに格納する
REAL 8ByteのIEEE浮動小数点数値。
TEXT 文字列。DBエンコーディング(UTF-8,UTF-16BE,UTF-16LE)次第。
BLOB バイナリデータ(入力値そのまま)
8Byte

SQLiteにてinteger型こちらによるとintegerは8byteとある。

Byte bit 2n 総数 MAX MIN
1Byte 8bit 28 256 +127 -128
2Byte 16bit 216 65,536 +32767 -32768
4Byte 32bit 232 4,294,967,296 +2,147,483,647 -2147483648
8Byte 64bit 264 18,446,744,073,709,551,616 +9,223,372,036,854,775,807 -9,223,372,036,854,775,808
Byte bit SI 命数法
1Byte 8bit 256 256
2Byte 16bit 65Kilo 6.5万
4Byte 32bit 4Giga 42億9696万
8Byte 64bit 18Exa 1844京6744兆737億

8Byte(64bit)なら十分足りそうなので、integer型にする

Note

List your authorizations APIで取得できるnote値に該当する。

IdOnGitHubScopesでの同一確認や絞込みが面倒なとき、Note値で代用する手抜き手法を使えるようにしたいため用意した。idがあれば不要なおまけ要素。

所感

APIではTokenが取得できないことは、GitHubのAccessToken一覧を取得するバッチをつくった(失敗)のときに気づいていた。忘れていた。

これを忘れていたということを、GitHubAPIツールを改良したいのときにも言っていた。

忘れるペース速すぎ。ブログを書いていると思い出すきっかけになり助かる。証拠が残り全文検索できるから自分の脳より頼れる。