using Microsoft.Data.Sqlite; namespace MxGateway.Server.Security.Authentication; public static class ApiKeyRecordReader { public static ApiKeyRecord Read(SqliteDataReader reader) { return new ApiKeyRecord( KeyId: reader.GetString(0), KeyPrefix: reader.GetString(1), SecretHash: (byte[])reader["secret_hash"], DisplayName: reader.GetString(3), Scopes: ApiKeyScopeSerializer.Deserialize(reader.GetString(4)), CreatedUtc: DateTimeOffset.Parse(reader.GetString(5), System.Globalization.CultureInfo.InvariantCulture), LastUsedUtc: ReadNullableDateTimeOffset(reader, 6), RevokedUtc: ReadNullableDateTimeOffset(reader, 7)); } private static DateTimeOffset? ReadNullableDateTimeOffset(SqliteDataReader reader, int ordinal) { return reader.IsDBNull(ordinal) ? null : DateTimeOffset.Parse(reader.GetString(ordinal), System.Globalization.CultureInfo.InvariantCulture); } }