« Trac/任意のSQLを実行する | Main | Gmail Notes »

2010.07.24

Trac/TicketをSQLでいろいろと

TracのTicketをSQLで処理する場合などの参考資料(ってほどのものではありませんが)。基本的に、使用するのは3つのテーブル(Trac0.11.1)。

【ticket】


  • 1チケット(id)に付き1行。

  • 最新の情報が格納されている。

  • type(分類)、time(登録日時)、changetime(更新日時)、component(コンポーネント)、severity(重要度)、priority(優先度)、owner(担当者)、reporter(報告者)、cc(関係者)、version(バージョン)、milestone(マイルストーン)、status(ステータス)、resolution(解決方法)、summary(概要)、description(説明)、keywords(キーワード) の項目を有している。

【ticket_custom】


  • カスタムフィールドの情報が格納されている。

  • 各TicketID(ticket)およびフィールド名(name)単位で0~1レコードずつ存在(2レコード以上存在することはない)。

  • valueには、各TicketIDおよびフィールド名単位で最新の情報(最後に登録/更新された値)が格納されている。

  • 各TicketID単位では0~nレコード存在する(最大で、カスタムフィールドの個数分のレコードが存在する)。

  • 途中でカスタムフィールドを追加した場合、それ以前に作成されていたTicketに対するデータは存在せず、Ticketを更新したタイミングで追加される。

【ticket_change】


  • チケットの更新履歴の情報が格納されている。

  • 各TicketID(ticket)および更新日時(time)単位で、「1つのTicket更新」に関する内容となる。

  • 各TicketIDおよび更新日時、更新対象の項目/フィールド(field)単位で1レコード存在。

  • 更新前の値(oldvalue)と更新後の値(newvalue)が記録されている。

  • 更新日時を上手く処理することで、「ある状態になった日付」を後から追跡することも可能。例えば、ある日付においてチケットがnewから別のステータスに変わった件数、など。

補足


  • Tracでは、日付情報は全てintegerで保持している。

  • SQLでは、date(time,'unixepoch') のような感じで変換することが可能。ただし、Tracを導入している環境によっては、JSTで表記する場合は、date(datetime(time,'unixepoch'), '+09:00:00') のような感じで変換することが可能。日付単位でTicketの修正をする場合、日付の処理を上手くしてあげないと前日のデータとして処理してしまう可能性があります。

  • 日付の処理に関しては、SQLite3 での日付処理や、SQLiteの日付関数あたりが参考になるかと。

ポチッとよろしく!

|

« Trac/任意のSQLを実行する | Main | Gmail Notes »

Subversion・Trac・etc.」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/48956854

Listed below are links to weblogs that reference Trac/TicketをSQLでいろいろと:

« Trac/任意のSQLを実行する | Main | Gmail Notes »