From d7170d520e6ba9b3f5376dd268b9f419a0dc9994 Mon Sep 17 00:00:00 2001 From: dakkar Date: Wed, 8 Feb 2006 16:20:37 +0000 Subject: tentativo di modello... la documentazione di DBIC fa un po' pena git-svn-id: svn://luxion/repos/IscrittiGroLUG/trunk@168 fcb26f47-9200-0410-b104-b98ab5b095f3 --- GroLUG/lib/GroLUG/M/DB.pm | 6 +++--- GroLUG/lib/GroLUG/M/DB/Iscritto.pm | 10 ++++++++++ GroLUG/lib/GroLUG/M/DB/Pagamento.pm | 20 ++++++++++++++++++++ GroLUG/t/m_DB.t | 1 + GroLUG/test_manuali/prova_db.pl | 25 +++++++++++++++++++++++++ 5 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 GroLUG/lib/GroLUG/M/DB/Iscritto.pm create mode 100644 GroLUG/lib/GroLUG/M/DB/Pagamento.pm create mode 100644 GroLUG/test_manuali/prova_db.pl diff --git a/GroLUG/lib/GroLUG/M/DB.pm b/GroLUG/lib/GroLUG/M/DB.pm index e45de9e..193cb7a 100644 --- a/GroLUG/lib/GroLUG/M/DB.pm +++ b/GroLUG/lib/GroLUG/M/DB.pm @@ -4,14 +4,14 @@ use strict; use base 'Catalyst::Model::DBIC::Plain'; my @conn_info = ( - '', - '', + 'dbi:Pg:dbname=iscritti', + 'grolug', '', { RaiseError => 1, PrintError => 0, ShowErrorStatement => 1, TraceLevel => 0 } ); __PACKAGE__->load_classes; -__PACKAGE__->compose_connection( __PACKAGE__, @conn_info ); +#DBIx::Class::Schema->compose_connection( __PACKAGE__, @conn_info ); =head1 NAME diff --git a/GroLUG/lib/GroLUG/M/DB/Iscritto.pm b/GroLUG/lib/GroLUG/M/DB/Iscritto.pm new file mode 100644 index 0000000..32282f5 --- /dev/null +++ b/GroLUG/lib/GroLUG/M/DB/Iscritto.pm @@ -0,0 +1,10 @@ +package GroLUG::M::DB::Iscritto; +use base 'DBIx::Class::Core'; + +__PACKAGE__->load_components(qw(PK::Auto::Pg)); +__PACKAGE__->table('iscritti'); +__PACKAGE__->add_columns(qw(id nome email note)); +__PACKAGE__->set_primary_key('id'); +__PACKAGE__->has_many(pagamenti=>'GroLUG::M::DB::Pagamento','iscritto'); + +1; diff --git a/GroLUG/lib/GroLUG/M/DB/Pagamento.pm b/GroLUG/lib/GroLUG/M/DB/Pagamento.pm new file mode 100644 index 0000000..23ee176 --- /dev/null +++ b/GroLUG/lib/GroLUG/M/DB/Pagamento.pm @@ -0,0 +1,20 @@ +package GroLUG::M::DB::Pagamento; +use base 'DBIx::Class::Core'; +use DateTime::Format::Pg; + +__PACKAGE__->load_components(qw(PK::Auto::Pg)); +__PACKAGE__->table('pagamenti'); +__PACKAGE__->add_columns(qw(id iscritto data_pagamento data_iscrizione data_scadenza prezzo)); +__PACKAGE__->set_primary_key('id'); +__PACKAGE__->belongs_to(iscritto=>'GroLUG::M::DB::Iscritto'); + +for my $col (qw(data_pagamento data_iscrizione data_scadenza)) { + __PACKAGE__->inflate_column( + $col, + { + inflate => sub { DateTime::Format::Pg->parse_datetime(shift) }, + deflate => sub { DateTime::Format::Pg->format_datetime(shift) }, + }); +} + +1; diff --git a/GroLUG/t/m_DB.t b/GroLUG/t/m_DB.t index dee8fd0..fcb9aea 100644 --- a/GroLUG/t/m_DB.t +++ b/GroLUG/t/m_DB.t @@ -1,3 +1,4 @@ +#!perl use strict; use warnings; diff --git a/GroLUG/test_manuali/prova_db.pl b/GroLUG/test_manuali/prova_db.pl new file mode 100644 index 0000000..fcfc7bc --- /dev/null +++ b/GroLUG/test_manuali/prova_db.pl @@ -0,0 +1,25 @@ +#!/usr/bin/perl +use strict; +use warnings; +use GroLUG::M::DB; +use DateTime; + +#use Devel::TraceCalls;trace_calls { Package => [qw(DBIx::Class::Schema DBIx::Class::Storage::DBI)]}; + +my $schema=GroLUG::M::DB->connect('dbi:Pg:dbname=iscritti', + 'grolug', + '', + { RaiseError => 1, PrintError => 0, ShowErrorStatement => 1, TraceLevel => 0 }); + +my $iscritto=$schema->resultset('GroLUG::M::DB::Iscritto')->create({ + nome => '__tizio', + email => 'tizio@qui', +}); + +$iscritto->add_to_pagamenti({ + data_pagamento=>DateTime->now(), + data_iscrizione=>DateTime->now()->subtract(days=>10), + data_scadenza=>DateTime->now()->subtract(days=>10)->add(years=>1), + prezzo=>50}); + +$schema->commit(); -- cgit v1.2.3