From 50b7ae57409199b80b236c758a878bd42e0f21bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=82ngelo=20Tadeucci?= Date: Fri, 26 Apr 2024 21:37:58 -0300 Subject: [PATCH] feat: simplify db setup (#4) --- .../Maple2.Database.Seed.csproj | 20 ++++ Maple2.Database.Seed/Program.cs | 73 ++++++++++++++ Maple2.Tools/Paths.cs | 4 +- Maple2.sln | 98 +++++++++++++++++++ 4 files changed, 194 insertions(+), 1 deletion(-) create mode 100644 Maple2.Database.Seed/Maple2.Database.Seed.csproj create mode 100644 Maple2.Database.Seed/Program.cs diff --git a/Maple2.Database.Seed/Maple2.Database.Seed.csproj b/Maple2.Database.Seed/Maple2.Database.Seed.csproj new file mode 100644 index 00000000..24ea03f6 --- /dev/null +++ b/Maple2.Database.Seed/Maple2.Database.Seed.csproj @@ -0,0 +1,20 @@ + + + + Exe + net7.0 + enable + enable + + + + + + + + + + + + + diff --git a/Maple2.Database.Seed/Program.cs b/Maple2.Database.Seed/Program.cs new file mode 100644 index 00000000..c472fd69 --- /dev/null +++ b/Maple2.Database.Seed/Program.cs @@ -0,0 +1,73 @@ +using Maple2.Database.Context; +using Maple2.Tools; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; +using System.Diagnostics; + +DotEnv.Load(); + +string? server = Environment.GetEnvironmentVariable("DB_IP"); +string? port = Environment.GetEnvironmentVariable("DB_PORT"); +string? database = Environment.GetEnvironmentVariable("DATA_DB_NAME"); +string? user = Environment.GetEnvironmentVariable("DB_USER"); +string? password = Environment.GetEnvironmentVariable("DB_PASSWORD"); + +if (server == null || port == null || database == null || user == null || password == null) +{ + throw new ArgumentException("Database connection information was not set"); +} + +string dataDbConnection = $"Server={server};Port={port};Database={database};User={user};Password={password};oldguids=true"; + +string worldServerDir = Path.Combine(Paths.SOLUTION_DIR, "Maple2.Server.World"); + +string cmdCommand = "cd " + worldServerDir + " && dotnet ef database update"; + +Console.WriteLine("Migrating..."); + +Process process = Process.Start("CMD.exe", "/C " + cmdCommand); + +process.WaitForExit(); + +Console.WriteLine("Migration complete!"); + +DbContextOptions options = new DbContextOptionsBuilder() + .UseMySql(dataDbConnection, ServerVersion.AutoDetect(dataDbConnection)).Options; + +using var ms2Context = new Ms2Context(options); + +string[] seeds = + { + "shops", "shop_items", "beauty_shops", "beauty_shop_items", "game_event", "system_banner", "premium_market_item" + }; + +Console.WriteLine("Seeding..."); + +foreach (string seed in seeds) +{ + Seed(seed); +} + +Console.WriteLine("Seeding complete!"); + + +void Seed(string type) +{ + Stopwatch stopwatch = new(); + + Console.Write($"Seeding {type}... "); + + string fileLines = File.ReadAllText(Path.Combine(Paths.DB_SEEDS_DIR, $"{type}.sql")); + ExecuteSqlFile(fileLines); + + Console.Write($"finished in {stopwatch.ElapsedMilliseconds}ms"); + Console.WriteLine(); +} + +void ExecuteSqlFile(string fileLines) +{ + fileLines = fileLines.Replace("\n", "").Replace("\r", "").Replace("\t", "").Replace("{", "{{").Replace("}", "}}"); + + ms2Context.Database.ExecuteSqlRaw(fileLines); +} + diff --git a/Maple2.Tools/Paths.cs b/Maple2.Tools/Paths.cs index f3cbad48..3245e58d 100644 --- a/Maple2.Tools/Paths.cs +++ b/Maple2.Tools/Paths.cs @@ -5,5 +5,7 @@ namespace Maple2.Tools; public static class Paths { public static readonly string SOLUTION_DIR = Path.GetFullPath(Path.Combine(AppContext.BaseDirectory, "../../../..")); - public static readonly string GAME_SCRIPTS_DIR = $"{SOLUTION_DIR}/Maple2.Server.Game/Scripts"; + public static readonly string GAME_SCRIPTS_DIR = Path.Combine(SOLUTION_DIR, "Maple2.Server.Game", "Scripts"); + + public static readonly string DB_SEEDS_DIR = Path.Combine(SOLUTION_DIR, "Maple2.Database.Seed", "Seeds"); } diff --git a/Maple2.sln b/Maple2.sln index 5501b8e3..ccc21f27 100644 --- a/Maple2.sln +++ b/Maple2.sln @@ -29,52 +29,150 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution .env.example = .env.example EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Maple2.Database.Seed", "Maple2.Database.Seed\Maple2.Database.Seed.csproj", "{72D04ED1-9622-4335-AC9A-0F4C98B73101}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {B2B4EC86-164D-4723-A0AA-428810D761D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B2B4EC86-164D-4723-A0AA-428810D761D9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B2B4EC86-164D-4723-A0AA-428810D761D9}.Debug|x64.ActiveCfg = Debug|Any CPU + {B2B4EC86-164D-4723-A0AA-428810D761D9}.Debug|x64.Build.0 = Debug|Any CPU + {B2B4EC86-164D-4723-A0AA-428810D761D9}.Debug|x86.ActiveCfg = Debug|Any CPU + {B2B4EC86-164D-4723-A0AA-428810D761D9}.Debug|x86.Build.0 = Debug|Any CPU {B2B4EC86-164D-4723-A0AA-428810D761D9}.Release|Any CPU.ActiveCfg = Release|Any CPU {B2B4EC86-164D-4723-A0AA-428810D761D9}.Release|Any CPU.Build.0 = Release|Any CPU + {B2B4EC86-164D-4723-A0AA-428810D761D9}.Release|x64.ActiveCfg = Release|Any CPU + {B2B4EC86-164D-4723-A0AA-428810D761D9}.Release|x64.Build.0 = Release|Any CPU + {B2B4EC86-164D-4723-A0AA-428810D761D9}.Release|x86.ActiveCfg = Release|Any CPU + {B2B4EC86-164D-4723-A0AA-428810D761D9}.Release|x86.Build.0 = Release|Any CPU {21491E48-28A7-4643-B1D9-A9330581395D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {21491E48-28A7-4643-B1D9-A9330581395D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {21491E48-28A7-4643-B1D9-A9330581395D}.Debug|x64.ActiveCfg = Debug|Any CPU + {21491E48-28A7-4643-B1D9-A9330581395D}.Debug|x64.Build.0 = Debug|Any CPU + {21491E48-28A7-4643-B1D9-A9330581395D}.Debug|x86.ActiveCfg = Debug|Any CPU + {21491E48-28A7-4643-B1D9-A9330581395D}.Debug|x86.Build.0 = Debug|Any CPU {21491E48-28A7-4643-B1D9-A9330581395D}.Release|Any CPU.ActiveCfg = Release|Any CPU {21491E48-28A7-4643-B1D9-A9330581395D}.Release|Any CPU.Build.0 = Release|Any CPU + {21491E48-28A7-4643-B1D9-A9330581395D}.Release|x64.ActiveCfg = Release|Any CPU + {21491E48-28A7-4643-B1D9-A9330581395D}.Release|x64.Build.0 = Release|Any CPU + {21491E48-28A7-4643-B1D9-A9330581395D}.Release|x86.ActiveCfg = Release|Any CPU + {21491E48-28A7-4643-B1D9-A9330581395D}.Release|x86.Build.0 = Release|Any CPU {40400AA8-36E6-4704-969F-447ECFFDBE0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {40400AA8-36E6-4704-969F-447ECFFDBE0B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {40400AA8-36E6-4704-969F-447ECFFDBE0B}.Debug|x64.ActiveCfg = Debug|Any CPU + {40400AA8-36E6-4704-969F-447ECFFDBE0B}.Debug|x64.Build.0 = Debug|Any CPU + {40400AA8-36E6-4704-969F-447ECFFDBE0B}.Debug|x86.ActiveCfg = Debug|Any CPU + {40400AA8-36E6-4704-969F-447ECFFDBE0B}.Debug|x86.Build.0 = Debug|Any CPU {40400AA8-36E6-4704-969F-447ECFFDBE0B}.Release|Any CPU.ActiveCfg = Release|Any CPU {40400AA8-36E6-4704-969F-447ECFFDBE0B}.Release|Any CPU.Build.0 = Release|Any CPU + {40400AA8-36E6-4704-969F-447ECFFDBE0B}.Release|x64.ActiveCfg = Release|Any CPU + {40400AA8-36E6-4704-969F-447ECFFDBE0B}.Release|x64.Build.0 = Release|Any CPU + {40400AA8-36E6-4704-969F-447ECFFDBE0B}.Release|x86.ActiveCfg = Release|Any CPU + {40400AA8-36E6-4704-969F-447ECFFDBE0B}.Release|x86.Build.0 = Release|Any CPU {A7478B44-723D-447C-9533-0BABDD9BD1FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A7478B44-723D-447C-9533-0BABDD9BD1FF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A7478B44-723D-447C-9533-0BABDD9BD1FF}.Debug|x64.ActiveCfg = Debug|Any CPU + {A7478B44-723D-447C-9533-0BABDD9BD1FF}.Debug|x64.Build.0 = Debug|Any CPU + {A7478B44-723D-447C-9533-0BABDD9BD1FF}.Debug|x86.ActiveCfg = Debug|Any CPU + {A7478B44-723D-447C-9533-0BABDD9BD1FF}.Debug|x86.Build.0 = Debug|Any CPU {A7478B44-723D-447C-9533-0BABDD9BD1FF}.Release|Any CPU.ActiveCfg = Release|Any CPU {A7478B44-723D-447C-9533-0BABDD9BD1FF}.Release|Any CPU.Build.0 = Release|Any CPU + {A7478B44-723D-447C-9533-0BABDD9BD1FF}.Release|x64.ActiveCfg = Release|Any CPU + {A7478B44-723D-447C-9533-0BABDD9BD1FF}.Release|x64.Build.0 = Release|Any CPU + {A7478B44-723D-447C-9533-0BABDD9BD1FF}.Release|x86.ActiveCfg = Release|Any CPU + {A7478B44-723D-447C-9533-0BABDD9BD1FF}.Release|x86.Build.0 = Release|Any CPU {0D7A7D52-CA81-40FD-ADA4-F94C61991809}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0D7A7D52-CA81-40FD-ADA4-F94C61991809}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0D7A7D52-CA81-40FD-ADA4-F94C61991809}.Debug|x64.ActiveCfg = Debug|Any CPU + {0D7A7D52-CA81-40FD-ADA4-F94C61991809}.Debug|x64.Build.0 = Debug|Any CPU + {0D7A7D52-CA81-40FD-ADA4-F94C61991809}.Debug|x86.ActiveCfg = Debug|Any CPU + {0D7A7D52-CA81-40FD-ADA4-F94C61991809}.Debug|x86.Build.0 = Debug|Any CPU {0D7A7D52-CA81-40FD-ADA4-F94C61991809}.Release|Any CPU.ActiveCfg = Release|Any CPU {0D7A7D52-CA81-40FD-ADA4-F94C61991809}.Release|Any CPU.Build.0 = Release|Any CPU + {0D7A7D52-CA81-40FD-ADA4-F94C61991809}.Release|x64.ActiveCfg = Release|Any CPU + {0D7A7D52-CA81-40FD-ADA4-F94C61991809}.Release|x64.Build.0 = Release|Any CPU + {0D7A7D52-CA81-40FD-ADA4-F94C61991809}.Release|x86.ActiveCfg = Release|Any CPU + {0D7A7D52-CA81-40FD-ADA4-F94C61991809}.Release|x86.Build.0 = Release|Any CPU {1AE01DB0-C088-4CC1-8B5E-B6734A5F7FC4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1AE01DB0-C088-4CC1-8B5E-B6734A5F7FC4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1AE01DB0-C088-4CC1-8B5E-B6734A5F7FC4}.Debug|x64.ActiveCfg = Debug|Any CPU + {1AE01DB0-C088-4CC1-8B5E-B6734A5F7FC4}.Debug|x64.Build.0 = Debug|Any CPU + {1AE01DB0-C088-4CC1-8B5E-B6734A5F7FC4}.Debug|x86.ActiveCfg = Debug|Any CPU + {1AE01DB0-C088-4CC1-8B5E-B6734A5F7FC4}.Debug|x86.Build.0 = Debug|Any CPU {1AE01DB0-C088-4CC1-8B5E-B6734A5F7FC4}.Release|Any CPU.ActiveCfg = Release|Any CPU {1AE01DB0-C088-4CC1-8B5E-B6734A5F7FC4}.Release|Any CPU.Build.0 = Release|Any CPU + {1AE01DB0-C088-4CC1-8B5E-B6734A5F7FC4}.Release|x64.ActiveCfg = Release|Any CPU + {1AE01DB0-C088-4CC1-8B5E-B6734A5F7FC4}.Release|x64.Build.0 = Release|Any CPU + {1AE01DB0-C088-4CC1-8B5E-B6734A5F7FC4}.Release|x86.ActiveCfg = Release|Any CPU + {1AE01DB0-C088-4CC1-8B5E-B6734A5F7FC4}.Release|x86.Build.0 = Release|Any CPU {71EF6666-0E40-4AD5-82F7-9C4AB61663C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {71EF6666-0E40-4AD5-82F7-9C4AB61663C7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {71EF6666-0E40-4AD5-82F7-9C4AB61663C7}.Debug|x64.ActiveCfg = Debug|Any CPU + {71EF6666-0E40-4AD5-82F7-9C4AB61663C7}.Debug|x64.Build.0 = Debug|Any CPU + {71EF6666-0E40-4AD5-82F7-9C4AB61663C7}.Debug|x86.ActiveCfg = Debug|Any CPU + {71EF6666-0E40-4AD5-82F7-9C4AB61663C7}.Debug|x86.Build.0 = Debug|Any CPU {71EF6666-0E40-4AD5-82F7-9C4AB61663C7}.Release|Any CPU.ActiveCfg = Release|Any CPU {71EF6666-0E40-4AD5-82F7-9C4AB61663C7}.Release|Any CPU.Build.0 = Release|Any CPU + {71EF6666-0E40-4AD5-82F7-9C4AB61663C7}.Release|x64.ActiveCfg = Release|Any CPU + {71EF6666-0E40-4AD5-82F7-9C4AB61663C7}.Release|x64.Build.0 = Release|Any CPU + {71EF6666-0E40-4AD5-82F7-9C4AB61663C7}.Release|x86.ActiveCfg = Release|Any CPU + {71EF6666-0E40-4AD5-82F7-9C4AB61663C7}.Release|x86.Build.0 = Release|Any CPU {43DBD813-5041-4054-8366-69004E2A931C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {43DBD813-5041-4054-8366-69004E2A931C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {43DBD813-5041-4054-8366-69004E2A931C}.Debug|x64.ActiveCfg = Debug|Any CPU + {43DBD813-5041-4054-8366-69004E2A931C}.Debug|x64.Build.0 = Debug|Any CPU + {43DBD813-5041-4054-8366-69004E2A931C}.Debug|x86.ActiveCfg = Debug|Any CPU + {43DBD813-5041-4054-8366-69004E2A931C}.Debug|x86.Build.0 = Debug|Any CPU {43DBD813-5041-4054-8366-69004E2A931C}.Release|Any CPU.ActiveCfg = Release|Any CPU {43DBD813-5041-4054-8366-69004E2A931C}.Release|Any CPU.Build.0 = Release|Any CPU + {43DBD813-5041-4054-8366-69004E2A931C}.Release|x64.ActiveCfg = Release|Any CPU + {43DBD813-5041-4054-8366-69004E2A931C}.Release|x64.Build.0 = Release|Any CPU + {43DBD813-5041-4054-8366-69004E2A931C}.Release|x86.ActiveCfg = Release|Any CPU + {43DBD813-5041-4054-8366-69004E2A931C}.Release|x86.Build.0 = Release|Any CPU {3A8B9906-C9F0-4655-ACF2-4DBC7C8271DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {3A8B9906-C9F0-4655-ACF2-4DBC7C8271DF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3A8B9906-C9F0-4655-ACF2-4DBC7C8271DF}.Debug|x64.ActiveCfg = Debug|Any CPU + {3A8B9906-C9F0-4655-ACF2-4DBC7C8271DF}.Debug|x64.Build.0 = Debug|Any CPU + {3A8B9906-C9F0-4655-ACF2-4DBC7C8271DF}.Debug|x86.ActiveCfg = Debug|Any CPU + {3A8B9906-C9F0-4655-ACF2-4DBC7C8271DF}.Debug|x86.Build.0 = Debug|Any CPU {3A8B9906-C9F0-4655-ACF2-4DBC7C8271DF}.Release|Any CPU.ActiveCfg = Release|Any CPU {3A8B9906-C9F0-4655-ACF2-4DBC7C8271DF}.Release|Any CPU.Build.0 = Release|Any CPU + {3A8B9906-C9F0-4655-ACF2-4DBC7C8271DF}.Release|x64.ActiveCfg = Release|Any CPU + {3A8B9906-C9F0-4655-ACF2-4DBC7C8271DF}.Release|x64.Build.0 = Release|Any CPU + {3A8B9906-C9F0-4655-ACF2-4DBC7C8271DF}.Release|x86.ActiveCfg = Release|Any CPU + {3A8B9906-C9F0-4655-ACF2-4DBC7C8271DF}.Release|x86.Build.0 = Release|Any CPU {0250B255-044A-4C19-8F2F-AB019B01D498}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0250B255-044A-4C19-8F2F-AB019B01D498}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0250B255-044A-4C19-8F2F-AB019B01D498}.Debug|x64.ActiveCfg = Debug|Any CPU + {0250B255-044A-4C19-8F2F-AB019B01D498}.Debug|x64.Build.0 = Debug|Any CPU + {0250B255-044A-4C19-8F2F-AB019B01D498}.Debug|x86.ActiveCfg = Debug|Any CPU + {0250B255-044A-4C19-8F2F-AB019B01D498}.Debug|x86.Build.0 = Debug|Any CPU {0250B255-044A-4C19-8F2F-AB019B01D498}.Release|Any CPU.ActiveCfg = Release|Any CPU {0250B255-044A-4C19-8F2F-AB019B01D498}.Release|Any CPU.Build.0 = Release|Any CPU + {0250B255-044A-4C19-8F2F-AB019B01D498}.Release|x64.ActiveCfg = Release|Any CPU + {0250B255-044A-4C19-8F2F-AB019B01D498}.Release|x64.Build.0 = Release|Any CPU + {0250B255-044A-4C19-8F2F-AB019B01D498}.Release|x86.ActiveCfg = Release|Any CPU + {0250B255-044A-4C19-8F2F-AB019B01D498}.Release|x86.Build.0 = Release|Any CPU + {72D04ED1-9622-4335-AC9A-0F4C98B73101}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {72D04ED1-9622-4335-AC9A-0F4C98B73101}.Debug|Any CPU.Build.0 = Debug|Any CPU + {72D04ED1-9622-4335-AC9A-0F4C98B73101}.Debug|x64.ActiveCfg = Debug|Any CPU + {72D04ED1-9622-4335-AC9A-0F4C98B73101}.Debug|x64.Build.0 = Debug|Any CPU + {72D04ED1-9622-4335-AC9A-0F4C98B73101}.Debug|x86.ActiveCfg = Debug|Any CPU + {72D04ED1-9622-4335-AC9A-0F4C98B73101}.Debug|x86.Build.0 = Debug|Any CPU + {72D04ED1-9622-4335-AC9A-0F4C98B73101}.Release|Any CPU.ActiveCfg = Release|Any CPU + {72D04ED1-9622-4335-AC9A-0F4C98B73101}.Release|Any CPU.Build.0 = Release|Any CPU + {72D04ED1-9622-4335-AC9A-0F4C98B73101}.Release|x64.ActiveCfg = Release|Any CPU + {72D04ED1-9622-4335-AC9A-0F4C98B73101}.Release|x64.Build.0 = Release|Any CPU + {72D04ED1-9622-4335-AC9A-0F4C98B73101}.Release|x86.ActiveCfg = Release|Any CPU + {72D04ED1-9622-4335-AC9A-0F4C98B73101}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE