Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
Loading items

Target

Select target project
  • coscine/backend/libraries/database
1 result
Select Git revision
Loading items
Show changes
Commits on Source (10)
Showing
with 204 additions and 85 deletions
......@@ -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" />
......