✨ Notification service
This commit is contained in:
		
							
								
								
									
										41
									
								
								DysonNetwork.Sphere/Account/Notification.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								DysonNetwork.Sphere/Account/Notification.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,41 @@ | ||||
| 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!; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user