ArkのData::Modelサポート(1) 認証情報保存先プラグインを作ってみた

| コメント(0) | トラックバック(2)

ArkData::Model対応として、Ark::Plugin::Authentication::Store::Data::ModelArk::Plugin::Authentication::Store::Data::Model::Fastというプラグインモジュールを作ってみました。

githubでforkしています。

http://github.com/gardejo/ark-perl/tree/master

前者は普通に$model->getするのに対して、後者はインデックスを使って$model->lookupしているのが違いです。別々のモジュールに分ける必要性は、多分ないです(モジュール内で吸収すべきですね)。

目下、開発中の私のアプリケーションで満足に動いているのですが、あくまでまだ実験です。

留保の理由は以下の通りです。

$infoをどう使ったものか......

around 'find_user' => sub {
    my $prev = shift->(@_);
    return $prev if $prev;

    my ($self, $id, $info) = @_; # How I intend to use $info?

    my $model = $self->app->model( $self->data_model_model );

    my $condition = {
        where => [
            $self->data_model_user_field => $id,
        ],
        limit => 1,
    };

    my $iterator = $model->get( $self->data_model_target => $condition );
    return
        unless $iterator;

    my $user = $iterator->next;
    # ...

ご覧のように、$infoを使っていません。

$c->autenticate()の引数に$c->req->paramsをそのまま渡すのかと思っていましたが、考えてみればそんな義理はないので、以下のようにSELECT条件を書くのが良いのかなと思います。

    $info = defined $info ? $info : {};
    %$info = (
        (
            where => [
                $self->data_model_user_field => $id,
            ],
            limit => 1,
        ), %$info
    );

他にも、どうせ$iteratorが1回回ったら終わりなので、limit => 1が必要なのかどうかといった疑問もあります。むしろData::Modelの使い方の話かも知れませんが、実測していないのでどちらの方が効率がよいのか、まだ分かっていません。

テストは通しましたが、DB作成を生DBIではなく、折角なのでData::Modelの自前で作った方が良かったかも、とも思っています。

githubデビュー

ところで、このささやかなモジュールの公開が、私のgithubデビューでした。同時に、gitデビューでもありました。Subversionから安易に流れようとTortoise gitを使おうとしたのですが、push周りの設定がすぐには分からなかったので、生gitを叩きました。後日、覚え書き程度にpushに成功するまでのメモを記しておこうと思います。

なお、今回の笑うポイントは、初回push時に追加ファイルをpushし忘れたということです。あぁ、情けない......。と思ったら、2回目のpush時もテストの追加を忘れていたということが分かって、やっぱり夜更けに生産活動をするものではないなと思いました。

トラックバック(2)

コメントする

筆者"Gardejo"について

  • Twitter: @gardejo
  • GitHub: gardejo
  • CodeRepos: gardejo
  • CPAN: MORIYA

このサイトについて

Eorzea System Worksは、架空のシステム開発結社です。

FF14.name (FinalFantasyXIV.name)では、アヴァター(プレイヤーキャラクター)の管理システムやイベント出欠・リマインダシステムや、リンクシェル(LS)運営・管理システムやDKPシステムなどを設計・開発・公開する予定です。

関連サイト

関連サイトでは、他にもFF14に関連するサイトをいくつか紹介しています。

リンク, トラックバック歓迎

このブログへのリンク(どのページでも構いません)やトラックバックを歓迎します。

設計・開発・運用の参考にさせていただきますので、コメントもお気軽にお寄せください!

個別の記事に対するご意見などのほか、目安箱もご用意しています。

このブログ記事について

このページは、Gardejoが2009年7月10日 02:46に書いたブログ記事です。

ひとつ前のブログ記事は「Data::Modelでのリレーション(1)」です。

次のブログ記事は「ArkのData::Modelサポート(2) 認証情報保存先プラグインのAPIをDBIx::Class版に合わせた」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

2014年2月

            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28  

やや真面目なサイト