From 1df83c67e999f7bcf606046c0c687a0be5f8d462 Mon Sep 17 00:00:00 2001 From: crupest Date: Sun, 14 Jun 2020 00:21:25 +0800 Subject: refactor(back): Use a better way to handle unique id in timeline. --- Timeline/Entities/DatabaseContext.cs | 11 +---------- Timeline/Entities/TimelineEntity.cs | 4 ++-- 2 files changed, 3 insertions(+), 12 deletions(-) (limited to 'Timeline/Entities') diff --git a/Timeline/Entities/DatabaseContext.cs b/Timeline/Entities/DatabaseContext.cs index 96e47cc8..af7d2edb 100644 --- a/Timeline/Entities/DatabaseContext.cs +++ b/Timeline/Entities/DatabaseContext.cs @@ -9,15 +9,6 @@ namespace Timeline.Entities public DatabaseContext(DbContextOptions options) : base(options) { - if (Database.IsSqlite()) - { - var connection = (SqliteConnection)Database.GetDbConnection(); - connection.CreateFunction("timeline_create_guid", () => Guid.NewGuid().ToString()); - } - else - { - throw new InvalidOperationException(Resources.Entities.ExceptionOnlySqliteSupported); - } } protected override void OnModelCreating(ModelBuilder modelBuilder) @@ -25,7 +16,7 @@ namespace Timeline.Entities modelBuilder.Entity().Property(e => e.Version).HasDefaultValue(0); modelBuilder.Entity().HasIndex(e => e.Username).IsUnique(); modelBuilder.Entity().HasIndex(e => e.Tag).IsUnique(); - modelBuilder.Entity().Property(e => e.UniqueId).HasDefaultValueSql("timeline_create_guid()"); + modelBuilder.Entity().Property(e => e.UniqueId).HasDefaultValueSql("randomblob(16)"); } public DbSet Users { get; set; } = default!; diff --git a/Timeline/Entities/TimelineEntity.cs b/Timeline/Entities/TimelineEntity.cs index 1159cbfe..4a4e8502 100644 --- a/Timeline/Entities/TimelineEntity.cs +++ b/Timeline/Entities/TimelineEntity.cs @@ -14,8 +14,8 @@ namespace Timeline.Entities [Column("id"), Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public long Id { get; set; } - [Column("unique_id"), Required] - public string UniqueId { get; set; } = default!; + [Column("unique_id", TypeName = "BLOB"), Required] + public Guid UniqueId { get; set; } = default!; /// /// If null, then this timeline is a personal timeline. -- cgit v1.2.3