/// <summary> /// Generate CSharp property for every database field. /// </summary> private static void FieldNameProperty(MetaCSharp metaCSharp, string schemaName, string tableName, StringBuilder result) { var fieldNameList = metaCSharp.List.Where(item => item.Schema.SchemaName == schemaName && item.Schema.TableName == tableName).ToArray(); bool isFirst = true; foreach (var item in fieldNameList) { if (isFirst) { isFirst = false; } else { result.AppendLine(); } if (item.FrameworkTypeEnum == FrameworkTypeEnum.None) { UtilCli.ConsoleWriteLineColor(string.Format("Warning! Type not supported by framework. ({0}.{1}.{2})", item.Schema.SchemaName, item.Schema.TableName, item.Schema.FieldName), ConsoleColor.Yellow); } else { string typeCSharp = UtilGenerate.SqlTypeToCSharpType(item.Schema.SqlType, item.Schema.IsNullable); if (item.IsPrimaryKey == false) { result.AppendLine(string.Format(" [SqlField(\"{0}\", {2})]", item.Schema.FieldName, item.TableNameCSharp + "_" + item.FieldNameCSharp, nameof(FrameworkTypeEnum) + "." + item.FrameworkTypeEnum.ToString())); } else { result.AppendLine(string.Format(" [SqlField(\"{0}\", {2}, {3})]", item.Schema.FieldName, item.TableNameCSharp + "_" + item.FieldNameCSharp, item.IsPrimaryKey.ToString().ToLower(), nameof(FrameworkTypeEnum) + "." + item.FrameworkTypeEnum.ToString())); } result.AppendLine(string.Format(" public " + typeCSharp + " {0} {{ get; set; }}", item.FieldNameCSharp)); } } }
private void TableName(MetaSqlSchema[] dataList, string schemaName, string schemaNameCSharp) { string[] tableNameList = dataList.Where(item => item.SchemaName == schemaName).GroupBy(item => item.TableName, (key, group) => key).ToArray(); List <string> nameExceptList = new List <string>(); foreach (string tableName in tableNameList) { string tableNameCSharp = UtilGenerate.NameCSharp(tableName, nameExceptList); FieldName(dataList, schemaName, schemaNameCSharp, tableName, tableNameCSharp); } }
private void SchemaName(MetaSqlSchema[] dataList) { string[] schemaNameList = dataList.GroupBy(item => item.SchemaName, (key, group) => key).ToArray(); List <string> nameExceptList = new List <string>(); foreach (string schemaName in schemaNameList) { string schemaNameCSharp = UtilGenerate.NameCSharp(schemaName, nameExceptList); TableName(dataList, schemaName, schemaNameCSharp); } }
private static void GenerateCSharpNameEnum(GenerateIntegrateItem integrate, StringBuilder result) { var fieldList = UtilDalType.TypeRowToFieldList(integrate.TypeRow); var fieldId = fieldList.SingleOrDefault(item => item.FieldNameCSharp == "Id"); // See also FieldIntegrate.IsKey var fieldIdName = fieldList.SingleOrDefault(item => item.FieldNameCSharp == "IdName"); // See also FieldIntegrate.IsKey if (fieldIdName != null) { result.Append(string.Format(" public enum IdEnum {{ [IdEnum(null)]None = 0")); List <string> nameExceptList = new List <string>(); int count = 0; foreach (Row row in integrate.RowList) { count += 1; string idName = (string)fieldIdName.PropertyInfo.GetValue(row); string nameCSharp = UtilGenerate.NameCSharp(idName, nameExceptList); result.Append(string.Format(", [IdEnum(\"{0}\")]{1} = {2}", idName, nameCSharp, count * -1)); // Count * -1 to ensure there is no relation between enum id and database record id! } result.AppendLine(string.Format(" }}")); result.AppendLine(); result.AppendLine(string.Format(" public static {0} Row(this IdEnum value)", integrate.TableNameCSharp)); result.AppendLine(string.Format(" {{")); result.AppendLine(string.Format(" return RowList.Where(item => item.IdName == IdEnumAttribute.IdNameFromEnum(value)).SingleOrDefault();")); result.AppendLine(string.Format(" }}")); result.AppendLine(); result.AppendLine(string.Format(" public static IdEnum IdName(string value)")); result.AppendLine(string.Format(" {{")); result.AppendLine(string.Format(" return IdEnumAttribute.IdNameToEnum<IdEnum>(value);")); result.AppendLine(string.Format(" }}")); result.AppendLine(); result.AppendLine(string.Format(" public static string IdName(this IdEnum value)")); result.AppendLine(string.Format(" {{")); result.AppendLine(string.Format(" return IdEnumAttribute.IdNameFromEnum(value);")); result.AppendLine(string.Format(" }}")); result.AppendLine(); result.AppendLine(string.Format(" public static async Task<int> Id(this IdEnum value)")); result.AppendLine(string.Format(" {{")); result.AppendLine(string.Format(" return (await Data.Query<{0}>().Where(item => item.IdName == IdEnumAttribute.IdNameFromEnum(value)).QueryExecuteAsync()).Single().Id;", integrate.TableNameCSharp)); result.AppendLine(string.Format(" }}")); result.AppendLine(); } }
private void FieldName(MetaSqlSchema[] dataList, string schemaName, string schemaNameCSharp, string tableName, string tableNameCSharp) { MetaSqlSchema[] fieldList = dataList.Where(item => item.SchemaName == schemaName && item.TableName == tableName).ToArray(); List <string> nameExceptList = new List <string>(); nameExceptList.Add(tableName); // CSharp propery can not have same name like class. foreach (MetaSqlSchema field in fieldList) { string fieldNameCSharp = UtilGenerate.NameCSharp(field.FieldName, nameExceptList); FrameworkTypeEnum frameworkTypeEnum = UtilDalType.SqlTypeToFrameworkTypeEnum(field.SqlType); List.Add(new MetaCSharpSchema() { Schema = field, SchemaNameCSharp = schemaNameCSharp, TableNameCSharp = tableNameCSharp, FieldNameCSharp = fieldNameCSharp, IsPrimaryKey = field.IsPrimaryKey, FrameworkTypeEnum = frameworkTypeEnum, }); } }