Merge pull request #1239 from cnurse/dev

Implement Database Migrations and add Multi-Database Support
This commit is contained in:
Shaun Walker
2021-04-19 21:11:11 -04:00
committed by GitHub
108 changed files with 4006 additions and 453 deletions

View File

@ -3,6 +3,7 @@ namespace Oqtane.Shared
public class InstallConfig
{
public string ConnectionString { get; set; }
public string DatabaseType { get; set; }
public string Aliases { get; set; }
public string TenantName { get; set; }
public bool IsNewTenant { get; set; }

View File

@ -0,0 +1,59 @@
using System;
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Migrations.Operations;
using Microsoft.EntityFrameworkCore.Migrations.Operations.Builders;
using Oqtane.Interfaces;
using Oqtane.Models;
namespace Oqtane.Shared
{
public abstract class OqtaneDatabaseBase : IOqtaneDatabase
{
protected OqtaneDatabaseBase(string name, string friendlyName, List<ConnectionStringField> connectionStringFields)
{
Name = name;
FriendlyName = friendlyName;
ConnectionStringFields = connectionStringFields;
}
public string FriendlyName { get; }
public string Name { get; }
public abstract string Provider { get; }
public List<ConnectionStringField> ConnectionStringFields { get; }
public abstract OperationBuilder<AddColumnOperation> AddAutoIncrementColumn(ColumnsBuilder table, string name);
public abstract string BuildConnectionString();
public virtual string ConcatenateSql(params string[] values)
{
var returnValue = String.Empty;
for (var i = 0; i < values.Length; i++)
{
if (i > 0)
{
returnValue += " + ";
}
returnValue += values[i];
}
return returnValue;
}
public virtual string RewriteName(string name)
{
return name;
}
public virtual void UpdateIdentityStoreTableNames(ModelBuilder builder)
{
}
public abstract DbContextOptionsBuilder UseDatabase(DbContextOptionsBuilder optionsBuilder, string connectionString);
}
}

View File

@ -2,12 +2,18 @@
{
public static class SettingKeys
{
public const string ConnectionStringsSection = "ConnectionStrings";
public const string DatabaseSection = "Database";
public const string InstallationSection = "Installation";
public const string ConnectionStringKey = "DefaultConnection";
public const string DatabaseTypeKey = "DatabaseType";
public const string DefaultAliasKey = "DefaultAlias";
public const string HostPasswordKey = "HostPassword";
public const string HostEmailKey = "HostEmail";
public const string SiteTemplateKey = "SiteTemplate";
public const string ConnectionStringKey = "DefaultConnection";
public const string DefaultThemeKey = "DefaultTheme";
public const string DefaultLayoutKey = "DefaultLayout";
public const string DefaultContainerKey = "DefaultContainer";