diff --git a/src/Migrator/Migrations/Migration201907100900UserProfilesApi.cs b/src/Migrator/Migrations/Migration201907100900UserProfilesApi.cs new file mode 100644 index 0000000000000000000000000000000000000000..8deb1de7bfaea01841522410dd15b6ded961604f --- /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 a710f0a65f52700d100f7a18173ea2cd3df5499d..fc31a7310fe772882c0335bca3318115f0426950 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" />