[system] / trunk / webwork2 / lib / WeBWorK / DB.pm Repository:
ViewVC logotype

View of /trunk/webwork2/lib/WeBWorK/DB.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 808 - (download) (as text) (annotate)
Thu Apr 17 21:01:17 2003 UTC (10 years, 1 month ago) by sh002i
File size: 9463 byte(s)
Lots of work on WWDBv2... WW1Hash is done! A complete dbLayout (as
detailed on global.conf.dist) works now.
-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     my $params = $layout->{params};
   43 
   44     runtime_use($record);
   45     runtime_use($schema);
   46     runtime_use($driver);
   47     $self->{$table} = $schema->new($driver->new($source), $table, $record, $params);
   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 map { $_->[0] }
   61     $self->{password}->list(undef);
   62 }
   63 
   64 sub addPassword($$) {
   65   my ($self, $Password) = @_;
   66   die "addPassword failed: user ", $Password->user_id, " does not exist.\n"
   67     unless $self->{user}->exists($Password->user_id);
   68   return $self->{password}->add($Password);
   69 }
   70 
   71 sub getPassword($$) {
   72   my ($self, $userID) = @_;
   73   return $self->{password}->get($userID);
   74 }
   75 
   76 sub putPassword($$) {
   77   my ($self, $Password) = @_;
   78   return $self->{password}->put($Password);
   79 }
   80 
   81 sub deletePassword($$) {
   82   my ($self, $userID) = @_;
   83   return $self->{password}->delete($userID);
   84 }
   85 
   86 ################################################################################
   87 # permission functions
   88 ################################################################################
   89 
   90 sub listPermissionLevels($) {
   91   my ($self) = @_;
   92   return map { $_->[0] }
   93     $self->{permission}->list(undef);
   94 }
   95 
   96 sub addPermissionLevel($$) {
   97   my ($self, $PermissionLevel) = @_;
   98   die "addPermissionLevel failed: user ", $PermissionLevel->user_id, " does not exist.\n"
   99     unless $self->{user}->exists($PermissionLevel->user_id);
  100   return $self->{permission}->add($PermissionLevel);
  101 }
  102 
  103 sub getPermissionLevel($$) {
  104   my ($self, $userID) = @_;
  105   return $self->{permission}->get($userID);
  106 }
  107 
  108 sub putPermissionLevel($$) {
  109   my ($self, $PermissionLevel) = @_;
  110   return $self->{permission}->put($PermissionLevel);
  111 }
  112 
  113 sub deletePermissionLevel($$) {
  114   my ($self, $userID) = @_;
  115   return $self->{permission}->delete($userID);
  116 }
  117 
  118 ################################################################################
  119 # key functions
  120 ################################################################################
  121 
  122 sub listKeys($) {
  123   my ($self) = @_;
  124   return map { $_->[0] }
  125     $self->{key}->list(undef);
  126 }
  127 
  128 sub addKey($$) {
  129   my ($self, $Key) = @_;
  130   die "addKey failed: user ", $Key->user_id, " does not exist.\n"
  131     unless $self->{user}->exists($Key->user_id);
  132   return $self->{key}->add($Key);
  133 }
  134 
  135 sub getKey($$) {
  136   my ($self, $userID) = @_;
  137   return $self->{key}->get($userID);
  138 }
  139 
  140 sub putKey($$) {
  141   my ($self, $Key) = @_;
  142   return $self->{key}->put($Key);
  143 }
  144 
  145 sub deleteKey($$) {
  146   my ($self, $userID) = @_;
  147   return $self->{key}->delete($userID);
  148 }
  149 
  150 ################################################################################
  151 # user functions
  152 ################################################################################
  153 
  154 sub listUsers($) {
  155   my ($self) = @_;
  156   return map { $_->[0] }
  157     $self->{user}->list(undef);
  158 }
  159 
  160 sub addUser($$) {
  161   my ($self, $User) = @_;
  162   return $self->{user}->add($User);
  163 }
  164 
  165 sub getUser($$) {
  166   my ($self, $userID) = @_;
  167   return $self->{user}->get($userID);
  168 }
  169 
  170 sub putUser($$) {
  171   my ($self, $User) = @_;
  172   return $self->{user}->put($User);
  173 }
  174 
  175 sub deleteUser($$) {
  176   my ($self, $userID) = @_;
  177   $self->deletePassword($userID);
  178   $self->deletePermissionLevel($userID);
  179   $self->deleteKey($userID);
  180   $self->deleteUserSet($userID, $_)
  181     foreach $self->listUsers();
  182   return $self->{user}->delete($userID);
  183 }
  184 
  185 ################################################################################
  186 # set functions
  187 ################################################################################
  188 
  189 sub listGlobalSets($) {
  190   my ($self) = @_;
  191   return map { $_->[0] }
  192     $self->{set}->list(undef);
  193 }
  194 
  195 sub addGlobalSet($$) {
  196   my ($self, $GlobalSet) = @_;
  197   return $self->{set}->add($GlobalSet);
  198 }
  199 
  200 sub getGlobalSet($$) {
  201   my ($self, $setID) = @_;
  202   return $self->{set}->get($setID);
  203 }
  204 
  205 sub putGlobalSet($$) {
  206   my ($self, $GlobalSet) = @_;
  207   return $self->{set}->put($GlobalSet);
  208 }
  209 
  210 sub deleteGlobalSet($$) {
  211   my ($self, $setID) = @_;
  212   $self->deleteGlobalProblem($setID, $_)
  213     foreach $self->listGlobalProblems($setID);
  214   $self->deleteUserSet($_, $setID)
  215     foreach $self->listUsers();
  216   return $self->{set}->delete($setID);
  217 }
  218 
  219 ################################################################################
  220 # set_user functions
  221 ################################################################################
  222 
  223 sub listUserSets($) {
  224   my ($self, $userID) = @_;
  225   return map { $_->[1] } # extract set_id
  226     $self->{set_user}->list($userID, undef);
  227 }
  228 
  229 sub addUserSet($$) {
  230   my ($self, $UserSet) = @_;
  231   die "addUserSet failed: user ", $UserSet->user_id, " does not exist.\n"
  232     unless $self->{user}->exists($UserSet->user_id);
  233   die "addUserSet failed: set ", $UserSet->set_id, " does not exist.\n"
  234     unless $self->{set}->exists($UserSet->set_id);
  235   return $self->{set_user}->add($UserSet);
  236 }
  237 
  238 sub getUserSet($$) {
  239   my ($self, $userID, $setID) = @_;
  240   return $self->{set_user}->get($userID, $setID);
  241 }
  242 
  243 sub putUserSet($$) {
  244   my ($self, $UserSet) = @_;
  245   return $self->{set_user}->put($UserSet);
  246 }
  247 
  248 sub deleteUserSet($$) {
  249   my ($self, $userID, $setID) = @_;
  250   $self->deleteUserProblem($userID, $setID, $_)
  251     foreach $self->listUserProblems($userID, $setID);
  252   return $self->{set_user}->delete($userID, $setID);
  253 }
  254 
  255 ################################################################################
  256 # problem functions
  257 ################################################################################
  258 
  259 sub listGlobalProblems($$) {
  260   my ($self, $setID) = @_;
  261   return map { $_->[1] }
  262     grep { $_->[0] eq $setID }
  263       $self->{problem}->list(undef, undef);
  264 }
  265 
  266 sub addGlobalProblem($$) {
  267   my ($self, $GlobalProblem) = @_;
  268   die "addGlobalProblem failed: set ", $GlobalProblem->set_id, " does not exist.\n"
  269     unless $self->{set}->exists($GlobalProblem->set_id);
  270   return $self->{problem}->add($GlobalProblem);
  271 }
  272 
  273 sub getGlobalProblem($$$) {
  274   my ($self, $setID, $problemID) = @_;
  275   return $self->{problem}->get($problemID);
  276 }
  277 
  278 sub putGlobalProblem($$) {
  279   my ($self, $GlobalProblem) = @_;
  280   return $self->{problem}->put($GlobalProblem);
  281 }
  282 
  283 sub deleteGlobalProblem($$$) {
  284   my ($self, $setID, $problemID) = @_;
  285   $self->deleteUserProblem($_, $setID, $problemID)
  286     foreach $self->listUsers();
  287   return $self->{problem}->delete($setID, $problemID);
  288 }
  289 
  290 ################################################################################
  291 # problem_user functions
  292 ################################################################################
  293 
  294 sub listUserProblems($$$) {
  295   my ($self, $userID, $setID) = @_;
  296   return map { $_->[2] }
  297     $self->{problem_user}->list($userID, $setID, undef);
  298 }
  299 
  300 sub addUserProblem($$) {
  301   my ($self, $UserProblem) = @_;
  302   die "addUserProblem failed: user set ", $UserProblem->set_id, " does not exist.\n"
  303     unless $self->{set_user}->exists($UserProblem->user_id, $UserProblem->set_id);
  304   die "addUserProblem failed: problem ", $UserProblem->problem_id, " does not exist.\n"
  305     unless $self->{problem}->exists($UserProblem->user_id, $UserProblem->set_id);
  306   return $self->{problem_user}->add($UserProblem);
  307 }
  308 
  309 sub getUserProblem($$$$) {
  310   my ($self, $userID, $setID, $problemID) = @_;
  311   return $self->{problem_user}->get($userID, $setID, $problemID);
  312 }
  313 
  314 sub putUserProblem($$) {
  315   my ($self, $UserProblem) = @_;
  316   return $self->{problem_user}->put($UserProblem);
  317 }
  318 
  319 sub deleteUserProblem($$$$) {
  320   my ($self, $userID, $setID, $problemID) = @_;
  321   return $self->{problem_user}->delete($userID, $setID, $problemID);
  322 }
  323 
  324 ################################################################################
  325 # set+set_user functions
  326 ################################################################################
  327 
  328 sub getGlobalUserSet($$$) {
  329   my ($self, $userID, $setID) = @_;
  330   # ***
  331 }
  332 
  333 ################################################################################
  334 # problem+problem_user functions
  335 ################################################################################
  336 
  337 sub getGlobalUserProblem($$$$) {
  338   my ($self, $userID, $setID, $problemID) = @_;
  339   # ***
  340 }
  341 
  342 ################################################################################
  343 # debugging
  344 ################################################################################
  345 
  346 sub dumpDB($$) {
  347   my ($self, $table) = @_;
  348   return $self->{$table}->dumpDB();
  349 }
  350 
  351 1;

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9