using System.Collections.Generic; using System.Linq; using System.Text; namespace DbMigrate { public class SqlTable { public string TableName { get; set; } public string CreateTableSql { get; set; } public string OriginalSql { get; set; } public Dictionary Columns { get; set; } public Dictionary Indexes { get; set; } public Dictionary Triggers { get; set; } public SqlTable() { initTable(); } public SqlTable(string sql) { initTable(); OriginalSql = sql; this.ParseSql(sql); } private void initTable() { Columns = new Dictionary(); Indexes = new Dictionary(); Triggers = new Dictionary(); CreateTableSql = ""; } public string FullSql() { StringBuilder sb = new StringBuilder(); //sb.AppendLine("-- Create Table " + TableName); sb.AppendLine(CreateTableSql); if (Indexes.Count > 0) { sb.AppendLine("\r\n-- Create Indexes"); foreach (string index in Indexes.Keys) { sb.AppendLine(Indexes[index]); } } if (Triggers.Count > 0) { sb.AppendLine("\r\n-- Create Triggers"); foreach (string trigger in Triggers.Keys) { sb.AppendLine(Triggers[trigger]); } } sb.AppendLine(); return sb.ToString(); } public string[] GetColumnNames() { return Columns.Keys.ToArray(); } public string[] GetColumns() { return Columns.Values.ToArray(); } public bool HasColumn(string columnName) { return Columns.ContainsKey(columnName); } public string[] GetTriggerNames() { return Triggers.Keys.ToArray(); } public string[] GetTriggers() { return Triggers.Values.ToArray(); } public bool HasTrigger(string triggerName) { return Triggers.ContainsKey(triggerName); } public bool HasIndex(string indexName) { return Indexes.ContainsKey(indexName); } public string[] GetIndexNames() { return Indexes.Keys.ToArray(); } public string[] GetIndexes() { return Indexes.Values.ToArray(); } } }