[Jifty-commit] r2704 - in jifty/branches/virtual-models: . lib/Jifty lib/Jifty/Model

jifty-commit at lists.jifty.org jifty-commit at lists.jifty.org
Mon Jan 29 03:40:09 EST 2007


Author: jesse
Date: Mon Jan 29 03:40:09 2007
New Revision: 2704

Added:
   jifty/branches/virtual-models/lib/Jifty/Model/MetadataCollection.pm
   jifty/branches/virtual-models/lib/Jifty/Script/Database.pm   (contents, props changed)
Modified:
   jifty/branches/virtual-models/   (props changed)
   jifty/branches/virtual-models/lib/Jifty/ClassLoader.pm
   jifty/branches/virtual-models/lib/Jifty/Collection.pm

Log:
 r21652 at hualien:  jesse | 2007-01-29 16:39:50 +0800
  *checkpoint


Modified: jifty/branches/virtual-models/lib/Jifty/ClassLoader.pm
==============================================================================
--- jifty/branches/virtual-models/lib/Jifty/ClassLoader.pm	(original)
+++ jifty/branches/virtual-models/lib/Jifty/ClassLoader.pm	Mon Jan 29 03:40:09 2007
@@ -215,9 +215,9 @@
         except  => qr/\.#/,
         inner   => 0
     );
+    # That plugins is module::pluggable, not jdbi
     $models{$_} = 1 for grep {/^($base)::Model::(.*)$/ and not /Collection$/} $self->plugins;
-    $self->models(sort keys %models);
-    for my $full ($self->models) {
+    for my $full (sort keys %models) {
         $self->_require_model_related_classes($full);
     }
         
@@ -226,6 +226,8 @@
 sub _require_model_related_classes {
     my $self = shift;
     my $full = shift;
+    push (@{$self->models}, $full); 
+
     my $base = $self->{base};
         my($short) = $full =~ /::Model::(.*)/;
         Jifty::Util->require($full . "Collection");
@@ -275,10 +277,11 @@
 
 sub models {
     my $self = shift;
+    $self->{models} ||= [];
     if (@_) {
         $self->{models} = ref($_[0]) ? $_[0] : \@_;
     }
-    wantarray ? @{ $self->{models} ||= [] } : $self->{models};
+    wantarray ? @{ $self->{models} } : $self->{models};
 }
 
 

Modified: jifty/branches/virtual-models/lib/Jifty/Collection.pm
==============================================================================
--- jifty/branches/virtual-models/lib/Jifty/Collection.pm	(original)
+++ jifty/branches/virtual-models/lib/Jifty/Collection.pm	Mon Jan 29 03:40:09 2007
@@ -115,6 +115,7 @@
     my $class =$self->record_class();
 
     # We do this as a performance optimization, so we don't need to do the stackwalking to find it
+    Jifty::Util->require($class);
     return $class->new(current_user => $self->current_user);
 }
 

Added: jifty/branches/virtual-models/lib/Jifty/Model/MetadataCollection.pm
==============================================================================
--- (empty file)
+++ jifty/branches/virtual-models/lib/Jifty/Model/MetadataCollection.pm	Mon Jan 29 03:40:09 2007
@@ -0,0 +1,16 @@
+use warnings;
+use strict;
+
+package Jifty::Model::MetadataCollection;
+
+use base qw/Jifty::Collection/;
+
+=head2 record_class
+
+This deals with collections of L<Jifty::Model::Metadata>s.
+
+=cut 
+
+sub record_class { 'Jifty::Model::Metadata' }
+
+1;

Added: jifty/branches/virtual-models/lib/Jifty/Script/Database.pm
==============================================================================
--- (empty file)
+++ jifty/branches/virtual-models/lib/Jifty/Script/Database.pm	Mon Jan 29 03:40:09 2007
@@ -0,0 +1,64 @@
+use warnings;
+use strict;
+
+package Jifty::Script::Database;
+use base qw/App::CLI::Command/;
+
+
+use File::Path ();
+
+
+=head1 NAME
+
+Jifty::Script::Database 
+
+=head1 DESCRIPTION
+
+When you're getting started with Jifty, this is the server you
+want. It's lightweight and easy to work with.
+
+=head1 API
+
+=head2 options
+
+
+=cut
+
+sub options {
+    (
+     'dump'       => 'dump',
+    )
+}
+
+=head2 run
+
+
+=cut
+
+sub run {
+    my $self = shift;
+    Jifty->new();
+    my %content = {};
+ foreach my $model (Jifty->class_loader->models, qw(Jifty::Model::Metadata Jifty::Model::ModelClass Jifty::Model::ModelClassColumn)) {
+        next unless $model->isa('Jifty::Record');
+        my $collection = $model."Collection";
+        Jifty::Util->require($collection);
+        my $records = $collection->new;
+        $records->unlimit();
+
+        foreach my $item(@{$records->items_array_ref}) {
+            my $ds = {};
+             for ($item->columns) {
+                 next if $_->virtual;
+                $ds->{$_->name} = $item->__value($_->name);
+             }
+            $content{$model}->{$item->id} = $ds;
+        }
+        
+
+    }
+    print Jifty::YAML::Dump(\%content)."\n";
+    
+}
+
+1;


More information about the Jifty-commit mailing list