string GenerateCreateTableSql(string tableName, IEnumerable <IGrouping <Type, FieldInfo> > group) { StringBuilder sb = new StringBuilder(); // 値テーブルの作成 sb.Append($"DROP TABLE IF EXISTS `{tableName}`;"); sb.Append($@" CREATE TABLE IF NOT EXISTS `{tableName}` ( `idx` int(11) NOT NULL AUTO_INCREMENT, `id` varchar(50) NOT NULL, "); var columnConfigList = new Dictionary <string, ColumnConfigAttribute>(); var reverseGroup = group.Reverse(); foreach (var infos in reverseGroup) { foreach (var info in infos) { if (info.Name == "id" || info.Name == "idx") { continue; } AddColumnTypeAttribute attr = (AddColumnTypeAttribute)Attribute.GetCustomAttribute(info, typeof(AddColumnTypeAttribute)); if (attr == null) { Debug.LogError($"[AddColumnType]を設定して下さい。 {info.Name}"); return(string.Empty); } ColumnConfigAttribute attr2 = (ColumnConfigAttribute)Attribute.GetCustomAttribute(info, typeof(ColumnConfigAttribute)); if (attr2 == null) { Debug.LogError($"[ColumnConfig]を設定して下さい。 {info.Name}"); return(string.Empty); } string columnName = info.Name.ToLowercaseNamingConvention(true); sb.Append($"`{columnName}` {string.Join(" ", attr.GetMembers())},"); columnConfigList.Add(columnName, attr2); } } sb.Append($@" `disable` int(1) NULL, PRIMARY KEY (`idx`) USING BTREE, UNIQUE KEY (`id`) ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_unicode_ci ROW_FORMAT = Compact; "); return(sb.ToString()); }
string GenerateInsertConfigSql(string tableName, IEnumerable <IGrouping <Type, FieldInfo> > group) { StringBuilder sb = new StringBuilder(); List <string> configColNames = new List <string> { "column_name" }; foreach (var info in typeof(ColumnConfigAttribute).GetFields()) { configColNames.Add(info.Name.ToLowercaseNamingConvention(true)); } // configテーブルにInsert sb.Append($"INSERT INTO {tableName}_config ("); sb.Append($"{string.Join(",", configColNames)}"); sb.Append($") VALUES "); var reverseGroup = group.Reverse(); foreach (var infos in reverseGroup) { foreach (var info in infos) { if (info.Name == "idx") { continue; } ColumnConfigAttribute attr2 = (ColumnConfigAttribute)Attribute.GetCustomAttribute(info, typeof(ColumnConfigAttribute)); if (attr2 == null) { Debug.LogError($"[ColumnConfig]を設定して下さい。 {info.Name}"); return(String.Empty); } string columnName = info.Name.ToLowercaseNamingConvention(true); sb.Append($"('{columnName}',"); foreach (var field in typeof(ColumnConfigAttribute).GetFields()) { sb.Append($"'{field.GetValue(attr2)}',"); } sb.Remove(sb.Length - 1, 1); sb.Append($"),"); } } sb.Remove(sb.Length - 1, 1); sb.Append($";"); return(sb.ToString()); }