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

aubreyja at gmail dot com
ViewVC Help
Powered by ViewVC 1.0.9