プロジェクトをまたがった todo 管理などが弱い。
そこをまとめたいと思い、まずは trac で使われている
DB の構造などを調査することにした。
データは sqlite3 で、ファイルは db/trac.db だ。
これをコンソールから直接いじくってみよう。
壊すといけないのでホームにコピー。
$ sqlite3 trac.db
SQLite version 3.3.6
Enter ".help" for instructions
sqlite>
でsqlite3 クライアントが起動する。
システムコマンドは . から始まる。例えば .tables でテーブル一覧、.output でクエリ結果の出力先変更、.schema でテーブルのスキーマ表示、など。コマンド一覧は .help で確認できる。
sqlite> .tables
attachment node_change session_attribute version
auth_cookie permission system wiki
component report ticket
enum revision ticket_change
milestone session ticket_custom
以上のテーブルが存在する。
attachment | 添付ファイル名一覧。 |
---|---|
auth_cookie | IPとクッキーの対応表。 |
component | チケットの「component」項目の選択肢。 |
enum | チケットのその他の項目の選択しがまとめて入ってる |
mileston | チケットの「mileston」項目の選択肢。 |
node_change | svn の各バージョンごとにどういう変更があったか? |
permission | ユーザごとのパーミッション |
report | レポートを表示するための sql。 |
revision | svn revision とコミットログ |
session | web 画面の session |
session_attribute | セッションの中身 |
system | trac を動作させる上で持ちいるいくつかの変数。svn の現在のバージョンなど。 |
ticket | チケット情報 |
ticket_change | チケットの更新ログ |
ticket_custom | 各チケットのカスタム項目の値 |
version | チケットの「version」項目の値。 |
wiki | wiki の本文。 |
トラックの情報をプロジェクト横断的に集めるのが今回の目的なので、
今回は ticket テーブルだけ見ていればいい。
SELECT * FROM ticket WHERE owner = 'omae' AND status != 'closed'
ruby で書くと次のような感じで取得できる。
#!/usr/local/bin/ruby -Ku
require "sqlite3"
db = SQLite3::Database.new("trac.db")
db.type_translation = true
sql = "SELECT * FROM ticket WHERE owner = 'omae' AND status != 'closed'"
result = db.execute( sql )
result.each do |row|
p row
end
sqlite3 コマンドはどうも複数データベースを同時には開けないようなので、
一つ一つデータベースを開いてセレクトしてくる必要がある。
0 件のコメント:
コメントを投稿