return @recent_changes;
}
+# Also applies the diff to the database (a bit ugly).
+sub find_diff {
+ my ($dbh, $invitation_ts, $want_names, $have_names, $seen_names) = @_;
+
+ my @diffs = ();
+ for my $real_name (keys %$want_names) {
+ next if (exists($have_names->{$real_name}));
+ skv_log("Markerer at $real_name skal på trening.");
+ push @diffs, [
+ $real_name,
+ {
+ backgroundColor => {
+ red => 1,
+ green => 1,
+ blue => 0,
+ alpha => 1
+ }
+ }
+ ];
+ $dbh->do('INSERT INTO applied (channel, ts, name) VALUES (?, ?, ?)', undef,
+ $config::invitation_channel, $invitation_ts, $real_name);
+ }
+ for my $real_name (keys %$have_names) {
+ next if (exists($want_names->{$real_name}));
+ if (!exists($seen_names->{lc $real_name})) {
+ # TODO: This can somehow come if we try to add someone who's not in the sheet, too?
+ skv_log("Ønsket å fjerne at $real_name skulle på trening, men de var ikke i regnearket lenger.");
+ } else {
+ skv_log("Fjerner at $real_name skal på trening.");
+ push @diffs, [
+ $real_name,
+ {
+ backgroundColor => {
+ red => 1,
+ green => 1,
+ blue => 1,
+ alpha => 0
+ }
+ }
+ ];
+ $dbh->do('DELETE FROM applied WHERE channel=? AND ts=? AND name=?', undef,
+ $config::invitation_channel, $invitation_ts, $real_name);
+ }
+ }
+ return @diffs;
+}
+
skv_log("Siste sync startet: " . POSIX::ctime(time));
# Initialize the handles we need for communication.
$have_names{$ref->{'name'}} = 1;
}
-# Find the diff between the two.
-my @diffs = ();
-for my $real_name (keys %want_names) {
- next if (exists($have_names{$real_name}));
- skv_log("Markerer at $real_name skal på trening.");
- push @diffs, [
- $real_name,
- {
- backgroundColor => {
- red => 1,
- green => 1,
- blue => 0,
- alpha => 1
- }
- }
- ];
- $dbh->do('INSERT INTO applied (channel, ts, name) VALUES (?, ?, ?)', undef,
- $config::invitation_channel, $invitation_ts, $real_name);
-}
-for my $real_name (keys %have_names) {
- next if (exists($want_names{$real_name}));
- if (!exists($seen_names{lc $real_name})) {
- # TODO: This can somehow come if we try to add someone who's not in the sheet, too?
- skv_log("Ønsket å fjerne at $real_name skulle på trening, men de var ikke i regnearket lenger.");
- } else {
- skv_log("Fjerner at $real_name skal på trening.");
- push @diffs, [
- $real_name,
- {
- backgroundColor => {
- red => 1,
- green => 1,
- blue => 1,
- alpha => 0
- }
- }
- ];
- $dbh->do('DELETE FROM applied WHERE channel=? AND ts=? AND name=?', undef,
- $config::invitation_channel, $invitation_ts, $real_name);
- }
-}
+my @diffs = find_diff($dbh, $invitation_ts, \%want_names, \%have_names, \%seen_names);
my @yellow_updates = ();
if (scalar @diffs > 0) {