Skip to content

Commit

Permalink
Bug 1926081 - Add modification_time datetime column to profiles table…
Browse files Browse the repository at this point in the history
… denoting when the profile was last updated (schema only)
  • Loading branch information
dklawren authored Oct 25, 2024
1 parent fcbadb7 commit 4c72c34
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 7 deletions.
10 changes: 6 additions & 4 deletions Bugzilla/DB/Schema.pm
Original file line number Diff line number Diff line change
Expand Up @@ -1002,12 +1002,14 @@ use constant ABSTRACT_SCHEMA => {
mfa_required_date => {TYPE => 'DATETIME'},
forget_after_date => {TYPE => 'DATETIME'},
bounce_count => {TYPE => 'INT1', NOTNULL => 1, DEFAULT => 0},
modification_ts => {TYPE => 'DATETIME', NOTNULL => 1},
],
INDEXES => [
profiles_login_name_idx => {FIELDS => ['login_name'], TYPE => 'UNIQUE'},
profiles_extern_id_idx => {FIELDS => ['extern_id'], TYPE => 'UNIQUE'},
profiles_nickname_idx => ['nickname'],
profiles_realname_ft_idx => {FIELDS => ['realname'], TYPE => 'FULLTEXT'},
profiles_login_name_idx => {FIELDS => ['login_name'], TYPE => 'UNIQUE'},
profiles_extern_id_idx => {FIELDS => ['extern_id'], TYPE => 'UNIQUE'},
profiles_modification_ts_idx => ['modification_ts'],
profiles_nickname_idx => ['nickname'],
profiles_realname_ft_idx => {FIELDS => ['realname'], TYPE => 'FULLTEXT'},
],
},

Expand Down
38 changes: 37 additions & 1 deletion Bugzilla/Install/DB.pm
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ use Bugzilla::Field;
use Date::Parse;
use Date::Format;
use IO::File;
use List::MoreUtils qw(uniq);
use List::Util qw(max uniq);
use URI;
use URI::QueryParam;

Expand Down Expand Up @@ -838,6 +838,9 @@ sub update_table_definitions {
# Bug 1803658 - [email protected]
$dbh->bz_alter_column('ts_error', 'message', {TYPE => 'TEXT', NOTNULL => 1});

# Bug 1926081 - [email protected]
_migrate_profiles_modification_ts();

################################################################
# New --TABLE-- changes should go *** A B O V E *** this point #
################################################################
Expand Down Expand Up @@ -4437,6 +4440,39 @@ sub _update_see_also_any_url {
}
}

sub _migrate_profiles_modification_ts {
my $dbh = Bugzilla->dbh;

return if $dbh->bz_column_info('profiles', 'modification_ts');

$dbh->bz_add_column('profiles', 'modification_ts', {TYPE => 'DATETIME'});

my $sth = $dbh->prepare(
'UPDATE profiles SET modification_ts = FROM_UNIXTIME(?) WHERE userid = ?');

my $user_ids
= $dbh->selectall_arrayref('SELECT userid FROM profiles ORDER BY userid');
foreach my $user_id (@{$user_ids}) {
my ($audit_log_when) = $dbh->selectrow_array(
'SELECT UNIX_TIMESTAMP(at_time) FROM audit_log
WHERE class = \'Bugzilla::User\' AND object_id = ? ORDER BY at_time DESC '
. $dbh->sql_limit(1), undef, $user_id
);
my ($profiles_act_when) = $dbh->selectrow_array(
'SELECT UNIX_TIMESTAMP(profiles_when) FROM profiles_activity
WHERE userid = ? ORDER BY profiles_when DESC '
. $dbh->sql_limit(1), undef, $user_id
);

# We use unix timestamps to make value comparison easier
my $modification_ts = max($audit_log_when, $profiles_act_when);
$sth->execute($modification_ts, $user_id);
}

$dbh->bz_alter_column('profiles', 'modification_ts',
{TYPE => 'DATETIME', NOTNULL => 1});
}

1;

__END__
Expand Down
7 changes: 5 additions & 2 deletions Bugzilla/User.pm
Original file line number Diff line number Diff line change
Expand Up @@ -2658,6 +2658,9 @@ sub create {
$params->{nickname}
= _generate_nickname($params->{realname}, $params->{login_name}, 0);

my $modification_ts = $dbh->selectrow_array('SELECT LOCALTIMESTAMP(0)');
$params->{modification_ts} = $modification_ts;

my $user = $class->SUPER::create($params);

# Turn on all email for the new user
Expand Down Expand Up @@ -2698,8 +2701,8 @@ sub create {
$dbh->do(
'INSERT INTO profiles_activity
(userid, who, profiles_when, fieldid, newvalue)
VALUES (?, ?, NOW(), ?, NOW())', undef,
($user->id, $who, $creation_date_fieldid)
VALUES (?, ?, ?, ?, ?)', undef,
($user->id, $who, $modification_ts, $creation_date_fieldid, $modification_ts)
);

$dbh->bz_commit_transaction();
Expand Down

0 comments on commit 4c72c34

Please sign in to comment.