aboutsummaryrefslogtreecommitdiff
path: root/Timeline/Entities/DatabaseContext.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2020-06-13 23:50:09 +0800
committercrupest <crupest@outlook.com>2020-06-13 23:50:09 +0800
commit41210c20cd6fef83530adbdaf5fb97e9f929ab6c (patch)
tree2f99a1c08b185890e7148e3876b1d9c53081952e /Timeline/Entities/DatabaseContext.cs
parentd6e9ae92a782f747752d9e26504dc2f27e723f04 (diff)
downloadtimeline-41210c20cd6fef83530adbdaf5fb97e9f929ab6c.tar.gz
timeline-41210c20cd6fef83530adbdaf5fb97e9f929ab6c.tar.bz2
timeline-41210c20cd6fef83530adbdaf5fb97e9f929ab6c.zip
feat(back): Add database migration to add unique id for timeline.
Diffstat (limited to 'Timeline/Entities/DatabaseContext.cs')
-rw-r--r--Timeline/Entities/DatabaseContext.cs12
1 files changed, 12 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!;