| … | |
… | |
| 154 | # add it |
154 | # add it |
| 155 | return $userSchema->add($UserRecord); |
155 | return $userSchema->add($UserRecord); |
| 156 | } |
156 | } |
| 157 | |
157 | |
| 158 | sub get($@) { |
158 | sub get($@) { |
|
|
159 | warn "\@_=@_\n"; |
| 159 | my ($self, @keyparts) = @_; |
160 | my ($self, @keyparts) = @_; |
| 160 | |
161 | |
| 161 | my $db = $self->{db}; |
162 | my $db = $self->{db}; |
| 162 | my $table = $self->{table}; |
163 | my $table = $self->{table}; |
| 163 | my $userSchema = $db->{"${table}_user"}; |
164 | my $userSchema = $db->{"${table}_user"}; |
| 164 | my $globalUserID = $self->{params}->{globalUserID}; |
165 | my $globalUserID = $self->{params}->{globalUserID}; |
| 165 | |
166 | |
| 166 | if ($globalUserID) { |
167 | if ($globalUserID) { |
|
|
168 | warn "gonna try to get a user record for ($globalUserID @keyparts)...\n"; |
| 167 | my $UserRecord = $userSchema->get($globalUserID, @keyparts); |
169 | my $UserRecord = $userSchema->get($globalUserID, @keyparts); |
|
|
170 | warn "UserRecord=$UserRecord\n"; |
| 168 | return user2global($self->{record}, $UserRecord); |
171 | return user2global($self->{record}, $UserRecord); |
| 169 | } else { |
172 | } else { |
| 170 | warn "WARNING: using slow, slow consensus"; |
173 | warn "WARNING: using slow, slow consensus"; |
| 171 | # get a consensus of all the user records |
174 | # get a consensus of all the user records |
| 172 | my @userRecordIDs = $userSchema->list(undef, @keyparts); |
175 | my @userRecordIDs = $userSchema->list(undef, @keyparts); |
| … | |
… | |
| 202 | |
205 | |
| 203 | if ($globalUserID) { |
206 | if ($globalUserID) { |
| 204 | my $NewDefaults = global2user($userSchema->{record}, $Record); |
207 | my $NewDefaults = global2user($userSchema->{record}, $Record); |
| 205 | $NewDefaults->user_id($globalUserID); |
208 | $NewDefaults->user_id($globalUserID); |
| 206 | |
209 | |
| 207 | my $OldDefaults = $self->get($globalUserID, @keyparts); |
|
|
| 208 | |
|
|
| 209 | # add new or store updated "global" record |
210 | # add new or store updated "global" record |
| 210 | if ($userSchema->exists($globalUserID, @keyparts)) { |
211 | if ($userSchema->exists($globalUserID, @keyparts)) { |
| 211 | $result = $userSchema->put($NewDefaults); |
212 | $result = $userSchema->put($NewDefaults); |
| 212 | } else { |
213 | } else { |
| 213 | $result = $userSchema->add($NewDefaults); |
214 | $result = $userSchema->add($NewDefaults); |
| 214 | } |
215 | } |
| 215 | |
216 | |
| 216 | my @userIDs = map { $_->[0] } $userSchema->list(undef, @keyparts); |
217 | my @userIDs = map { $_->[0] } $userSchema->list(undef, @keyparts); |
| 217 | |
218 | |
|
|
219 | my $OldDefaults = user2global($self->{record}, $userSchema->get($globalUserID, @keyparts)); |
| 218 | $self->distGlobalValues($OldDefaults, $Record, @userIDs); |
220 | $self->distGlobalValues($OldDefaults, $Record, @userIDs); |
| 219 | } else { |
221 | } else { |
| 220 | warn "WARNING: using slow, slow consensus"; |
222 | warn "WARNING: using slow, slow consensus"; |
| 221 | # make a user-specific record with user_id=HIDDEN_LOGIN out of $Record |
223 | # make a user-specific record with user_id=HIDDEN_LOGIN out of $Record |
| 222 | # i'm calling this a "hidden" record |
224 | # i'm calling this a "hidden" record |