Files
podnoms/server/Services/Push/Data/PushSubscriptionContext.cs
2018-03-21 20:36:09 +00:00

40 lines
1.5 KiB
C#

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using WebPush = Lib.Net.Http.WebPush;
namespace PodNoms.Api.Services.Push.Data {
internal class PushSubscriptionContext : DbContext {
public class PushSubscription : WebPush.PushSubscription {
public string P256DH {
get { return GetKey(WebPush.PushEncryptionKeyName.P256DH); }
set { SetKey(WebPush.PushEncryptionKeyName.P256DH, value); }
}
public string Auth {
get { return GetKey(WebPush.PushEncryptionKeyName.Auth); }
set { SetKey(WebPush.PushEncryptionKeyName.Auth, value); }
}
public PushSubscription() { }
public PushSubscription(WebPush.PushSubscription subscription) {
Endpoint = subscription.Endpoint;
Keys = subscription.Keys;
}
}
public DbSet<PushSubscription> Subscriptions { get; set; }
public PushSubscriptionContext(DbContextOptions<PushSubscriptionContext> options)
: base(options) { }
protected override void OnModelCreating(ModelBuilder modelBuilder) {
EntityTypeBuilder<PushSubscription> pushSubscriptionEntityTypeBuilder = modelBuilder.Entity<PushSubscription>();
pushSubscriptionEntityTypeBuilder.HasKey(e => e.Endpoint);
pushSubscriptionEntityTypeBuilder.Ignore(p => p.Keys);
}
}
}