Skip to content

Commits on Source 10

......@@ -84,7 +84,7 @@
<Compile Include="ModelTests.cs" />
<Compile Include="Migrations\TestMigrations.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="TestMopedDB.cs" />
<Compile Include="TestCoscineDB.cs" />
</ItemGroup>
<ItemGroup>
<None Include="LinqToDB.Templates\DataAnnotations.ttinclude" />
......
using FluentMigrator;
namespace Migrator.Migrations
namespace Coscine.Database.Tests.Migrations
{
[Migration(333301010000)]
public class SampleMigrationUsers : Migration
public class SampleMigrationUsers : FluentMigrator.Migration
{
public override void Up()
{
......@@ -23,7 +23,7 @@ namespace Migrator.Migrations
}
[Migration(333301010001)]
public class SampleMigrationProjects : Migration
public class SampleMigrationProjects : FluentMigrator.Migration
{
public override void Up()
{
......
using Coscine.Database.Model;
using LinqToDB;
using LinqToDB;
using NUnit.Framework;
using System.Linq;
namespace Coscine.Database
namespace Coscine.Database.Tests
{
[TestFixture]
public class ModelTests
......@@ -36,7 +35,7 @@ namespace Coscine.Database
[Test]
public void TestRead()
{
using (var db = new TestMopedDB(_providerName, _connectionString))
using (var db = new TestCoscineDb(_providerName, _connectionString))
{
var q =
from p in db.TestUsers
......@@ -50,7 +49,7 @@ namespace Coscine.Database
[Test]
public void TestInsert()
{
using (var db = new TestMopedDB(_providerName, _connectionString))
using (var db = new TestCoscineDb(_providerName, _connectionString))
{
db.TestProjects
.Value(p => p.ProjectName, "project4")
......@@ -67,7 +66,7 @@ namespace Coscine.Database
[Test]
public void TestDelete()
{
using (var db = new TestMopedDB(_providerName, _connectionString))
using (var db = new TestCoscineDb(_providerName, _connectionString))
{
db.TestUsers
.Where(p => p.UserId == 3)
......@@ -85,7 +84,7 @@ namespace Coscine.Database
[Test]
public void TestJoin()
{
using (var db = new TestMopedDB(_providerName, _connectionString))
using (var db = new TestCoscineDb(_providerName, _connectionString))
{
var q =
from u in db.TestUsers
......
......@@ -9,8 +9,8 @@ using System.Reflection;
[assembly: AssemblyDescription("Database.Tests is a part of the CoScInE group.")]
[assembly: AssemblyCompany("IT Center, RWTH Aachen University")]
[assembly: AssemblyProduct("Database.Tests")]
[assembly: AssemblyVersion("1.1.0.0")]
[assembly: AssemblyFileVersion("1.1.0.0")]
[assembly: AssemblyInformationalVersion("1.1.0.0")]
[assembly: AssemblyVersion("1.2.0.0")]
[assembly: AssemblyFileVersion("1.2.0.0")]
[assembly: AssemblyInformationalVersion("1.2.0.0")]
[assembly: AssemblyCopyright("2019 IT Center, RWTH Aachen University")]
using LinqToDB;
using Coscine.Database.Model;
using LinqToDB;
using LinqToDB.Mapping;
namespace Coscine.Database.Model
namespace Coscine.Database.Tests
{
/// <summary>
/// Database : moped
/// Data Source : d-db-d02
/// Server Version : 10.50.6560
/// </summary>
public class TestMopedDB : MopedDB
public class TestCoscineDb : CoscineDB
{
public TestMopedDB(string providerName, string connectionString) : base(providerName, connectionString)
public TestCoscineDb(string providerName, string connectionString) : base(providerName, connectionString)
{
}
public ITable<TestProject> TestProjects { get { return this.GetTable<TestProject>(); } }
public ITable<TestUser> TestUsers { get { return this.GetTable<TestUser>(); } }
public ITable<TestProject> TestProjects { get => GetTable<TestProject>(); }
public ITable<TestUser> TestUsers { get => GetTable<TestUser>(); }
}
[Table(Schema = "dbo", Name = "TestProjects")]
......
namespace Coscine.Database.Model
{
public partial class MopedDB
public partial class CoscineDB
{
public MopedDB(string providerName, string connectionString)
public CoscineDB(string providerName, string connectionString)
: base(providerName, connectionString)
{
InitDataContext();
......
......@@ -43,8 +43,8 @@
<Reference Include="Consul, Version=0.7.2.6, Culture=neutral, PublicKeyToken=20a6ad9a81df1d95, processorArchitecture=MSIL">
<HintPath>..\packages\Consul.0.7.2.6\lib\net45\Consul.dll</HintPath>
</Reference>
<Reference Include="Coscine.Configuration, Version=1.3.1.0, Culture=neutral, PublicKeyToken=ce3d7a32d7dc1e5a, processorArchitecture=MSIL">
<HintPath>..\packages\Coscine.Configuration.1.3.1\lib\net461\Coscine.Configuration.dll</HintPath>
<Reference Include="Coscine.Configuration, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ce3d7a32d7dc1e5a, processorArchitecture=MSIL">
<HintPath>..\packages\Coscine.Configuration.1.4.0\lib\net461\Coscine.Configuration.dll</HintPath>
</Reference>
<Reference Include="linq2db, Version=2.6.4.0, Culture=neutral, PublicKeyToken=e41013125f9e410a, processorArchitecture=MSIL">
<HintPath>..\packages\linq2db.2.6.4\lib\net46\linq2db.dll</HintPath>
......
<#@ assembly name="$(ProjectDir)..\packages\Coscine.Configuration.1.3.1\lib\net461\Coscine.Configuration.dll"#>
<#@ assembly name="$(ProjectDir)..\packages\Coscine.Configuration.1.4.0\lib\net461\Coscine.Configuration.dll"#>
<#@ import namespace="Coscine.Configuration" #>
<#@ assembly name="$(ProjectDir)..\packages\Consul.0.7.2.6\lib\net45\Consul.dll"#>
<#@ import namespace="Consul" #>
......
......@@ -9,8 +9,8 @@ using System.Reflection;
[assembly: AssemblyDescription("Database is a part of the CoScInE group.")]
[assembly: AssemblyCompany("IT Center, RWTH Aachen University")]
[assembly: AssemblyProduct("Database")]
[assembly: AssemblyVersion("1.1.0.0")]
[assembly: AssemblyFileVersion("1.1.0.0")]
[assembly: AssemblyInformationalVersion("1.1.0.0")]
[assembly: AssemblyVersion("1.2.0.0")]
[assembly: AssemblyFileVersion("1.2.0.0")]
[assembly: AssemblyInformationalVersion("1.2.0.0")]
[assembly: AssemblyCopyright("2019 IT Center, RWTH Aachen University")]
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Consul" version="0.7.2.6" targetFramework="net461" />
<package id="Coscine.Configuration" version="1.3.1" targetFramework="net461" />
<package id="Coscine.Configuration" version="1.4.0" targetFramework="net461" />
<package id="linq2db" version="2.6.4" targetFramework="net461" />
<package id="linq2db.SqlServer" version="2.6.4" targetFramework="net461" />
<package id="linq2db.t4models" version="2.6.4" targetFramework="net461" />
......
using FluentMigrator;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Coscine.Database.Migration.Migrations
{
[Migration(0)]
public class _00000000_Default : FluentMigrator.Migration
{
public override void Down()
{
}
public override void Up()
{
}
}
}
using FluentMigrator;
namespace Coscine.Database.Migration.Migrations
{
//yyyymmddhhmm
[Migration(201907011352)]
public class Migration201907011352ProjectApi : FluentMigrator.Migration
{
public override void Down()
{
#region Foreign Keys
Delete.ForeignKey()
.FromTable("Resources").ForeignColumn("TypeId")
.ToTable("ResourceTypes").PrimaryColumn("Id");
Delete.ForeignKey()
.FromTable("SubProjects").ForeignColumn("ProjectId")
.ToTable("Projects").PrimaryColumn("Id");
Delete.ForeignKey()
.FromTable("SubProjects").ForeignColumn("SubProjectId")
.ToTable("Projects").PrimaryColumn("Id");
Delete.ForeignKey()
.FromTable("ProjectResource").ForeignColumn("ResourceId")
.ToTable("Resources").PrimaryColumn("Id");
Delete.ForeignKey()
.FromTable("ProjectResource").ForeignColumn("ProjectId")
.ToTable("Projects").PrimaryColumn("Id");
Delete.ForeignKey()
.FromTable("ProjectRoles").ForeignColumn("ProjectId")
.ToTable("Projects").PrimaryColumn("Id");
Delete.ForeignKey()
.FromTable("ProjectRoles").ForeignColumn("UserId")
.ToTable("Users").PrimaryColumn("Id");
Delete.ForeignKey()
.FromTable("ProjectRoles").ForeignColumn("RoleId")
.ToTable("Roles").PrimaryColumn("Id");
#endregion
#region Tables
Delete.Table("ResourceTypes");
Delete.Table("Projects");
Delete.Table("Users");
Delete.Table("Roles");
Delete.Table("Resources");
Delete.Table("SubProjects");
Delete.Table("ProjectResource");
Delete.Table("ProjectRoles");
#endregion
}
public override void Up()
{
#region Independent Tables
Create.Table("ResourceTypes")
.WithColumn("Id").AsGuid().PrimaryKey().WithDefault(SystemMethods.NewGuid)
.WithColumn("DisplayName").AsString(50).NotNullable();
Create.Table("Projects")
.WithColumn("Id").AsGuid().PrimaryKey().WithDefault(SystemMethods.NewGuid)
.WithColumn("DisplayName").AsString(200).NotNullable()
.WithColumn("Description").AsString(1000).NotNullable()
.WithColumn("Organization").AsString(50).NotNullable();
Create.Table("Users")
.WithColumn("Id").AsGuid().PrimaryKey().WithDefault(SystemMethods.NewGuid);
Create.Table("Roles")
.WithColumn("Id").AsGuid().PrimaryKey().WithDefault(SystemMethods.NewGuid)
.WithColumn("DisplayName").AsString(50).NotNullable()
.WithColumn("Description").AsString(50).NotNullable();
Insert.IntoTable("Roles").Row(new { DisplayName = "Owner", Description = "Owner of the project." });
#endregion
#region Resources
Create.Table("Resources")
.WithColumn("Id").AsGuid().PrimaryKey().WithDefault(SystemMethods.NewGuid)
.WithColumn("Url").AsString(200).NotNullable()
.WithColumn("ExternalId").AsString(200).NotNullable()
.WithColumn("TypeId").AsGuid().NotNullable();
Create.ForeignKey()
.FromTable("Resources").ForeignColumn("TypeId")
.ToTable("ResourceTypes").PrimaryColumn("Id");
#endregion
#region SubProjects
Create.Table("SubProjects")
.WithColumn("RelationId").AsGuid().PrimaryKey().WithDefault(SystemMethods.NewGuid)
.WithColumn("ProjectId").AsGuid().NotNullable()
.WithColumn("SubProjectId").AsGuid().NotNullable();
Create.ForeignKey()
.FromTable("SubProjects").ForeignColumn("ProjectId")
.ToTable("Projects").PrimaryColumn("Id");
Create.ForeignKey()
.FromTable("SubProjects").ForeignColumn("SubProjectId")
.ToTable("Projects").PrimaryColumn("Id");
#endregion
#region ProjectResource
Create.Table("ProjectResource")
.WithColumn("RelationId").AsGuid().PrimaryKey().WithDefault(SystemMethods.NewGuid)
.WithColumn("ResourceID").AsGuid().NotNullable()
.WithColumn("ProjectId").AsGuid().NotNullable();
Create.ForeignKey()
.FromTable("ProjectResource").ForeignColumn("ResourceId")
.ToTable("Resources").PrimaryColumn("Id");
Create.ForeignKey()
.FromTable("ProjectResource").ForeignColumn("ProjectId")
.ToTable("Projects").PrimaryColumn("Id");
#endregion
#region ProjectRoles
Create.Table("ProjectRoles")
.WithColumn("RelationId").AsGuid().PrimaryKey().WithDefault(SystemMethods.NewGuid)
.WithColumn("ProjectId").AsGuid().NotNullable()
.WithColumn("UserId").AsGuid().NotNullable()
.WithColumn("RoleId").AsGuid().NotNullable();
Create.ForeignKey()
.FromTable("ProjectRoles").ForeignColumn("ProjectId")
.ToTable("Projects").PrimaryColumn("Id");
Create.ForeignKey()
.FromTable("ProjectRoles").ForeignColumn("UserId")
.ToTable("Users").PrimaryColumn("Id");
Create.ForeignKey()
.FromTable("ProjectRoles").ForeignColumn("RoleId")
.ToTable("Roles").PrimaryColumn("Id");
#endregion
}
}
}
......@@ -7,10 +7,10 @@ namespace Coscine.Database.Migration
public class Migrator
{
// Format: Data Source={DBSERVER};Database={DATABASENAME};User Id={USER};Password={PASSWORD};
const string DbDataSourceKey = "coscine/global/db_data_source";
const string DbNameKey = "coscine/global/db_name";
const string DbUserIdKey = "coscine/global/db_user_id";
const string DbPasswordKey = "coscine/global/db_password";
private const string DbDataSourceKey = "coscine/global/db_data_source";
private const string DbNameKey = "coscine/global/db_name";
private const string DbUserIdKey = "coscine/global/db_user_id";
private const string DbPasswordKey = "coscine/global/db_password";
private readonly IConfiguration _configuration;
private ServiceProvider _serviceProvider;
......@@ -50,9 +50,7 @@ namespace Coscine.Database.Migration
var dbDatabase = _configuration.GetString(DbNameKey);
var dbUserId = _configuration.GetString(DbUserIdKey);
var dbPassword = _configuration.GetString(DbPasswordKey);
string dbConnectionString = $"Data Source={dbDataSource}; Database={dbDatabase}; User Id={dbUserId}; Password={dbPassword};";
return dbConnectionString;
return $"Data Source={dbDataSource}; Database={dbDatabase}; User Id={dbUserId}; Password={dbPassword};";
}
public void MigrateUp()
......
......@@ -38,8 +38,8 @@
<Reference Include="Consul, Version=0.7.2.6, Culture=neutral, PublicKeyToken=20a6ad9a81df1d95, processorArchitecture=MSIL">
<HintPath>..\packages\Consul.0.7.2.6\lib\net45\Consul.dll</HintPath>
</Reference>
<Reference Include="Coscine.Configuration, Version=1.3.1.0, Culture=neutral, PublicKeyToken=ce3d7a32d7dc1e5a, processorArchitecture=MSIL">
<HintPath>..\packages\Coscine.Configuration.1.3.1\lib\net461\Coscine.Configuration.dll</HintPath>
<Reference Include="Coscine.Configuration, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ce3d7a32d7dc1e5a, processorArchitecture=MSIL">
<HintPath>..\packages\Coscine.Configuration.1.4.0\lib\net461\Coscine.Configuration.dll</HintPath>
</Reference>
<Reference Include="FluentMigrator, Version=3.1.3.0, Culture=neutral, PublicKeyToken=aacfc7de5acabf05, processorArchitecture=MSIL">
<HintPath>..\packages\FluentMigrator.3.1.3\lib\net461\FluentMigrator.dll</HintPath>
......@@ -143,7 +143,7 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Migrations\00000000_Default.cs" />
<Compile Include="Migrations\Migration201907011352ProjectApi.cs" />
<Compile Include="Migrator.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
......
......@@ -11,15 +11,15 @@ namespace Coscine.Database.Migration
public static void Main(string[] args)
{
var targetAssembly = typeof(Program).Assembly;
Migrator migrator = new Migrator(targetAssembly);
if (args.Length == 0)
{
PrintHelp();
}
else
{
var targetAssembly = typeof(Program).Assembly;
var migrator = new Migrator(targetAssembly);
switch (args[0])
{
case "--migrate_up":
......@@ -40,13 +40,9 @@ namespace Coscine.Database.Migration
Console.WriteLine("Invalid number of arguments provided for --roll_back (2).");
break;
}
int steps;
if(!int.TryParse(args[1], out steps))
{
Console.WriteLine("Argument missing or invalid. Please enter the number of steps to roll back!");
break;
}
if (int.TryParse(args[1], out var steps))
{
try
{
migrator.RollBack(steps);
......@@ -56,6 +52,13 @@ namespace Coscine.Database.Migration
Console.WriteLine("Something went wrong trying to roll back.");
Console.WriteLine("Error Message: " + e);
}
}
else
{
Console.WriteLine("Argument missing or invalid. Please enter the number of steps to roll back!");
}
break;
default:
......
......@@ -9,8 +9,8 @@ using System.Reflection;
[assembly: AssemblyDescription("Migrator is a part of the CoScInE group.")]
[assembly: AssemblyCompany("IT Center, RWTH Aachen University")]
[assembly: AssemblyProduct("Migrator")]
[assembly: AssemblyVersion("1.1.0.0")]
[assembly: AssemblyFileVersion("1.1.0.0")]
[assembly: AssemblyInformationalVersion("1.1.0.0")]
[assembly: AssemblyVersion("1.2.0.0")]
[assembly: AssemblyFileVersion("1.2.0.0")]
[assembly: AssemblyInformationalVersion("1.2.0.0")]
[assembly: AssemblyCopyright("2019 IT Center, RWTH Aachen University")]
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Consul" version="0.7.2.6" targetFramework="net461" />
<package id="Coscine.Configuration" version="1.3.1" targetFramework="net461" />
<package id="Coscine.Configuration" version="1.4.0" targetFramework="net461" />
<package id="FluentMigrator" version="3.1.3" targetFramework="net461" />
<package id="FluentMigrator.Abstractions" version="3.1.3" targetFramework="net461" />
<package id="FluentMigrator.Console" version="3.1.3" targetFramework="net461" />
......