cvsuser     02/08/16 09:07:06

  Modified:    P5EEx/Blue/P5EEx/Blue Repository.pm
  Log:
  began work on documenting a revised API
  
  Revision  Changes    Path
  1.22      +83 -2     p5ee/P5EEx/Blue/P5EEx/Blue/Repository.pm
  
  Index: Repository.pm
  ===================================================================
  RCS file: /cvs/public/p5ee/P5EEx/Blue/P5EEx/Blue/Repository.pm,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -w -r1.21 -r1.22
  --- Repository.pm     2 Aug 2002 19:33:17 -0000       1.21
  +++ Repository.pm     16 Aug 2002 16:07:06 -0000      1.22
  @@ -1,6 +1,6 @@
   
   #############################################################################
  -## $Id: Repository.pm,v 1.21 2002/08/02 19:33:17 spadkins Exp $
  +## $Id: Repository.pm,v 1.22 2002/08/16 16:07:06 spadkins Exp $
   #############################################################################
   
   package P5EEx::Blue::Repository;
  @@ -121,6 +121,69 @@
       # OBJECT FACTORY
       $obj = $rep->object($table, $key);
   
  +    #################################################
  +    # NEW PROPOSED API (working)
  +    #################################################
  +
  +    # PHYSICAL
  +    $row       = $rep->_select_row   ($table, \@cols,         \%paramvalues);
  +    $rowhash   = $rep->_select_hash  ($table, undef,          \%paramvalues);
  +    $rowhash   = $rep->_select_hash  ($table, \@cols,         \%paramvalues);
  +    $rows      = $rep->_select_rows  ($table, \@cols,         \%paramvalues, 
\@ordercols, $startrow, $endrow);
  +    $value     = $rep->_select_values($table, \@cols,         \%paramvalues);
  +    @values    = $rep->_select_values($table, \@cols,         \%paramvalues);
  +    $ok        = $rep->_insert_row   ($table, \@cols, \@row);
  +    $ok        = $rep->_insert_rows  ($table, \@cols, \@rows);
  +    $ok        = $rep->_update_row   ($table, \@cols, \@row,  \@keycols);
  +    $ok        = $rep->_update_rows  ($table, \@cols, \@row,  \%paramvalues);
  +    $ok        = $rep->_delete_row   ($table, \@cols, \@row,  \@keycols);
  +    $ok        = $rep->_delete_rows  ($table,                 \%paramvalues);
  +    $ok        = $rep->_store_row    ($table, \@cols, \@row,  \@keycols);
  +    $ok        = $rep->_store_hash   ($table, $rowhash,       \@keycols);
  +    $nrows     = $rep->_store_rows   ($table, \@cols, \@rows, \@keycols);
  +    $nrows     = $rep->_store_rows   ($table, \@cols, \@rows, \@keycols, 
\%paramvalues);
  +
  +    # LOGICAL
  +    $row       = $rep->select_row    ($table, \@cols,         \%paramvalues);
  +    $rowhash   = $rep->select_hash   ($table, undef,          \%paramvalues);
  +    $rowhash   = $rep->select_hash   ($table, \@cols,         \%paramvalues);
  +    $rows      = $rep->select_rows   ($table, \@cols,         \%paramvalues, 
\@ordercols, $startrow, $endrow);
  +    $value     = $rep->select_values ($table, \@cols,         \%paramvalues);
  +    @values    = $rep->select_values ($table, \@cols,         \%paramvalues);
  +    $ok        = $rep->insert_row    ($table, \@cols, \@row);
  +    $ok        = $rep->insert_rows   ($table, \@cols, \@rows);
  +    $ok        = $rep->update_row    ($table, \@cols, \@row,  \@keycols);
  +    $ok        = $rep->update_rows   ($table, \@cols, \@row,  \%paramvalues);
  +    $ok        = $rep->delete_row    ($table, \@cols, \@row,  \@keycols);
  +    $ok        = $rep->delete_rows   ($table,                 \%paramvalues);
  +    $ok        = $rep->store_row     ($table, \@cols, \@row,  \@keycols);
  +    $ok        = $rep->store_hash    ($table, $rowhash,       \@keycols);
  +    $nrows     = $rep->store_rows    ($table, \@cols, \@rows, \@keycols);
  +    $nrows     = $rep->store_rows    ($table, \@cols, \@rows, \@keycols, 
\%paramvalues);
  +
  +    $key    = $rep->get_key ($table, \@cols, \@values);
  +    $key    = $rep->get_key ($table, \@cols, \@values, \@keycolidx);
  +    @keys   = $rep->get_keys($table, \%paramvalues);
  +    @values = $rep->get_values($table, $key, \@cols);
  +    $value  = $rep->get_value ($table, $key, "first_name");
  +    $rep->set_values($table, $key, \@cols, \@values);
  +    $rep->set_value ($table, $key, $column, $value);
  +
  +    $relation_names  = $rep->get_relation_names($table);
  +    $relation_labels = $rep->get_relation_labels($table);
  +    $relation_def    = $rep->get_relation_def($table, $relation_name);
  +    @keys            = $rep->get_related_keys($table, $key, $relation_name);
  +
  +    # OBJECT-ORIENTED
  +    $class = $table;
  +    $obj = $rep->object($class, $key);
  +
  +    # OBJECT-ORIENTED (on RepositoryObject)
  +    $relation_names  = $obj->get_relation_names();
  +    $relation_labels = $obj->get_relation_labels();
  +    $relation_def    = $obj->get_relation_def($relation_name);
  +    @objs            = $obj->get_related_objects($relation_name);
  + 
   =cut
   
   =head1 DESCRIPTION
  @@ -149,7 +212,7 @@
   accurately called logical-to-physical-relational mapping.
   
   Despite the fact that the Repository is a relational data storage
  -abstraction, persistent objects (i.e. Entity Widgets) can be built to
  +abstraction, persistent objects (i.e. RepositoryObjects) can be built to
   save and restore their state from a Repository.  Furthermore, the
   built-in support for non-scalar fields (references to arbitrarily
   complex perl data structures) and the ability for Entity Widgets
  @@ -174,6 +237,24 @@
     * data source independence
     * no save/restore
     * devel/test/prod environments
  +
  +What follows are some developing thoughts on this API...
  +
  +  * The API should have two levels:
  +     = physical
  +       - no error-checking/defaults/security
  +       - provided by the driver
  +       - based on a physical table segment
  +       - application should never call this (private methods)
  +     = logical
  +       - error-checking
  +       - constraints (foreign key, check constraints)
  +       - column-level and row-level security
  +       - support transactions, caching, volatility
  +       - auditing
  +
  +  * Isolation levels
  +     = do writers block readers, etc.
   
   =cut
   
  
  
  


Reply via email to