From beca0400c41b401eb910f476d3d74c081cf9c43d Mon Sep 17 00:00:00 2001
From: Marcel Nellesen <nellesen@itc.rwth-aachen.de>
Date: Mon, 16 Dec 2019 12:55:28 +0100
Subject: [PATCH] New: Add Attributes for Shibboleth Integration
 (coscine/issues#525) New: Altered DB for Bucket Application
 (coscine/issues#526)

---
 .../Migration201912060900BucketApplication.cs | 52 +++++++++++++++++++
 ...Migration201912091553ShibbolethAddition.cs | 33 ++++++++++++
 src/Migrator/Migrator.csproj                  |  6 ++-
 3 files changed, 89 insertions(+), 2 deletions(-)
 create mode 100644 src/Migrator/Migrations/Migration201912060900BucketApplication.cs
 create mode 100644 src/Migrator/Migrations/Migration201912091553ShibbolethAddition.cs

diff --git a/src/Migrator/Migrations/Migration201912060900BucketApplication.cs b/src/Migrator/Migrations/Migration201912060900BucketApplication.cs
new file mode 100644
index 0000000..91a2123
--- /dev/null
+++ b/src/Migrator/Migrations/Migration201912060900BucketApplication.cs
@@ -0,0 +1,52 @@
+using FluentMigrator;
+using System;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Xml;
+using System.Xml.Linq;
+
+#region DupFinder Exclusion
+namespace Coscine.Database.Migration.Migrations
+{
+    //yyyymmddhhmm
+    [Migration(201912060900)]
+    public class Migration201912060900BucketApplication : FluentMigrator.Migration
+    {
+        public override void Down()
+        {
+            // update the resource type table
+            Delete.FromTable("ResourceTypes").Row(new { DisplayName = "rds" });
+            Update.Table("ResourceTypes").Set(new { DisplayName = "rds" }).Where(new { DisplayName = "s3" });
+
+            // deletion of the table
+            Delete.Table("RDSResourceType");
+
+            // renaming of the s3resource table
+            Rename.Table("S3ResourceType").To("RDSResourceType");
+            Execute.Sql("EXEC sp_rename 'DF_S3ResourceType_Id','DF_RDSResourceType_Id', 'object'");
+            Execute.Sql("EXEC sp_rename N'PK_S3ResourceType', 'PK_RDSResourceType', 'object';");
+        }
+
+
+        public override void Up()
+        {
+            // update the resource type table
+            Update.Table("ResourceTypes").Set(new { DisplayName = "s3" }).Where(new { DisplayName = "rds" });
+            Insert.IntoTable("ResourceTypes").Row(new { DisplayName = "rds" });
+
+            // renaming of the rdsresource table
+            Rename.Table("RDSResourceType").To("S3ResourceType");
+            Execute.Sql("EXEC sp_rename 'DF_RDSResourceType_Id','DF_S3ResourceType_Id', 'object'");
+            Execute.Sql("EXEC sp_rename N'PK_RDSResourceType', 'PK_S3ResourceType', 'object';");
+
+            // creation of the new table
+            Create.Table("RDSResourceType")
+                .WithColumn("Id").AsGuid().PrimaryKey().WithDefault(SystemMethods.NewGuid)
+                .WithColumn("BucketName").AsString(63).NotNullable()
+                .WithColumn("Size").AsInt32().Nullable();
+        }
+
+    }
+}
+#endregion
\ No newline at end of file
diff --git a/src/Migrator/Migrations/Migration201912091553ShibbolethAddition.cs b/src/Migrator/Migrations/Migration201912091553ShibbolethAddition.cs
new file mode 100644
index 0000000..dab570b
--- /dev/null
+++ b/src/Migrator/Migrations/Migration201912091553ShibbolethAddition.cs
@@ -0,0 +1,33 @@
+using FluentMigrator;
+using System;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Xml;
+using System.Xml.Linq;
+
+#region DupFinder Exclusion
+namespace Coscine.Database.Migration.Migrations
+{
+    //yyyymmddhhmm
+    [Migration(201912091553)]
+    public class Migration201912091553ShibbolethAddition : FluentMigrator.Migration
+    {
+        public override void Down()
+        {
+            Delete.FromTable("ExternalAuthenticators").Row(new { DisplayName = "Shibboleth" });
+
+            Delete.Column("Entitlement").FromTable("Users");
+            Delete.Column("Organization").FromTable("Users");
+        }
+
+        public override void Up()
+        {
+            Insert.IntoTable("ExternalAuthenticators").Row(new { DisplayName = "Shibboleth" });
+
+            Alter.Table("Users").AddColumn("Entitlement").AsString(200).Nullable();
+            Alter.Table("Users").AddColumn("Organization").AsString(200).Nullable();
+        }
+    }
+}
+#endregion
\ No newline at end of file
diff --git a/src/Migrator/Migrator.csproj b/src/Migrator/Migrator.csproj
index 55ca067..0f32d6f 100644
--- a/src/Migrator/Migrator.csproj
+++ b/src/Migrator/Migrator.csproj
@@ -155,8 +155,10 @@
     <Compile Include="Migrations\Migration201907100900UserProfilesApi.cs" />
     <Compile Include="Migrations\Migration201908231520ResourceDisplayName.cs" />
     <Compile Include="Migrations\Migration201910161154InstitutesDisciplines.cs" />
-	<Compile Include="Migrations\Migration201910241600ResourceMetadata.cs" />
-	<Compile Include="Migrations\Migration201911040900EnglishDFG.cs" />
+    <Compile Include="Migrations\Migration201910241600ResourceMetadata.cs" />
+    <Compile Include="Migrations\Migration201911040900EnglishDFG.cs" />
+    <Compile Include="Migrations\Migration201912060900BucketApplication.cs" />
+    <Compile Include="Migrations\Migration201912091553ShibbolethAddition.cs" />
     <Compile Include="Migrator.cs" />
     <Compile Include="Program.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-- 
GitLab