Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions src/Models/DatabaseConfiguration.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
using System;
using NFive.SDK.Core.Controllers;

namespace NFive.PluginManager.Models
{
public class DatabaseConfiguration : ControllerConfiguration
{
public override string FileName => "database";

public DatabaseConnectionConfiguration Connection { get; set; } = new DatabaseConnectionConfiguration();

public DatabaseMigrationsConfiguration Migrations { get; set; } = new DatabaseMigrationsConfiguration();

public DatabaseBootHistoryConfiguration BootHistory { get; set; } = new DatabaseBootHistoryConfiguration();

public class DatabaseConnectionConfiguration
{
public string Host { get; set; } = "localhost";

public int Port { get; set; } = 3306;

public string Database { get; set; } = "fivem";

public string User { get; set; } = "root";

public string Password { get; set; } = string.Empty;

public string Charset { get; set; } = "utf8mb4";

public bool Logging { get; set; } = false;

public override string ToString() => $"Host={this.Host};Port={this.Port};Database={this.Database};User Id={this.User};Password={this.Password};CharSet={this.Charset};SSL Mode=None;AllowPublicKeyRetrieval=true;Logging={this.Logging}";
}

public class DatabaseMigrationsConfiguration
{
public bool Automatic { get; set; } = true;
}

public class DatabaseBootHistoryConfiguration
{
private TimeSpan updateFrequency = TimeSpan.FromSeconds(15);

public TimeSpan UpdateFrequency
{
get => this.updateFrequency;
set => this.updateFrequency = TimeSpan.FromSeconds(Math.Max(value.TotalSeconds, 10));
}
}
}
}
45 changes: 43 additions & 2 deletions src/Modules/Migrate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using ConfigurationManager = NFive.SDK.Plugins.Configuration.ConfigurationManager;
using NFive.PluginManager.Models;

namespace NFive.PluginManager.Modules
{
Expand All @@ -30,7 +32,10 @@ internal class Migrate : Module
[Option("name", Required = true, HelpText = "Migration name.")]
public string Name { get; set; } = null;

[Option("db", Required = true, HelpText = "MySQL database connection string.")]
[Option("path", Required = true, HelpText = "NFive server path.")]
public string ServerPath { get; set; } = null;

[Option("db", Required = false, HelpText = "MySQL database connection string.")]
public string Database { get; set; } = null;

[Option("sln", Required = false, HelpText = "Visual Studio SLN solution file.")]
Expand All @@ -46,8 +51,44 @@ internal class Migrate : Module
[SuppressMessage("ReSharper", "ImplicitlyCapturedClosure")]
public override async Task<int> Main()
{
string originalDirectoty = Environment.CurrentDirectory;

if (this.Database == null)
{
try
{
Console.WriteLine($"Path: {this.ServerPath}");
Environment.CurrentDirectory = this.ServerPath;
PathManager.FindServer();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine("Make sure the path provided is a valid NFive server path.");
}

string dataBaseConfigYaml = Path.Combine(Environment.CurrentDirectory, "resources", "nfive", ConfigurationManager.ConfigurationPath, "database.yml");
DatabaseConfiguration databaseConfiguration = null;

try
{
databaseConfiguration = ConfigurationManager.Load<DatabaseConfiguration>(dataBaseConfigYaml);
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine("Make sure NFive is properly installed.");
}

this.Database = $"Host={databaseConfiguration.Connection.Host};Port={databaseConfiguration.Connection.Port};" +
$"Database={databaseConfiguration.Connection.Database};User Id={databaseConfiguration.Connection.User};" +
$"Password={databaseConfiguration.Connection.Password};CharSet={databaseConfiguration.Connection.Charset};SSL Mode=None";
Console.WriteLine(this.Database);
}

try
{
Environment.CurrentDirectory = originalDirectoty;
Environment.CurrentDirectory = PathManager.FindResource();
}
catch (FileNotFoundException ex)
Expand All @@ -56,7 +97,7 @@ public override async Task<int> Main()
Console.WriteLine("Use `nfpm scaffold` to generate a NFive plugin in this directory");

return 1;
}
}

AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
{
Expand Down
5 changes: 3 additions & 2 deletions src/PluginManager.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
<Compile Include="Console.cs" />
<Compile Include="Exceptions\GraphLoadException.cs" />
<Compile Include="Exceptions\DefinitionLoadException.cs" />
<Compile Include="Models\DatabaseConfiguration.cs" />
<Compile Include="Models\PartialVersion.cs" />
<Compile Include="Modules\Module.cs" />
<Compile Include="Utilities\Output.cs" />
Expand Down Expand Up @@ -139,8 +140,8 @@
<Reference Include="NFive.SDK.Plugins, Version=0.1.0.30, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NFive.SDK.Plugins.0.1.0.30\lib\net452\NFive.SDK.Plugins.dll</HintPath>
</Reference>
<Reference Include="NFive.SDK.Server.net, Version=0.1.0.51, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NFive.SDK.Server.0.1.0.51\lib\net452\NFive.SDK.Server.net.dll</HintPath>
<Reference Include="NFive.SDK.Server.net, Version=0.1.0.53, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NFive.SDK.Server.0.1.0.53\lib\net452\NFive.SDK.Server.net.dll</HintPath>
</Reference>
<Reference Include="Octokit, Version=0.32.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Octokit.0.32.0\lib\net45\Octokit.dll</HintPath>
Expand Down
2 changes: 1 addition & 1 deletion src/PluginManager.csproj.user
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<StartArguments>install</StartArguments>
<<StartArguments>install</StartArguments>
</PropertyGroup>
</Project>
2 changes: 1 addition & 1 deletion src/packages.config
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
<package id="NFive.SDK.Client" version="0.1.0.36" targetFramework="net452" />
<package id="NFive.SDK.Core" version="0.1.0.43" targetFramework="net452" />
<package id="NFive.SDK.Plugins" version="0.1.0.30" targetFramework="net452" />
<package id="NFive.SDK.Server" version="0.1.0.51" targetFramework="net452" />
<package id="NFive.SDK.Server" version="0.1.0.53" targetFramework="net452" />
<package id="Octokit" version="0.32.0" targetFramework="net452" />
<package id="Scriban" version="2.1.0" targetFramework="net452" />
<package id="SemanticVersioning" version="1.2.0" targetFramework="net452" />
Expand Down