From 41210c20cd6fef83530adbdaf5fb97e9f929ab6c Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 13 Jun 2020 23:50:09 +0800 Subject: feat(back): Add database migration to add unique id for timeline. --- Timeline/Entities/DatabaseContext.cs | 12 ++++++++++++ Timeline/Entities/TimelineEntity.cs | 3 +++ 2 files changed, 15 insertions(+) (limited to 'Timeline/Entities') diff --git a/Timeline/Entities/DatabaseContext.cs b/Timeline/Entities/DatabaseContext.cs index 8899308c..96e47cc8 100644 --- a/Timeline/Entities/DatabaseContext.cs +++ b/Timeline/Entities/DatabaseContext.cs @@ -1,4 +1,6 @@ +using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; +using System; namespace Timeline.Entities { @@ -7,6 +9,15 @@ 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) @@ -14,6 +25,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()"); } public DbSet Users { get; set; } = default!; diff --git a/Timeline/Entities/TimelineEntity.cs b/Timeline/Entities/TimelineEntity.cs index 3149d4c2..1159cbfe 100644 --- a/Timeline/Entities/TimelineEntity.cs +++ b/Timeline/Entities/TimelineEntity.cs @@ -14,6 +14,9 @@ namespace Timeline.Entities [Column("id"), Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public long Id { get; set; } + [Column("unique_id"), Required] + public string UniqueId { get; set; } = default!; + /// /// If null, then this timeline is a personal timeline. /// -- cgit v1.2.3