aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2020-06-14 00:21:25 +0800
committercrupest <crupest@outlook.com>2020-06-14 00:21:25 +0800
commit4cfb50d40384e5dea1805f8d6fc5ab38cd32d93b (patch)
treec9395a11fa6ccefe6a03e81c7b837e28b2e3e97a
parent2f8ffdb2db682b1c1407313816def20fde58d35f (diff)
downloadtimeline-4cfb50d40384e5dea1805f8d6fc5ab38cd32d93b.tar.gz
timeline-4cfb50d40384e5dea1805f8d6fc5ab38cd32d93b.tar.bz2
timeline-4cfb50d40384e5dea1805f8d6fc5ab38cd32d93b.zip
refactor(back): Use a better way to handle unique id in timeline.
-rw-r--r--Timeline/Entities/DatabaseContext.cs11
-rw-r--r--Timeline/Entities/TimelineEntity.cs4
-rw-r--r--Timeline/Migrations/20200613161127_AddTimelineUniqueId.Designer.cs (renamed from Timeline/Migrations/20200613135613_AddTimelineUniqueId.Designer.cs)9
-rw-r--r--Timeline/Migrations/20200613161127_AddTimelineUniqueId.cs (renamed from Timeline/Migrations/20200613135613_AddTimelineUniqueId.cs)8
-rw-r--r--Timeline/Migrations/DatabaseContextModelSnapshot.cs7
5 files changed, 13 insertions, 26 deletions
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<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)
@@ -25,7 +16,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()");
+ modelBuilder.Entity<TimelineEntity>().Property(e => e.UniqueId).HasDefaultValueSql("randomblob(16)");
}
public DbSet<UserEntity> 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!;
/// <summary>
/// If null, then this timeline is a personal timeline.
diff --git a/Timeline/Migrations/20200613135613_AddTimelineUniqueId.Designer.cs b/Timeline/Migrations/20200613161127_AddTimelineUniqueId.Designer.cs
index fb24f8cf..4a8da5fd 100644
--- a/Timeline/Migrations/20200613135613_AddTimelineUniqueId.Designer.cs
+++ b/Timeline/Migrations/20200613161127_AddTimelineUniqueId.Designer.cs
@@ -9,7 +9,7 @@ using Timeline.Entities;
namespace Timeline.Migrations
{
[DbContext(typeof(DatabaseContext))]
- [Migration("20200613135613_AddTimelineUniqueId")]
+ [Migration("20200613161127_AddTimelineUniqueId")]
partial class AddTimelineUniqueId
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
@@ -91,12 +91,11 @@ namespace Timeline.Migrations
.HasColumnName("owner")
.HasColumnType("INTEGER");
- b.Property<string>("UniqueId")
- .IsRequired()
+ b.Property<Guid>("UniqueId")
.ValueGeneratedOnAdd()
.HasColumnName("unique_id")
- .HasColumnType("TEXT")
- .HasDefaultValueSql("timeline_create_guid()");
+ .HasColumnType("BLOB")
+ .HasDefaultValueSql("randomblob(16)");
b.Property<int>("Visibility")
.HasColumnName("visibility")
diff --git a/Timeline/Migrations/20200613135613_AddTimelineUniqueId.cs b/Timeline/Migrations/20200613161127_AddTimelineUniqueId.cs
index fdca85b2..badd33ea 100644
--- a/Timeline/Migrations/20200613135613_AddTimelineUniqueId.cs
+++ b/Timeline/Migrations/20200613161127_AddTimelineUniqueId.cs
@@ -1,4 +1,5 @@
-using Microsoft.EntityFrameworkCore.Migrations;
+using System;
+using Microsoft.EntityFrameworkCore.Migrations;
namespace Timeline.Migrations
{
@@ -12,7 +13,7 @@ ALTER TABLE timelines RENAME TO timelines_backup;
CREATE TABLE timelines (
id INTEGER NOT NULL CONSTRAINT PK_timelines PRIMARY KEY AUTOINCREMENT,
- unique_id TEXT NOT NULL DEFAULT (timeline_create_guid()),
+ unique_id BLOB NOT NULL DEFAULT (randomblob(16)),
name TEXT NULL,
description TEXT NULL,
owner INTEGER NOT NULL,
@@ -31,9 +32,6 @@ DROP TABLE timelines_backup;
protected override void Down(MigrationBuilder migrationBuilder)
{
- migrationBuilder.DropColumn(
- name: "unique_id",
- table: "timelines");
}
}
}
diff --git a/Timeline/Migrations/DatabaseContextModelSnapshot.cs b/Timeline/Migrations/DatabaseContextModelSnapshot.cs
index eb22653f..111ae9c2 100644
--- a/Timeline/Migrations/DatabaseContextModelSnapshot.cs
+++ b/Timeline/Migrations/DatabaseContextModelSnapshot.cs
@@ -89,12 +89,11 @@ namespace Timeline.Migrations
.HasColumnName("owner")
.HasColumnType("INTEGER");
- b.Property<string>("UniqueId")
- .IsRequired()
+ b.Property<Guid>("UniqueId")
.ValueGeneratedOnAdd()
.HasColumnName("unique_id")
- .HasColumnType("TEXT")
- .HasDefaultValueSql("timeline_create_guid()");
+ .HasColumnType("BLOB")
+ .HasDefaultValueSql("randomblob(16)");
b.Property<int>("Visibility")
.HasColumnName("visibility")