[system] / trunk / webwork-modperl / lib / WeBWorK / DB.pm Repository:
ViewVC logotype

View of /trunk/webwork-modperl/lib/WeBWorK/DB.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 798 - (download) (as text) (annotate)
Fri Mar 21 23:30:16 2003 UTC (10 years, 3 months ago) by sh002i
File size: 9102 byte(s)
initial support for WWDBv2:
        - DB.pm finished (except for getGlobalUser{Set,Problem} methods)
        - schema modules for password, permission, key, and user with
          WWDBv1 hash-bashed backends
        - GDBM driver
        - wwdb command-line frontend
-sam

    1 ################################################################################
    2 # WeBWorK mod_perl (c) 2000-2002 WeBWorK Project
    3 # $Id$
    4 ################################################################################
    5 
    6 package WeBWorK::DB;
    7 
    8 =head1 NAME
    9 
   10 WeBWorK::DB - interface with the WeBWorK databases (WWDBv2).
   11 
   12 =cut
   13 
   14 use strict;
   15 use warnings;
   16 use WeBWorK::Utils qw(runtime_use);
   17 
   18 use constant TABLES => qw(password permission key user set set_user problem problem_user);
   19 
   20 ################################################################################
   21 # constructor
   22 ################################################################################
   23 
   24 sub new($$) {
   25   my $invocant = shift;
   26   my $class = ref($invocant) || $invocant;
   27   my $ce = shift;
   28   my $self = {};
   29 
   30   # load the modules required to handle each table, and create driver
   31   foreach my $table (TABLES) {
   32     unless (defined $ce->{dbLayout}->{$table}) {
   33       #warn "ignoring table $table: layout not specified in dbLayout";
   34       next;
   35     }
   36 
   37     my $layout = $ce->{dbLayout}->{$table};
   38     my $record = $layout->{record};
   39     my $schema = $layout->{schema};
   40     my $driver = $layout->{driver};
   41     my $source = $layout->{source};
   42     #warn "table=$table record=$record schema=$schema driver=$driver source=$source\n";
   43 
   44     runtime_use($record);
   45     runtime_use($schema);
   46     runtime_use($driver);
   47     $self->{$table} = $schema->new($driver->new($source), $table, $record);
   48   }
   49 
   50   bless $self, $class;
   51   return $self;
   52 }
   53 
   54 ################################################################################
   55 # password functions
   56 ################################################################################
   57 
   58 sub listPasswords($) {
   59   my ($self) = @_;
   60   return $self->{password}->list();
   61 }
   62 
   63 sub newPassword($$) {
   64   my ($self, $Password) = @_;
   65   die "newPassword failed: user ", $Password->user_id, " does not exist.\n"
   66     unless $self->{user}->exists($Password->user_id);
   67   return $self->{password}->add($Password);
   68 }
   69 
   70 sub getPassword($$) {
   71   my ($self, $userID) = @_;
   72   return $self->{password}->get($userID);
   73 }
   74 
   75 sub putPassword($$) {
   76   my ($self, $Password) = @_;
   77   return $self->{password}->put($Password);
   78 }
   79 
   80 sub deletePassword($$) {
   81   my ($self, $userID) = @_;
   82   return $self->{password}->delete($userID);
   83 }
   84 
   85 ################################################################################
   86 # permission functions
   87 ################################################################################
   88 
   89 sub listPermissionLevels($) {
   90   my ($self) = @_;
   91   return $self->{permission}->list();
   92 }
   93 
   94 sub newPermissionLevel($$) {
   95   my ($self, $PermissionLevel) = @_;
   96   die "newPermissionLevel failed: user ", $PermissionLevel->user_id, " does not exist.\n"
   97     unless $self->{user}->exists($PermissionLevel->user_id);
   98   return $self->{permission}->add($PermissionLevel);
   99 }
  100 
  101 sub getPermissionLevel($$) {
  102   my ($self, $userID) = @_;
  103   return $self->{permission}->get($userID);
  104 }
  105 
  106 sub putPermissionLevel($$) {
  107   my ($self, $PermissionLevel) = @_;
  108   return $self->{permission}->put($PermissionLevel);
  109 }
  110 
  111 sub deletePermissionLevel($$) {
  112   my ($self, $userID) = @_;
  113   return $self->{permission}->delete($userID);
  114 }
  115 
  116 ################################################################################
  117 # key functions
  118 ################################################################################
  119 
  120 sub listKeys($) {
  121   my ($self) = @_;
  122   return $self->{key}->list();
  123 }
  124 
  125 sub newKey($$) {
  126   my ($self, $Key) = @_;
  127   die "newKey failed: user ", $Key->user_id, " does not exist.\n"
  128     unless $self->{user}->exists($Key->user_id);
  129   return $self->{key}->add($Key);
  130 }
  131 
  132 sub getKey($$) {
  133   my ($self, $userID) = @_;
  134   return $self->{key}->get($userID);
  135 }
  136 
  137 sub putKey($$) {
  138   my ($self, $Key) = @_;
  139   return $self->{key}->put($Key);
  140 }
  141 
  142 sub deleteKey($$) {
  143   my ($self, $userID) = @_;
  144   return $self->{key}->delete($userID);
  145 }
  146 
  147 ################################################################################
  148 # user functions
  149 ################################################################################
  150 
  151 sub listUsers($) {
  152   my ($self) = @_;
  153   return $self->{user}->list();
  154 }
  155 
  156 sub newUser($$) {
  157   my ($self, $User) = @_;
  158   return $self->{user}->add($User);
  159 }
  160 
  161 sub getUser($$) {
  162   my ($self, $userID) = @_;
  163   return $self->{user}->get($userID);
  164 }
  165 
  166 sub putUser($$) {
  167   my ($self, $User) = @_;
  168   return $self->{user}->put($User);
  169 }
  170 
  171 sub deleteUser($$) {
  172   my ($self, $userID) = @_;
  173   $self->deletePassword($userID);
  174   $self->deletePermissionLevel($userID);
  175   $self->deleteKey($userID);
  176   $self->deleteUserSet($userID, $_)
  177     foreach $self->listUsers();
  178   return $self->{user}->delete($userID);
  179 }
  180 
  181 ################################################################################
  182 # set functions
  183 ################################################################################
  184 
  185 sub listGlobalSets($) {
  186   my ($self) = @_;
  187   return $self->{set}->list();
  188 }
  189 
  190 sub newGlobalSet($$) {
  191   my ($self, $GlobalSet) = @_;
  192   return $self->{set}->add($GlobalSet);
  193 }
  194 
  195 sub getGlobalSet($$) {
  196   my ($self, $setID) = @_;
  197   return $self->{set}->get($setID);
  198 }
  199 
  200 sub putGlobalSet($$) {
  201   my ($self, $GlobalSet) = @_;
  202   return $self->{set}->put($GlobalSet);
  203 }
  204 
  205 sub deleteGlobalSet($$) {
  206   my ($self, $setID) = @_;
  207   $self->deleteGlobalProblem($setID, $_)
  208     foreach $self->listGlobalProblems($setID);
  209   $self->deleteUserSet($_, $setID)
  210     foreach $self->listUsers();
  211   return $self->{set}->delete($setID);
  212 }
  213 
  214 ################################################################################
  215 # set_user functions
  216 ################################################################################
  217 
  218 sub listUserSets($) {
  219   my ($self, $userID) = @_;
  220   return map { $_->[1] }
  221     grep { $_->[0] eq $userID }
  222       $self->{set_user}->list();
  223 }
  224 
  225 sub newUserSet($$) {
  226   my ($self, $UserSet) = @_;
  227   die "newUserSet failed: user ", $UserSet->user_id, " does not exist.\n"
  228     unless $self->{user}->exists($UserSet->user_id);
  229   die "newUserSet failed: set ", $UserSet->set_id, " does not exist.\n"
  230     unless $self->{set}->exists($UserSet->set_id);
  231   return $self->{set_user}->add($UserSet);
  232 }
  233 
  234 sub getUserSet($$) {
  235   my ($self, $userID, $setID) = @_;
  236   return $self->{set_user}->get($userID, $setID);
  237 }
  238 
  239 sub putUserSet($$) {
  240   my ($self, $UserSet) = @_;
  241   return $self->{set_user}->put($UserSet);
  242 }
  243 
  244 sub deleteUserSet($$) {
  245   my ($self, $userID, $setID) = @_;
  246   $self->deleteUserProblem($userID, $setID, $_)
  247     foreach $self->listUserProblems($userID, $setID);
  248   return $self->{set_user}->delete($userID, $setID);
  249 }
  250 
  251 ################################################################################
  252 # problem functions
  253 ################################################################################
  254 
  255 sub listGlobalProblems($$) {
  256   my ($self, $setID) = @_;
  257   return map { $_->[1] }
  258     grep { $_->[0] eq $setID }
  259       $self->{problem}->list();
  260 }
  261 
  262 sub newGlobalProblem($$) {
  263   my ($self, $GlobalProblem) = @_;
  264   die "newGlobalProblem failed: set ", $GlobalProblem->set_id, " does not exist.\n"
  265     unless $self->{set}->exists($GlobalProblem->set_id);
  266   return $self->{problem}->add($GlobalProblem);
  267 }
  268 
  269 sub getGlobalProblem($$$) {
  270   my ($self, $setID, $problemID) = @_;
  271   return $self->{problem}->get($problemID);
  272 }
  273 
  274 sub putGlobalProblem($$) {
  275   my ($self, $GlobalProblem) = @_;
  276   return $self->{problem}->put($GlobalProblem);
  277 }
  278 
  279 sub deleteGlobalProblem($$$) {
  280   my ($self, $setID, $problemID) = @_;
  281   $self->deleteUserProblem($_, $setID, $problemID)
  282     foreach $self->listUsers();
  283   return $self->{problem}->delete($setID, $problemID);
  284 }
  285 
  286 ################################################################################
  287 # problem_user functions
  288 ################################################################################
  289 
  290 sub listUserProblems($$$) {
  291   my ($self, $userID, $setID) = @_;
  292   return map { $_->[2] }
  293     grep { $_->[0] eq $userID and $_->[1] eq $setID }
  294       $self->{problem_user}->list();
  295 }
  296 
  297 sub newUserProblem($$) {
  298   my ($self, $UserProblem) = @_;
  299   die "newUserProblem failed: user set ", $UserProblem->set_id, " does not exist.\n"
  300     unless $self->{set_user}->exists($UserProblem->set_id);
  301   die "newUserProblem failed: problem ", $UserProblem->problem_id, " does not exist.\n"
  302     unless $self->{problem}->exists($UserProblem->set_id);
  303   return $self->{problem_user}->add($UserProblem);
  304 }
  305 
  306 sub getUserProblem($$$$) {
  307   my ($self, $userID, $setID, $problemID) = @_;
  308   return $self->{problem_user}->get($userID, $setID, $problemID);
  309 }
  310 
  311 sub putUserProblem($$) {
  312   my ($self, $UserProblem) = @_;
  313   return $self->{problem_user}->put($UserProblem);
  314 }
  315 
  316 sub deleteUserProblem($$$$) {
  317   my ($self, $userID, $setID, $problemID) = @_;
  318   return $self->{problem_user}->delete($userID, $setID, $problemID);
  319 }
  320 
  321 ################################################################################
  322 # set+set_user functions
  323 ################################################################################
  324 
  325 sub getGlobalUserSet($$$) {
  326   my ($self, $userID, $setID) = @_;
  327   # ***
  328 }
  329 
  330 ################################################################################
  331 # problem+problem_user functions
  332 ################################################################################
  333 
  334 sub getGlobalUserProblem($$$$) {
  335   my ($self, $userID, $setID, $problemID) = @_;
  336   # ***
  337 }
  338 
  339 1;

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9