TShockAPI.DB.SqlTableCreator.EnsureTableStructure C# (CSharp) Method

EnsureTableStructure() public method

public EnsureTableStructure ( SqlTable table ) : bool
table SqlTable
return bool
        public bool EnsureTableStructure(SqlTable table)
        {
            var columns = GetColumns(table);
            if (columns.Count > 0)
            {
                if (!table.Columns.All(c => columns.Contains(c.Name)) || !columns.All(c => table.Columns.Any(c2 => c2.Name == c)))
                {
                    var from = new SqlTable(table.Name, columns.Select(s => new SqlColumn(s, MySqlDbType.String)).ToList());
                    database.Query(creator.AlterTable(from, table));
                }
            }
            else
            {
                database.Query(creator.CreateTable(table));
                return true;
            }
            return false;
        }

Usage Example

示例#1
0
        private void OnInitialize(EventArgs args)
        {
            SqlTableCreator sqlcreator = new SqlTableCreator(TShock.DB, TShock.DB.GetSqlType() == SqlType.Sqlite ? (IQueryBuilder)new SqliteQueryCreator() : new MysqlQueryCreator());
            sqlcreator.EnsureTableStructure(new SqlTable("TradeRequestLogs",
            new SqlColumn("ID", MySqlDbType.Int32) { AutoIncrement = true, Primary = true },
            new SqlColumn("Trader", MySqlDbType.Text),
            new SqlColumn("Tradee", MySqlDbType.Text),
            new SqlColumn("TraderItems", MySqlDbType.Text),
            new SqlColumn("TradeeItems", MySqlDbType.Text),
            new SqlColumn("TradeDate", MySqlDbType.Text)
            ));

            #region Commands
            Action<Command> Add = c =>
            {
                TShockAPI.Commands.ChatCommands.RemoveAll(c2 => c2.Names.Select(s => s.ToLowerInvariant()).Intersect(c.Names.Select(s => s.ToLowerInvariant())).Any());
                TShockAPI.Commands.ChatCommands.Add(c);
            };

            Add(new Command(Permissions.trade, Commands.Trade, "trade")
            {
                AllowServer = true,
                HelpText = "Allows the user to trade with another user."
            });

            Add(new Command(Permissions.tradelogs, Commands.TradeLogs, "tradelogs")
            {
                AllowServer = true,
                HelpText = "Allows the user check trade logs."
            });
            #endregion
        }
All Usage Examples Of TShockAPI.DB.SqlTableCreator::EnsureTableStructure