Extend Cafe tests.
Amiri Barksdale at Home [Wed, 2 Jun 2010 21:57:45 +0000 (14:57 -0700)]
.gitignore
lib/DBIx/Class/ResultSource/MultipleTableInheritance.pm
sql-test.pl [deleted file]
t/sql/MTITest-0.1-PostgreSQL.sql
vdef [deleted file]

index b701be6..6193840 100644 (file)
@@ -6,3 +6,4 @@ Makefile
 pm_to_blib
 *.sw?
 *.tmp
+src
index d492490..6e948f7 100644 (file)
@@ -276,7 +276,7 @@ BEGIN {
 
   *names_of = sub (@cols) { map $_->{name}, @cols };
 
-  *function_body = sub ($name, $args, $body_parts) {
+  *functionbody = sub ($name, $args, $body_parts) {
     my $arglist = join(
       ', ',
         map "_${\$_->{name}} ${\uc($_->{data_type})}",
@@ -368,7 +368,7 @@ method view_definition () {
   # NOTE: this assumes a single PK col called id with a sequence somewhere
   # but nothing else -should- so fixing this should make everything work
   my $insert_func =
-    function_body
+    functionbody
       $self->name.'_insert',
       \@body_cols,
       [
@@ -396,7 +396,7 @@ method view_definition () {
   # UPDATE function
 
   my $update_func =
-    function_body
+    functionbody
       $self->name.'_update',
       [ @pk_cols, @body_cols ],
       [ map $sqla->update(
@@ -409,7 +409,7 @@ method view_definition () {
   # DELETE function
 
   my $delete_func =
-    function_body
+    functionbody
       $self->name.'_delete',
       [ @pk_cols ],
       [ map $sqla->delete($_->name, $pk_where), @sources ];
@@ -438,27 +438,21 @@ This only works with PostgreSQL for the moment.
 =head1 SYNOPSIS
 
     {
-        package MyApp::Schema::Result::Coffee;
+        package Cafe::Result::Coffee;
 
-        __PACKAGE__->table_class(
-            'DBIx::Class::ResultSource::MultipleTableInheritance'
-        );
+        use strict;
+        use warnings;
+        use parent 'DBIx::Class::Core';
+        use aliased 'DBIx::Class::ResultSource::MultipleTableInheritance'
+            => 'MTI';
+
+        __PACKAGE__->table_class(MTI);
         __PACKAGE__->table('coffee');
         __PACKAGE__->add_columns(
-          "id",
-          {
-            data_type => "integer",
-            default_value => "nextval('coffee_seq'::regclass)",
-            is_auto_increment => 1,
-            is_foreign_key => 1,
-            is_nullable => 0,
-            size => 4,
-          },
-          "flavor",
-          {
-            data_type => "text",
-            default_value => "good",
-          },
+            "id", { data_type => "integer" },
+            "flavor", {
+                data_type => "text",
+                default_value => "good" },
         );
 
         __PACKAGE__->set_primary_key("id");
@@ -467,19 +461,14 @@ This only works with PostgreSQL for the moment.
     }
 
     {
-        package MyApp::Schema::Result::Sumatra;
+        package Cafe::Result::Sumatra;
 
-        use parent 'Coffee';
+        use parent 'Cafe::Result::Coffee';
 
         __PACKAGE__->table('sumatra');
 
-        __PACKAGE__->add_columns(
-          "aroma",
-          {
-            data_type => "text",
-            default_value => undef,
-            is_nullable => 0,
-          },
+        __PACKAGE__->add_columns( "aroma",
+            { data_type => "text" }
         );
 
         1;
@@ -487,16 +476,16 @@ This only works with PostgreSQL for the moment.
     
     ...
 
-    my $schema = MyApp::Schema->connect($dsn);
-
-    my $cup = $schema->resultset('Sumatra')->new;
+    my $schema = Cafe->connect($dsn,$user,$pass);
 
-    print STDERR DwarnS $cup->columns;
+    my $cup = $schema->resultset('Sumatra');
 
-        $VAR1 = 'id';
-        $VAR2 = 'flavor';
-        $VAR3 = 'aroma';
+    print STDERR Dwarn $cup->result_source->columns;
 
+        "id"
+        "flavor"
+        "aroma"
+        ..
 
 Inherit from this package and you can make a resultset class from a view, but
 that's more than a little bit misleading: the result is B<transparently
diff --git a/sql-test.pl b/sql-test.pl
deleted file mode 100644 (file)
index 4027451..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/usr/bin/env perl
-
-use lib "$ENV{HOME}/wdir/SQL-Abstract/lib";
-use lib "$ENV{HOME}/wdir/SQL-Abstract/t/lib";
-
-use Test::SQL::Abstract::Util qw(
-  mk_name
-  mk_value
-  mk_alias
-  mk_expr
-  :dumper_sort
-);
-
-use SQL::Abstract;
-
-my $sqla = SQL::Abstract->create(1);
-
-warn $sqla->dispatch(
-  { -type => 'list', args => [
-    mk_name('foo')
-  ] });
index cd2386e..28ae17a 100644 (file)
@@ -1,6 +1,6 @@
 -- 
 -- Created by SQL::Translator::Producer::PostgreSQL
--- Created on Tue Jun  1 18:40:12 2010
+-- Created on Tue Jun  1 20:00:58 2010
 -- 
 --
 -- Table: just_a_table
diff --git a/vdef b/vdef
deleted file mode 100644 (file)
index b097bcc..0000000
--- a/vdef
+++ /dev/null
@@ -1,58 +0,0 @@
-sub argify (@cols) {
-  map $_->new(%$_, name => '_'.$_->name), @cols;
-}
-
-sub body_cols ($source) {
-  grep $_->name ne 'id', $source->all_cols;
-}
-
-my @pk_col = ($table->col('id'));
-
-my @sources = grep defined, $table, $super_view;
-
-my @body_cols = map body_cols($_), @sources;
-
-CREATE VIEW $view_name =>
-  SELECT {
-    (map $_->qualify, @pk_col),
-    @body_cols,
-  } FROM {
-    $super_view ? ($table->join($super_view)->using(@pk_col)) : $table
-  };
-
-my ($now, $next) = grep defined, $super_view, $table;
-
-CREATE FUNCTION "${view_name}_insert" =>
-  (argify @body_cols)
-  => RETURNS VOID => AS {
-    INSERT INTO { $now } (body_cols $now)
-      => VALUES (argify body_cols $now);
-    if ($next) {
-      INSERT INTO { $next } ($next->all_cols)
-        => VALUES {
-             $root_table->col('id')->sequence->currval,
-             argify body_cols $next
-           };
-    }
-  };
-
-my $pk_eq = AND( map (expr { $_ == argify $_ }), @pk_col);
-
-CREATE FUNCTION "${view_name}_update" =>
-  (argify @pk_col, @body_cols)
-  => RETURNS VOID => AS {
-    foreach my $s (@sources) {
-      UPDATE { $s } SET { map ($_ => argify $_), body_cols $s }
-        WHERE { $pk_eq };
-    }
-  };
-
-CREATE FUNCTION "${view_name}_delete" =>
-  (argify @pk_col)
-  => RETURNS VOID => AS {
-    foreach my $s (@sources) {
-      DELETE FROM { $s } WHERE { $pk_eq };
-    }
-  };
-
-