From 00bf9efb6f8875f5ec1c87757617863f96640a1a Mon Sep 17 00:00:00 2001 From: David Schimmel <schimmel@itc.rwth-aachen.de> Date: Wed, 10 Jul 2019 10:36:54 +0200 Subject: [PATCH] Update: Added migration for user profiles (issues/coscine#156) --- .../Migration201907100900UserProfilesApi.cs | 91 +++++++++++++++++++ src/Migrator/Migrator.csproj | 1 + 2 files changed, 92 insertions(+) create mode 100644 src/Migrator/Migrations/Migration201907100900UserProfilesApi.cs diff --git a/src/Migrator/Migrations/Migration201907100900UserProfilesApi.cs b/src/Migrator/Migrations/Migration201907100900UserProfilesApi.cs new file mode 100644 index 0000000..8deb1de --- /dev/null +++ b/src/Migrator/Migrations/Migration201907100900UserProfilesApi.cs @@ -0,0 +1,91 @@ +using FluentMigrator; +namespace Coscine.Database.Migration.Migrations +{ + //yyyymmddhhmm + [Migration(201907100900)] + public class Migration201907100900UserProfilesApi : FluentMigrator.Migration + { + public override void Down() + { + #region Foreign Keys + Delete.ForeignKey() + .FromTable("GroupMemberships").ForeignColumn("UserId") + .ToTable("Users").PrimaryColumn("Id"); + + Delete.ForeignKey() + .FromTable("GroupMemberships").ForeignColumn("GroupId") + .ToTable("Groups").PrimaryColumn("Id"); + + Delete.ForeignKey() + .FromTable("ExternalIds").ForeignColumn("UserId") + .ToTable("Users").PrimaryColumn("Id"); + + Delete.ForeignKey() + .FromTable("ExternalIds").ForeignColumn("ResourceTypeId") + .ToTable("ExternalAuthenticators").PrimaryColumn("Id"); + #endregion + + #region + Delete.Table("Groups"); + Delete.Table("GroupMemberships"); + Delete.Table("ExternalAuthenticators"); + Delete.Table("ExternalIds"); + #endregion + + #region Columns + Delete.Column("EmailAddress").FromTable("Users"); + Delete.Column("DisplayName").FromTable("Users"); + #endregion + } + + public override void Up() + { + #region Existing Tables + Alter.Table("Users") + .AddColumn("EmailAddress").AsString(255).NotNullable() + .AddColumn("DisplayName").AsString(255).NotNullable(); + #endregion + + #region Independent Tables + Create.Table("Groups") + .WithColumn("Id").AsGuid().PrimaryKey().WithDefault(SystemMethods.NewGuid) + .WithColumn("Name").AsString(255).NotNullable(); + + Create.Table("ExternalAuthenticators") + .WithColumn("Id").AsGuid().PrimaryKey().WithDefault(SystemMethods.NewGuid) + .WithColumn("Name").AsString(50).NotNullable(); + #endregion + + #region GroupMemberships + Create.Table("GroupMemberships") + .WithColumn("RelationId").AsGuid().PrimaryKey().WithDefault(SystemMethods.NewGuid) + .WithColumn("GroupId").AsGuid().NotNullable() + .WithColumn("UserId").AsGuid().NotNullable(); + + Create.ForeignKey() + .FromTable("GroupMemberships").ForeignColumn("UserId") + .ToTable("Users").PrimaryColumn("Id"); + + Create.ForeignKey() + .FromTable("GroupMemberships").ForeignColumn("GroupId") + .ToTable("Groups").PrimaryColumn("Id"); + #endregion + + #region ExternalIds + Create.Table("ExternalIds") + .WithColumn("RelationId").AsGuid().PrimaryKey().WithDefault(SystemMethods.NewGuid) + .WithColumn("UserId").AsGuid().NotNullable() + .WithColumn("ResourceTypeId").AsGuid().NotNullable() + .WithColumn("ExtrenalId").AsString(255); + + Create.ForeignKey() + .FromTable("ExternalIds").ForeignColumn("UserId") + .ToTable("Users").PrimaryColumn("Id"); + + Create.ForeignKey() + .FromTable("ExternalIds").ForeignColumn("ResourceTypeId") + .ToTable("ExternalAuthenticators").PrimaryColumn("Id"); + #endregion + } + } +} diff --git a/src/Migrator/Migrator.csproj b/src/Migrator/Migrator.csproj index a710f0a..fc31a73 100644 --- a/src/Migrator/Migrator.csproj +++ b/src/Migrator/Migrator.csproj @@ -145,6 +145,7 @@ <ItemGroup> <Compile Include="Migrations\Migration201907011352ProjectApi.cs" /> <Compile Include="Migrations\Migration201907081510EnhanceProjectApi.cs" /> + <Compile Include="Migrations\Migration201907100900UserProfilesApi.cs" /> <Compile Include="Migrator.cs" /> <Compile Include="Program.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> -- GitLab