Skip to content

Instantly share code, notes, and snippets.

@rendaaaaaa
Created October 16, 2012 15:50
Show Gist options
  • Save rendaaaaaa/3900105 to your computer and use it in GitHub Desktop.
Save rendaaaaaa/3900105 to your computer and use it in GitHub Desktop.
Hokkaido.pm Casual #6

Hokkaido.pm Casual #6

自己紹介

  • twitter: @RENDAAAAAA
  • 職: SE
  • ニコニコ: 中毒

本日のテーマは

  • O/R Mapperということで
  • Tengを使ってみました

Day1(9月末ごろ?)

  • cpan install Teng
    • テストでこける(windows7, Strawberry Perl v5.14.2)

こういうときどーしてるんでしょ?

Day2(10月上旬)

  • 現実逃避中

Day2

  • DiabloIII Inferno Act4 クリア!

Alt text

  • いまごろパッチ 1.0.5 がでてるよ!

Day3(10/17)

Day3

  • C(Create)

Day3

  • C(Create)
  • の前にテーブルをつくっとかないと
    • create table user (id, name);

Day3

  • テーブル情報は読み込める
    my $teng = Teng::Schema::Loader->load(
        connect_info => ['dbi:SQLite:./sample.db'],
        namespace    => 'Proj::DB'
    );

Day3

  • C(Create)
    $teng->insert('user', +{id => 1, name => 'user no01'});

Day3

  • R(Read)
    my $row = $teng->single('user', +{id => '1'});
    say "id:   ", $row->id;
    say "name: ", $row->name;
  • ここまではよかった

Day3

  • U(Update)
    $row = $teng->single('user', +{id => '2'});
    $row->update(+{name => 'user noX'});

sqliteで確認すると...レコードがない?

Day3

  • D(Delete)
    $row = $teng->single('user', +{id => '3'});
    $row->delete();
  • sqliteで確認すると...関係ないのも消えてる?

とはいえ

  • 数十行でデータベースからデータをとってこれるのはかんたん
  • くじけないこころ

本日のコード

    #!perl

    use strict;
    use warnings;
    use Teng::Schema::Loader;
    use feature 'say';

    my $teng = Teng::Schema::Loader->load(
            connect_info => ['dbi:SQLite:./sample.db'],
            namespace    => 'Proj::DB'
            );

    $teng->delete('user');
    $teng->insert('user', +{id => 1, name => 'user no01'});
    $teng->insert('user', +{id => 2, name => 'user no02'});
    $teng->insert('user', +{id => 3, name => 'user no03'});
    $teng->insert('user', +{id => 4, name => 'user no04'});
    $teng->insert('user', +{id => 5, name => 'user no05'});

    my $row = $teng->single('user', +{id => '1'});
    say "id:   ", $row->id;
    say "name: ", $row->name;

    #$row = $teng->single('user', +{id => '2'});
    #$row->update(+{name => 'user noX'});
    #
    #$row = $teng->single('user', +{id => '3'});
    #$row->delete();

    my $itr = $teng->search('user', +{order_by => 'id'});
    while (my $row2 = $itr->next) {
        say "id:   ", $row2->id;
        say "name: ", $row2->name;
    }

というわけで

  • ご清聴ありがとうございました!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment