diff --git a/MCGalaxy/Database/Backends/MySQL.cs b/MCGalaxy/Database/Backends/MySQL.cs index cdde12d41..70216d89f 100644 --- a/MCGalaxy/Database/Backends/MySQL.cs +++ b/MCGalaxy/Database/Backends/MySQL.cs @@ -138,8 +138,6 @@ namespace MCGalaxy.SQL { if (col.PrimaryKey) priKey = col.Column; if (col.AutoIncrement) sql.Append(" AUTO_INCREMENT"); if (col.NotNull) sql.Append(" NOT NULL"); - if (col.DefaultValue != null) - sql.Append(" DEFAULT ").Append(col.DefaultValue); if (i < columns.Length - 1) { sql.Append(','); diff --git a/MCGalaxy/Database/Backends/SQLite.cs b/MCGalaxy/Database/Backends/SQLite.cs index 9805a2314..70bc73314 100644 --- a/MCGalaxy/Database/Backends/SQLite.cs +++ b/MCGalaxy/Database/Backends/SQLite.cs @@ -124,8 +124,6 @@ namespace MCGalaxy.SQL { } if (col.AutoIncrement) sql.Append(" AUTOINCREMENT"); if (col.NotNull) sql.Append(" NOT NULL"); - if (col.DefaultValue != null) - sql.Append(" DEFAULT ").Append(col.DefaultValue); if (i < columns.Length - 1) { sql.Append(','); diff --git a/MCGalaxy/Database/ColumnDesc.cs b/MCGalaxy/Database/ColumnDesc.cs index c2b7f6aa5..b278cbab6 100644 --- a/MCGalaxy/Database/ColumnDesc.cs +++ b/MCGalaxy/Database/ColumnDesc.cs @@ -28,23 +28,20 @@ namespace MCGalaxy.SQL { public readonly bool AutoIncrement; public readonly bool PrimaryKey; public readonly bool NotNull; - public readonly string DefaultValue; public ColumnDesc(string col, ColumnType type) - : this(col, type, 0, false, false, false, null) { } + : this(col, type, 0, false, false, false) { } public ColumnDesc(string col, ColumnType type, ushort maxLen = 0) - : this(col, type, maxLen, false, false, false, null) { } + : this(col, type, maxLen, false, false, false) { } public ColumnDesc(string col, ColumnType type, ushort maxLen = 0, - bool autoInc = false, bool priKey = false, - bool notNull = false, string def = null) { + bool autoInc = false, bool priKey = false, bool notNull = false) { Column = col; Type = type; MaxLength = maxLen; AutoIncrement = autoInc; PrimaryKey = priKey; NotNull = notNull; - DefaultValue = def; } public string FormatType() { diff --git a/MCGalaxy/Economy/Economy.DB.cs b/MCGalaxy/Economy/Economy.DB.cs index b00e451d5..1aac52591 100644 --- a/MCGalaxy/Economy/Economy.DB.cs +++ b/MCGalaxy/Economy/Economy.DB.cs @@ -26,13 +26,13 @@ namespace MCGalaxy.Eco { static ColumnDesc[] createEconomy = new ColumnDesc[] { new ColumnDesc("player", ColumnType.VarChar, 20, priKey: true), new ColumnDesc("money", ColumnType.Int32), - new ColumnDesc("total", ColumnType.Integer, notNull: true, def: "0"), - new ColumnDesc("purchase", ColumnType.VarChar, 255, notNull: true, def: "'%cNone'"), - new ColumnDesc("payment", ColumnType.VarChar, 255, notNull: true, def: "'%cNone'"), - new ColumnDesc("salary", ColumnType.VarChar, 255, notNull: true, def: "'%cNone'"), - new ColumnDesc("fine", ColumnType.VarChar, 255, notNull: true, def: "'%cNone'"), + new ColumnDesc("total", ColumnType.Integer), + new ColumnDesc("purchase", ColumnType.VarChar, 255), + new ColumnDesc("payment", ColumnType.VarChar, 255), + new ColumnDesc("salary", ColumnType.VarChar, 255), + new ColumnDesc("fine", ColumnType.VarChar, 255), }; - + public static void LoadDatabase() { Database.Backend.CreateTable("Economy", createEconomy); using (DataTable eco = Database.Backend.GetRows("Economy", "*")) @@ -41,62 +41,14 @@ namespace MCGalaxy.Eco { int money = PlayerData.ParseInt(row["money"].ToString()); if (money == 0) continue; - EcoStats stats; + EcoStats stats = default(EcoStats); stats.Player = row["player"].ToString(); - stats.Payment = row["payment"].ToString(); - stats.Purchase = row["purchase"].ToString(); - stats.Salary = row["salary"].ToString(); - stats.Fine = row["fine"].ToString(); - stats.TotalSpent = PlayerData.ParseInt(row["total"].ToString()); + ParseRow(row, ref stats); UpdateMoney(stats.Player, money); UpdateStats(stats); } } - - - public struct EcoStats { - public string Player, Purchase, Payment, Salary, Fine; - public int TotalSpent; - - public EcoStats(int tot, string player, string pur, - string pay, string sal, string fin) { - TotalSpent = tot; - Player = player; - Purchase = pur; - Payment = pay; - Salary = sal; - Fine = fin; - } - } - - public static void UpdateStats(EcoStats stats) { - Database.Backend.AddOrReplaceRow("Economy", "player, money, total, purchase, payment, salary, fine", - stats.Player, 0, stats.TotalSpent, stats.Purchase, - stats.Payment, stats.Salary, stats.Fine); - } - - public static EcoStats RetrieveStats(string name) { - EcoStats stats = default(EcoStats); - stats.Player = name; - - using (DataTable eco = Database.Backend.GetRows("Economy", "*", "WHERE player=@0", name)) { - if (eco.Rows.Count > 0) { - stats.TotalSpent = int.Parse(eco.Rows[0]["total"].ToString()); - stats.Purchase = eco.Rows[0]["purchase"].ToString(); - stats.Payment = eco.Rows[0]["payment"].ToString(); - stats.Salary = eco.Rows[0]["salary"].ToString(); - stats.Fine = eco.Rows[0]["fine"].ToString(); - } else { - stats.Purchase = "%cNone"; - stats.Payment = "%cNone"; - stats.Salary = "%cNone"; - stats.Fine = "%cNone"; - } - } - return stats; - } - public static string FindMatches(Player p, string name, out int money) { return PlayerInfo.FindOfflineMoneyMatches(p, name, out money); @@ -105,5 +57,44 @@ namespace MCGalaxy.Eco { public static void UpdateMoney(string name, int money) { Database.Backend.UpdateRows("Players", "Money = @1", "WHERE Name = @0", name, money); } + + + public struct EcoStats { + public string Player, Purchase, Payment, Salary, Fine; public int TotalSpent; + } + + public static void UpdateStats(EcoStats stats) { + Database.Backend.AddOrReplaceRow("Economy", "player, money, total, purchase, payment, salary, fine", + stats.Player, 0, stats.TotalSpent, stats.Purchase, + stats.Payment, stats.Salary, stats.Fine); + } + + static string ParseField(object raw) { + if (raw == null) return "%cNone"; + string value = raw.ToString(); + return (value.Length == 0 || value.CaselessEq("NULL")) ? "%cNone" : value; + } + + static void ParseRow(DataRow row, ref EcoStats stats) { + stats.Payment = ParseField(row["payment"]); + stats.Purchase = ParseField(row["purchase"]); + stats.Salary = ParseField(row["salary"]); + stats.Fine = ParseField(row["fine"]); + stats.TotalSpent = PlayerData.ParseInt(row["total"].ToString()); + } + + public static EcoStats RetrieveStats(string name) { + EcoStats stats = default(EcoStats); + stats.Player = name; + stats.Purchase = "%cNone"; + stats.Payment = "%cNone"; + stats.Salary = "%cNone"; + stats.Fine = "%cNone"; + + using (DataTable eco = Database.Backend.GetRows("Economy", "*", "WHERE player=@0", name)) { + if (eco.Rows.Count > 0) ParseRow(eco.Rows[0], ref stats); + } + return stats; + } } } \ No newline at end of file