insert_or_updateupdate_or_insert になった。

この関数、find_or_create と一緒に使うことが多くて、その関係か update_or_insert ってよく間違えてエラーってたからうれしい。

*insert_or_update = \&update_or_insert;

とかしてあって、一応まえのも使える。

by typester / at 2006-03-10T11:54:00 / dbic / Comment

$c->forward( $c->view('YAML') ); したとき日本語が数値参照になるなぁ、とかおもったら DBIC::UTF8Columns で get_columns オーバーライドしてなかった。

するようにした。

by typester / at 2006-03-08T10:22:00 / life · dbic / Comment

DBIC::UTF8Columns

昨日のやつ、bast のほうにコミット。次のDBICのリリースに含まれちゃうよ><

使い方はテーブルクラスで

__PACKAGE__->load_components(qw/UTF8Columns Core/);

とかしてロードしておき、

__PACKAGE__->utf8_columns(qw/name description/);

と文字列カラムを指定。

こうすると $table->name$table->get_column('name') でとってくる値は utf-8 フラグが自動的にたつ。

逆に $table->name( $name ); とかでは utf-8 フラグが落とされてから保存される。

utf8_columns で自分で指定するだけじゃなく、テーブル単位で文字列カラムにすべてに対して有効になる機能もあるといいかも?

by typester / at 2006-03-03T14:11:00 / perl · dbic / Comment

DBIC::UTF8Columns

書いた

Template::Stash::ForceUTF8 インスパイア。

by typester / at 2006-03-02T18:54:00 / perl · dbic / Comment

MySQL の DATETIME 型

って、タイムゾーン情報ないから、deflate するとき set_time_zone してタイムゾーンそろえたほうがいいと思った。

あと、inflate 時も floating timezone で帰ってくるから、保存時のタイムゾーンをセットしてあげたほうが良い。

inflate => sub {
    DateTime::Format::MySQL->parse_datetime(shift)
        ->set_time_zone('local');
},
deflate => sub {
    DateTime::Format::MySQL->format_datetime(
        shift->set_time_zone('local') );
},

と思うんだけどどーなんだろ。

決めうちでしかつかわないならいいんかな。

by typester / at 2006-02-22T13:58:00 / perl · dbic / Comment

refactored

sub fuzzyfind { my ( $self, $id ) = @_;

    $id and $id =~ /\D/
        ? ( $self->find( { uuid => $id } ), 1 )
        : $self->find($id);
}

こうか。

by typester / at 2006-02-12T17:46:00 / perl · dbic / Comment

fuzzyfind

sub fuzzyfind { my ( $self, $id ) = @_;

    my ( $exist, $uuid );
    $exist = $self->find( { uuid => $id } ) and $uuid++
        if $id and $id =~ /\w/;

    defined $exist ? ( $exist, $uuid ) : $self->find($id);
}

namingsence by 2ndlife.

* 16:46 コード修正

by typester / at 2006-02-12T16:27:00 / perl · dbic / Comment

下記 CLON::Model::DBIC だと use CLON; な使い方でも warning はでないんだ。唯一の利点かm

clon_server.pl で warning がでるのは require してるせい。どうしようもねーな。

by typester / at 2006-02-07T03:19:00 / dbic / Comment

ためしに CLON の CLON::Model::DBICSchema::Loader ベースにしてみた。

CLON::Model::DBIC Rev.224

sub table {
    my ( $self, $table ) = @_;
    __PACKAGE__->resultset( $self->loader->monikers->{$table} );
}

こんなコードを入れておくことにより、Catalyst::Model::DBIC 互換な $c->model('DBIC')->table('table_name') がそのまま利用でき、CLON はこの書き方をしていたのでこのファイルを書き換えるだけで他は何も変更しなくて良かった。

といってもこれじゃ別に Schema の恩恵にまったくあずかれないし、相変わらず Class::C3 はうるさいし、あんまりいいことない。

by typester / at 2006-02-07T01:38:00 / dbic / Comment

cpanrecent_crawler を Schema::Loader にスイッチ

今朝かいた Catalyst の Model を Schema::Loader でロードってやつを、CPAN Recent Changes のクローラでやってみた。

今までは use MyApp; 方式でロードしていて、それからの変更は以下のような感じ。

[223] (changeset) - Public Projects - Trac

こんな感じで割りとすぐ移行可能。Class::C3 の warning が消えたのがかなりうれしいなぁ。

by typester / at 2006-02-06T22:53:00 / perl · dbic / Comment

1 2 3 4

(Page 3 of 4)