diff options
author | crupest <crupest@outlook.com> | 2020-06-13 23:50:09 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2020-06-13 23:50:09 +0800 |
commit | 2f8ffdb2db682b1c1407313816def20fde58d35f (patch) | |
tree | b824b63e1e7b8f453373bb1c9a3c3644635cd1f0 /Timeline/Entities | |
parent | eba8e9698c09b805d8ac2a8f58db93b947ac29e3 (diff) | |
download | timeline-2f8ffdb2db682b1c1407313816def20fde58d35f.tar.gz timeline-2f8ffdb2db682b1c1407313816def20fde58d35f.tar.bz2 timeline-2f8ffdb2db682b1c1407313816def20fde58d35f.zip |
feat(back): Add database migration to add unique id for timeline.
Diffstat (limited to 'Timeline/Entities')
-rw-r--r-- | Timeline/Entities/DatabaseContext.cs | 12 | ||||
-rw-r--r-- | Timeline/Entities/TimelineEntity.cs | 3 |
2 files changed, 15 insertions, 0 deletions
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<DatabaseContext> 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<UserEntity>().Property(e => e.Version).HasDefaultValue(0);
modelBuilder.Entity<UserEntity>().HasIndex(e => e.Username).IsUnique();
modelBuilder.Entity<DataEntity>().HasIndex(e => e.Tag).IsUnique();
+ modelBuilder.Entity<TimelineEntity>().Property(e => e.UniqueId).HasDefaultValueSql("timeline_create_guid()");
}
public DbSet<UserEntity> 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!;
+
/// <summary>
/// If null, then this timeline is a personal timeline.
/// </summary>
|