From 33f1358f4e5359329d28177384420e29abea3445 Mon Sep 17 00:00:00 2001 From: crupest Date: Thu, 12 Nov 2020 16:42:46 +0800 Subject: refactor(database): Add user permission table. --- BackEnd/Timeline/Entities/UserAvatarEntity.cs | 1 - BackEnd/Timeline/Entities/UserEntity.cs | 5 +- BackEnd/Timeline/Entities/UserPermissionEntity.cs | 21 ++ .../20201112084015_AddUserPermission.Designer.cs | 407 +++++++++++++++++++++ .../Migrations/20201112084015_AddUserPermission.cs | 41 +++ .../Migrations/DatabaseContextModelSnapshot.cs | 234 +++++++----- 6 files changed, 623 insertions(+), 86 deletions(-) create mode 100644 BackEnd/Timeline/Entities/UserPermissionEntity.cs create mode 100644 BackEnd/Timeline/Migrations/20201112084015_AddUserPermission.Designer.cs create mode 100644 BackEnd/Timeline/Migrations/20201112084015_AddUserPermission.cs diff --git a/BackEnd/Timeline/Entities/UserAvatarEntity.cs b/BackEnd/Timeline/Entities/UserAvatarEntity.cs index 3c2720f7..96a8e3ff 100644 --- a/BackEnd/Timeline/Entities/UserAvatarEntity.cs +++ b/BackEnd/Timeline/Entities/UserAvatarEntity.cs @@ -4,7 +4,6 @@ using System.ComponentModel.DataAnnotations.Schema; namespace Timeline.Entities { - [System.Diagnostics.CodeAnalysis.SuppressMessage("Performance", "CA1819:Properties should not return arrays", Justification = "This is data base entity.")] [Table("user_avatars")] public class UserAvatarEntity { diff --git a/BackEnd/Timeline/Entities/UserEntity.cs b/BackEnd/Timeline/Entities/UserEntity.cs index 0cfaa335..83fe9aea 100644 --- a/BackEnd/Timeline/Entities/UserEntity.cs +++ b/BackEnd/Timeline/Entities/UserEntity.cs @@ -11,7 +11,6 @@ namespace Timeline.Entities public const string User = "user"; } - [System.Diagnostics.CodeAnalysis.SuppressMessage("Usage", "CA2227:Collection properties should be read only", Justification = "This is an entity class.")] [Table("users")] public class UserEntity { @@ -47,10 +46,14 @@ namespace Timeline.Entities public UserAvatarEntity? Avatar { get; set; } +#pragma warning disable CA2227 // Collection properties should be read only + public List Permissions { get; set; } = default!; + public List Timelines { get; set; } = default!; public List TimelinePosts { get; set; } = default!; public List TimelinesJoined { get; set; } = default!; +#pragma warning restore CA2227 // Collection properties should be read only } } diff --git a/BackEnd/Timeline/Entities/UserPermissionEntity.cs b/BackEnd/Timeline/Entities/UserPermissionEntity.cs new file mode 100644 index 00000000..395ad0bd --- /dev/null +++ b/BackEnd/Timeline/Entities/UserPermissionEntity.cs @@ -0,0 +1,21 @@ +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Timeline.Entities +{ + [Table("user_permission")] + public class UserPermissionEntity + { + [Column("id"), Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] + public long Id { get; set; } + + [Column("user_id")] + public long UserId { get; set; } + + [ForeignKey(nameof(UserId))] + public UserEntity User { get; set; } = default!; + + [Column("permission")] + public string Permission { get; set; } = default!; + } +} diff --git a/BackEnd/Timeline/Migrations/20201112084015_AddUserPermission.Designer.cs b/BackEnd/Timeline/Migrations/20201112084015_AddUserPermission.Designer.cs new file mode 100644 index 00000000..54a480c4 --- /dev/null +++ b/BackEnd/Timeline/Migrations/20201112084015_AddUserPermission.Designer.cs @@ -0,0 +1,407 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Timeline.Entities; + +namespace Timeline.Migrations +{ + [DbContext(typeof(DatabaseContext))] + [Migration("20201112084015_AddUserPermission")] + partial class AddUserPermission + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "5.0.0"); + + modelBuilder.Entity("Timeline.Entities.DataEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("id"); + + b.Property("Data") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("data"); + + b.Property("Ref") + .HasColumnType("INTEGER") + .HasColumnName("ref"); + + b.Property("Tag") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("tag"); + + b.HasKey("Id"); + + b.HasIndex("Tag") + .IsUnique(); + + b.ToTable("data"); + }); + + modelBuilder.Entity("Timeline.Entities.JwtTokenEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("id"); + + b.Property("Key") + .IsRequired() + .HasColumnType("BLOB") + .HasColumnName("key"); + + b.HasKey("Id"); + + b.ToTable("jwt_token"); + }); + + modelBuilder.Entity("Timeline.Entities.TimelineEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("id"); + + b.Property("CreateTime") + .HasColumnType("TEXT") + .HasColumnName("create_time"); + + b.Property("CurrentPostLocalId") + .HasColumnType("INTEGER") + .HasColumnName("current_post_local_id"); + + b.Property("Description") + .HasColumnType("TEXT") + .HasColumnName("description"); + + b.Property("LastModified") + .HasColumnType("TEXT") + .HasColumnName("last_modified"); + + b.Property("Name") + .HasColumnType("TEXT") + .HasColumnName("name"); + + b.Property("NameLastModified") + .HasColumnType("TEXT") + .HasColumnName("name_last_modified"); + + b.Property("OwnerId") + .HasColumnType("INTEGER") + .HasColumnName("owner"); + + b.Property("Title") + .HasColumnType("TEXT") + .HasColumnName("title"); + + b.Property("UniqueId") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("unique_id") + .HasDefaultValueSql("lower(hex(randomblob(16)))"); + + b.Property("Visibility") + .HasColumnType("INTEGER") + .HasColumnName("visibility"); + + b.HasKey("Id"); + + b.HasIndex("OwnerId"); + + b.ToTable("timelines"); + }); + + modelBuilder.Entity("Timeline.Entities.TimelineMemberEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("id"); + + b.Property("TimelineId") + .HasColumnType("INTEGER") + .HasColumnName("timeline"); + + b.Property("UserId") + .HasColumnType("INTEGER") + .HasColumnName("user"); + + b.HasKey("Id"); + + b.HasIndex("TimelineId"); + + b.HasIndex("UserId"); + + b.ToTable("timeline_members"); + }); + + modelBuilder.Entity("Timeline.Entities.TimelinePostEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("id"); + + b.Property("AuthorId") + .HasColumnType("INTEGER") + .HasColumnName("author"); + + b.Property("Content") + .HasColumnType("TEXT") + .HasColumnName("content"); + + b.Property("ContentType") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("content_type"); + + b.Property("ExtraContent") + .HasColumnType("TEXT") + .HasColumnName("extra_content"); + + b.Property("LastUpdated") + .HasColumnType("TEXT") + .HasColumnName("last_updated"); + + b.Property("LocalId") + .HasColumnType("INTEGER") + .HasColumnName("local_id"); + + b.Property("Time") + .HasColumnType("TEXT") + .HasColumnName("time"); + + b.Property("TimelineId") + .HasColumnType("INTEGER") + .HasColumnName("timeline"); + + b.HasKey("Id"); + + b.HasIndex("AuthorId"); + + b.HasIndex("TimelineId"); + + b.ToTable("timeline_posts"); + }); + + modelBuilder.Entity("Timeline.Entities.UserAvatarEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("id"); + + b.Property("DataTag") + .HasColumnType("TEXT") + .HasColumnName("data_tag"); + + b.Property("LastModified") + .HasColumnType("TEXT") + .HasColumnName("last_modified"); + + b.Property("Type") + .HasColumnType("TEXT") + .HasColumnName("type"); + + b.Property("UserId") + .HasColumnType("INTEGER") + .HasColumnName("user"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("user_avatars"); + }); + + modelBuilder.Entity("Timeline.Entities.UserEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("id"); + + b.Property("CreateTime") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("create_time") + .HasDefaultValueSql("datetime('now', 'utc')"); + + b.Property("LastModified") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("last_modified") + .HasDefaultValueSql("datetime('now', 'utc')"); + + b.Property("Nickname") + .HasColumnType("TEXT") + .HasColumnName("nickname"); + + b.Property("Password") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("password"); + + b.Property("Roles") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("roles"); + + b.Property("UniqueId") + .IsRequired() + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("unique_id") + .HasDefaultValueSql("lower(hex(randomblob(16)))"); + + b.Property("Username") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("username"); + + b.Property("UsernameChangeTime") + .ValueGeneratedOnAdd() + .HasColumnType("TEXT") + .HasColumnName("username_change_time") + .HasDefaultValueSql("datetime('now', 'utc')"); + + b.Property("Version") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasDefaultValue(0L) + .HasColumnName("version"); + + b.HasKey("Id"); + + b.HasIndex("Username") + .IsUnique(); + + b.ToTable("users"); + }); + + modelBuilder.Entity("Timeline.Entities.UserPermissionEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("id"); + + b.Property("Permission") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("permission"); + + b.Property("UserId") + .HasColumnType("INTEGER") + .HasColumnName("user_id"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("user_permission"); + }); + + modelBuilder.Entity("Timeline.Entities.TimelineEntity", b => + { + b.HasOne("Timeline.Entities.UserEntity", "Owner") + .WithMany("Timelines") + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Timeline.Entities.TimelineMemberEntity", b => + { + b.HasOne("Timeline.Entities.TimelineEntity", "Timeline") + .WithMany("Members") + .HasForeignKey("TimelineId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Timeline.Entities.UserEntity", "User") + .WithMany("TimelinesJoined") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Timeline"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Timeline.Entities.TimelinePostEntity", b => + { + b.HasOne("Timeline.Entities.UserEntity", "Author") + .WithMany("TimelinePosts") + .HasForeignKey("AuthorId"); + + b.HasOne("Timeline.Entities.TimelineEntity", "Timeline") + .WithMany("Posts") + .HasForeignKey("TimelineId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Timeline"); + }); + + modelBuilder.Entity("Timeline.Entities.UserAvatarEntity", b => + { + b.HasOne("Timeline.Entities.UserEntity", "User") + .WithOne("Avatar") + .HasForeignKey("Timeline.Entities.UserAvatarEntity", "UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Timeline.Entities.UserPermissionEntity", b => + { + b.HasOne("Timeline.Entities.UserEntity", "User") + .WithMany("Permissions") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Timeline.Entities.TimelineEntity", b => + { + b.Navigation("Members"); + + b.Navigation("Posts"); + }); + + modelBuilder.Entity("Timeline.Entities.UserEntity", b => + { + b.Navigation("Avatar"); + + b.Navigation("Permissions"); + + b.Navigation("TimelinePosts"); + + b.Navigation("Timelines"); + + b.Navigation("TimelinesJoined"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/BackEnd/Timeline/Migrations/20201112084015_AddUserPermission.cs b/BackEnd/Timeline/Migrations/20201112084015_AddUserPermission.cs new file mode 100644 index 00000000..b2288374 --- /dev/null +++ b/BackEnd/Timeline/Migrations/20201112084015_AddUserPermission.cs @@ -0,0 +1,41 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Timeline.Migrations +{ + public partial class AddUserPermission : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "user_permission", + columns: table => new + { + id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + user_id = table.Column(type: "INTEGER", nullable: false), + permission = table.Column(type: "TEXT", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_user_permission", x => x.id); + table.ForeignKey( + name: "FK_user_permission_users_user_id", + column: x => x.user_id, + principalTable: "users", + principalColumn: "id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_user_permission_user_id", + table: "user_permission", + column: "user_id"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "user_permission"); + } + } +} diff --git a/BackEnd/Timeline/Migrations/DatabaseContextModelSnapshot.cs b/BackEnd/Timeline/Migrations/DatabaseContextModelSnapshot.cs index 65ae6c9a..95bb0ff5 100644 --- a/BackEnd/Timeline/Migrations/DatabaseContextModelSnapshot.cs +++ b/BackEnd/Timeline/Migrations/DatabaseContextModelSnapshot.cs @@ -14,28 +14,28 @@ namespace Timeline.Migrations { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "3.1.7"); + .HasAnnotation("ProductVersion", "5.0.0"); modelBuilder.Entity("Timeline.Entities.DataEntity", b => { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("INTEGER"); + .HasColumnType("INTEGER") + .HasColumnName("id"); b.Property("Data") .IsRequired() - .HasColumnName("data") - .HasColumnType("BLOB"); + .HasColumnType("BLOB") + .HasColumnName("data"); b.Property("Ref") - .HasColumnName("ref") - .HasColumnType("INTEGER"); + .HasColumnType("INTEGER") + .HasColumnName("ref"); b.Property("Tag") .IsRequired() - .HasColumnName("tag") - .HasColumnType("TEXT"); + .HasColumnType("TEXT") + .HasColumnName("tag"); b.HasKey("Id"); @@ -49,13 +49,13 @@ namespace Timeline.Migrations { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("INTEGER"); + .HasColumnType("INTEGER") + .HasColumnName("id"); b.Property("Key") .IsRequired() - .HasColumnName("key") - .HasColumnType("BLOB"); + .HasColumnType("BLOB") + .HasColumnName("key"); b.HasKey("Id"); @@ -66,51 +66,51 @@ namespace Timeline.Migrations { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("INTEGER"); + .HasColumnType("INTEGER") + .HasColumnName("id"); b.Property("CreateTime") - .HasColumnName("create_time") - .HasColumnType("TEXT"); + .HasColumnType("TEXT") + .HasColumnName("create_time"); b.Property("CurrentPostLocalId") - .HasColumnName("current_post_local_id") - .HasColumnType("INTEGER"); + .HasColumnType("INTEGER") + .HasColumnName("current_post_local_id"); b.Property("Description") - .HasColumnName("description") - .HasColumnType("TEXT"); + .HasColumnType("TEXT") + .HasColumnName("description"); b.Property("LastModified") - .HasColumnName("last_modified") - .HasColumnType("TEXT"); + .HasColumnType("TEXT") + .HasColumnName("last_modified"); b.Property("Name") - .HasColumnName("name") - .HasColumnType("TEXT"); + .HasColumnType("TEXT") + .HasColumnName("name"); b.Property("NameLastModified") - .HasColumnName("name_last_modified") - .HasColumnType("TEXT"); + .HasColumnType("TEXT") + .HasColumnName("name_last_modified"); b.Property("OwnerId") - .HasColumnName("owner") - .HasColumnType("INTEGER"); + .HasColumnType("INTEGER") + .HasColumnName("owner"); b.Property("Title") - .HasColumnName("title") - .HasColumnType("TEXT"); + .HasColumnType("TEXT") + .HasColumnName("title"); b.Property("UniqueId") .IsRequired() .ValueGeneratedOnAdd() - .HasColumnName("unique_id") .HasColumnType("TEXT") + .HasColumnName("unique_id") .HasDefaultValueSql("lower(hex(randomblob(16)))"); b.Property("Visibility") - .HasColumnName("visibility") - .HasColumnType("INTEGER"); + .HasColumnType("INTEGER") + .HasColumnName("visibility"); b.HasKey("Id"); @@ -123,16 +123,16 @@ namespace Timeline.Migrations { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("INTEGER"); + .HasColumnType("INTEGER") + .HasColumnName("id"); b.Property("TimelineId") - .HasColumnName("timeline") - .HasColumnType("INTEGER"); + .HasColumnType("INTEGER") + .HasColumnName("timeline"); b.Property("UserId") - .HasColumnName("user") - .HasColumnType("INTEGER"); + .HasColumnType("INTEGER") + .HasColumnName("user"); b.HasKey("Id"); @@ -147,41 +147,41 @@ namespace Timeline.Migrations { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("INTEGER"); + .HasColumnType("INTEGER") + .HasColumnName("id"); b.Property("AuthorId") - .HasColumnName("author") - .HasColumnType("INTEGER"); + .HasColumnType("INTEGER") + .HasColumnName("author"); b.Property("Content") - .HasColumnName("content") - .HasColumnType("TEXT"); + .HasColumnType("TEXT") + .HasColumnName("content"); b.Property("ContentType") .IsRequired() - .HasColumnName("content_type") - .HasColumnType("TEXT"); + .HasColumnType("TEXT") + .HasColumnName("content_type"); b.Property("ExtraContent") - .HasColumnName("extra_content") - .HasColumnType("TEXT"); + .HasColumnType("TEXT") + .HasColumnName("extra_content"); b.Property("LastUpdated") - .HasColumnName("last_updated") - .HasColumnType("TEXT"); + .HasColumnType("TEXT") + .HasColumnName("last_updated"); b.Property("LocalId") - .HasColumnName("local_id") - .HasColumnType("INTEGER"); + .HasColumnType("INTEGER") + .HasColumnName("local_id"); b.Property("Time") - .HasColumnName("time") - .HasColumnType("TEXT"); + .HasColumnType("TEXT") + .HasColumnName("time"); b.Property("TimelineId") - .HasColumnName("timeline") - .HasColumnType("INTEGER"); + .HasColumnType("INTEGER") + .HasColumnName("timeline"); b.HasKey("Id"); @@ -196,24 +196,24 @@ namespace Timeline.Migrations { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("INTEGER"); + .HasColumnType("INTEGER") + .HasColumnName("id"); b.Property("DataTag") - .HasColumnName("data_tag") - .HasColumnType("TEXT"); + .HasColumnType("TEXT") + .HasColumnName("data_tag"); b.Property("LastModified") - .HasColumnName("last_modified") - .HasColumnType("TEXT"); + .HasColumnType("TEXT") + .HasColumnName("last_modified"); b.Property("Type") - .HasColumnName("type") - .HasColumnType("TEXT"); + .HasColumnType("TEXT") + .HasColumnName("type"); b.Property("UserId") - .HasColumnName("user") - .HasColumnType("INTEGER"); + .HasColumnType("INTEGER") + .HasColumnName("user"); b.HasKey("Id"); @@ -227,58 +227,58 @@ namespace Timeline.Migrations { b.Property("Id") .ValueGeneratedOnAdd() - .HasColumnName("id") - .HasColumnType("INTEGER"); + .HasColumnType("INTEGER") + .HasColumnName("id"); b.Property("CreateTime") .ValueGeneratedOnAdd() - .HasColumnName("create_time") .HasColumnType("TEXT") + .HasColumnName("create_time") .HasDefaultValueSql("datetime('now', 'utc')"); b.Property("LastModified") .ValueGeneratedOnAdd() - .HasColumnName("last_modified") .HasColumnType("TEXT") + .HasColumnName("last_modified") .HasDefaultValueSql("datetime('now', 'utc')"); b.Property("Nickname") - .HasColumnName("nickname") - .HasColumnType("TEXT"); + .HasColumnType("TEXT") + .HasColumnName("nickname"); b.Property("Password") .IsRequired() - .HasColumnName("password") - .HasColumnType("TEXT"); + .HasColumnType("TEXT") + .HasColumnName("password"); b.Property("Roles") .IsRequired() - .HasColumnName("roles") - .HasColumnType("TEXT"); + .HasColumnType("TEXT") + .HasColumnName("roles"); b.Property("UniqueId") .IsRequired() .ValueGeneratedOnAdd() - .HasColumnName("unique_id") .HasColumnType("TEXT") + .HasColumnName("unique_id") .HasDefaultValueSql("lower(hex(randomblob(16)))"); b.Property("Username") .IsRequired() - .HasColumnName("username") - .HasColumnType("TEXT"); + .HasColumnType("TEXT") + .HasColumnName("username"); b.Property("UsernameChangeTime") .ValueGeneratedOnAdd() - .HasColumnName("username_change_time") .HasColumnType("TEXT") + .HasColumnName("username_change_time") .HasDefaultValueSql("datetime('now', 'utc')"); b.Property("Version") .ValueGeneratedOnAdd() - .HasColumnName("version") .HasColumnType("INTEGER") - .HasDefaultValue(0L); + .HasDefaultValue(0L) + .HasColumnName("version"); b.HasKey("Id"); @@ -288,6 +288,29 @@ namespace Timeline.Migrations b.ToTable("users"); }); + modelBuilder.Entity("Timeline.Entities.UserPermissionEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER") + .HasColumnName("id"); + + b.Property("Permission") + .IsRequired() + .HasColumnType("TEXT") + .HasColumnName("permission"); + + b.Property("UserId") + .HasColumnType("INTEGER") + .HasColumnName("user_id"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("user_permission"); + }); + modelBuilder.Entity("Timeline.Entities.TimelineEntity", b => { b.HasOne("Timeline.Entities.UserEntity", "Owner") @@ -295,6 +318,8 @@ namespace Timeline.Migrations .HasForeignKey("OwnerId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + + b.Navigation("Owner"); }); modelBuilder.Entity("Timeline.Entities.TimelineMemberEntity", b => @@ -310,6 +335,10 @@ namespace Timeline.Migrations .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + + b.Navigation("Timeline"); + + b.Navigation("User"); }); modelBuilder.Entity("Timeline.Entities.TimelinePostEntity", b => @@ -323,6 +352,10 @@ namespace Timeline.Migrations .HasForeignKey("TimelineId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + + b.Navigation("Author"); + + b.Navigation("Timeline"); }); modelBuilder.Entity("Timeline.Entities.UserAvatarEntity", b => @@ -332,6 +365,39 @@ namespace Timeline.Migrations .HasForeignKey("Timeline.Entities.UserAvatarEntity", "UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Timeline.Entities.UserPermissionEntity", b => + { + b.HasOne("Timeline.Entities.UserEntity", "User") + .WithMany("Permissions") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Timeline.Entities.TimelineEntity", b => + { + b.Navigation("Members"); + + b.Navigation("Posts"); + }); + + modelBuilder.Entity("Timeline.Entities.UserEntity", b => + { + b.Navigation("Avatar"); + + b.Navigation("Permissions"); + + b.Navigation("TimelinePosts"); + + b.Navigation("Timelines"); + + b.Navigation("TimelinesJoined"); }); #pragma warning restore 612, 618 } -- cgit v1.2.3