53 lines
1.6 KiB
C#
53 lines
1.6 KiB
C#
using MongoDB.Bson.Serialization.Attributes;
|
|
|
|
namespace StellaOps.Concelier.Storage.Mongo.PsirtFlags;
|
|
|
|
[BsonIgnoreExtraElements]
|
|
public sealed class PsirtFlagDocument
|
|
{
|
|
[BsonId]
|
|
[BsonElement("advisoryKey")]
|
|
public string AdvisoryKey { get; set; } = string.Empty;
|
|
|
|
[BsonElement("vendor")]
|
|
public string Vendor { get; set; } = string.Empty;
|
|
|
|
[BsonElement("sourceName")]
|
|
public string SourceName { get; set; } = string.Empty;
|
|
|
|
[BsonElement("advisoryIdText")]
|
|
public string AdvisoryIdText { get; set; } = string.Empty;
|
|
|
|
[BsonElement("flaggedAt")]
|
|
public DateTime FlaggedAt { get; set; }
|
|
}
|
|
|
|
internal static class PsirtFlagDocumentExtensions
|
|
{
|
|
public static PsirtFlagDocument FromRecord(PsirtFlagRecord record)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(record);
|
|
|
|
return new PsirtFlagDocument
|
|
{
|
|
AdvisoryKey = string.IsNullOrWhiteSpace(record.AdvisoryKey) ? record.AdvisoryIdText : record.AdvisoryKey,
|
|
Vendor = record.Vendor,
|
|
SourceName = record.SourceName,
|
|
AdvisoryIdText = record.AdvisoryIdText,
|
|
FlaggedAt = record.FlaggedAt.UtcDateTime,
|
|
};
|
|
}
|
|
|
|
public static PsirtFlagRecord ToRecord(this PsirtFlagDocument document)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(document);
|
|
|
|
return new PsirtFlagRecord(
|
|
document.AdvisoryKey,
|
|
document.Vendor,
|
|
document.SourceName,
|
|
document.AdvisoryIdText,
|
|
DateTime.SpecifyKind(document.FlaggedAt, DateTimeKind.Utc));
|
|
}
|
|
}
|