Include created timestamp in user migration

This commit is contained in:
Kieran 2022-06-13 16:00:02 +01:00
parent c29756ac6e
commit 863f14e25f
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941
2 changed files with 24 additions and 4 deletions

View File

@ -105,8 +105,21 @@ public class MigrateToPostgres : IMigration
{ {
try try
{ {
var privateUser = await cacheUsers.GetPrivate(user.Id); var privateUser = await cacheUsers.Get<PrivateUser>(user.Id);
await _userStore.Set(privateUser!.Id, privateUser); privateUser!.Password ??= privateUser.PasswordHash;
await _userStore.Set(privateUser!.Id, new InternalVoidUser()
{
Id = privateUser.Id,
Avatar = privateUser.Avatar,
Created = privateUser.Created,
DisplayName = privateUser.DisplayName,
Email = privateUser.Email,
Flags = privateUser.Flags,
LastLogin = privateUser.LastLogin,
Password = privateUser.Password!,
Roles = privateUser.Roles
});
_logger.LogInformation("Migrated user {USer}", user.Id); _logger.LogInformation("Migrated user {USer}", user.Id);
} }
catch (Exception ex) catch (Exception ex)
@ -115,4 +128,10 @@ public class MigrateToPostgres : IMigration
} }
} }
} }
private class PrivateUser : PrivateVoidUser
{
public string? PasswordHash { get; set; }
public string? Password { get; set; }
}
} }

View File

@ -32,13 +32,14 @@ public class PostgresUserStore : IUserStore
await using var conn = await _connection.Get(); await using var conn = await _connection.Get();
await conn.ExecuteAsync( await conn.ExecuteAsync(
@"insert into @"insert into
""Users""(""Id"", ""Email"", ""Password"", ""LastLogin"", ""DisplayName"", ""Avatar"", ""Flags"") ""Users""(""Id"", ""Email"", ""Password"", ""Created"", ""LastLogin"", ""DisplayName"", ""Avatar"", ""Flags"")
values(:id, :email, :password, :lastLogin, :displayName, :avatar, :flags)", values(:id, :email, :password, :created, :lastLogin, :displayName, :avatar, :flags)",
new new
{ {
Id = id, Id = id,
email = obj.Email, email = obj.Email,
password = obj.Password, password = obj.Password,
created = obj.Created,
displayName = obj.DisplayName, displayName = obj.DisplayName,
lastLogin = obj.LastLogin.ToUniversalTime(), lastLogin = obj.LastLogin.ToUniversalTime(),
avatar = obj.Avatar, avatar = obj.Avatar,