41 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System.ComponentModel.DataAnnotations;
 | |
| using System.ComponentModel.DataAnnotations.Schema;
 | |
| using System.Text.Json.Serialization;
 | |
| using Microsoft.EntityFrameworkCore;
 | |
| using NodaTime;
 | |
| 
 | |
| namespace DysonNetwork.Sphere.Account;
 | |
| 
 | |
| public class Notification : ModelBase
 | |
| {
 | |
|     public Guid Id { get; set; } = Guid.NewGuid();
 | |
|     [MaxLength(1024)] public string? Title { get; set; }
 | |
|     [MaxLength(2048)] public string? Subtitle { get; set; }
 | |
|     [MaxLength(4096)] public string? Content { get; set; }
 | |
|     [Column(TypeName = "jsonb")] public Dictionary<string, object>? Meta { get; set; }
 | |
|     public int Priority { get; set; } = 10;
 | |
|     public Instant? ViewedAt { get; set; }
 | |
| 
 | |
|     public long AccountId { get; set; }
 | |
|     [JsonIgnore] public Account Account { get; set; } = null!;
 | |
| }
 | |
| 
 | |
| public enum NotificationPushProvider
 | |
| {
 | |
|     Apple,
 | |
|     Google
 | |
| }
 | |
| 
 | |
| [Index(nameof(DeviceId), IsUnique = true)]
 | |
| [Index(nameof(DeviceToken), IsUnique = true)]
 | |
| public class NotificationPushSubscription : ModelBase
 | |
| {
 | |
|     public Guid Id { get; set; } = Guid.NewGuid();
 | |
|     [MaxLength(4096)] public string DeviceId { get; set; } = null!;
 | |
|     [MaxLength(4096)] public string DeviceToken { get; set; } = null!;
 | |
|     public NotificationPushProvider Provider { get; set; }
 | |
|     public Instant? LastUsedAt { get; set; }
 | |
| 
 | |
|     public long AccountId { get; set; }
 | |
|     [JsonIgnore] public Account Account { get; set; } = null!;
 | |
| } |