Parent Directory
|
Revision Log
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 |