コード例 #1
0
        public IActionResult GenerateAllTable([FromBody] object data)
        {
            Dictionary <string, string> resultCollectionDic = new Dictionary <string, string>();
            var builder             = new StringBuilder("");
            var fileContentMarkdown = "";

            var markdownHeader = @"
# 資料庫說明文件

# 目錄

[TOC]

# 修訂歷程

| Date       | Author | Version | Change Reference         |
| ---------- | ------ | ------- | ------------------------ |
|  |  |     |  |
# 資料表設計

";

            builder.AppendLine(markdownHeader);
            try
            {
                string webRootPath     = _hostingEnvironment.WebRootPath;     //From wwwroot
                string contentRootPath = _hostingEnvironment.ContentRootPath; //From Others

                var    postData     = JsonConvert.DeserializeObject <dynamic>(data.ToString());
                var    databaseJson = postData.database;
                bool   enableMap    = (bool)postData.enableMap;
                string dbName       = databaseJson.DatabaseName;

                List <TableInfo> tableInfo = getAllTableFromDb(dbName);
                //Markdown
                var markdown = _genDefineDic.Where(m => m.Key == "Markdown").FirstOrDefault();

                foreach (TableInfo table in tableInfo)
                {
                    var tableName = table.TableName;
                    List <ColumnInfo> columnInfos = getColumnsFromTable(dbName, tableName);

                    var tableInfoForLiquid   = new TableInfoForLiquid(table);
                    var columnInfosForLiquid = columnInfos.Select(m => new ColumnInfoForLiquid(m)).ToList();
                    var otherInfoForLiquid   = getOtherInfoForLiquid(tableInfoForLiquid, columnInfosForLiquid);

                    fileContentMarkdown = new CustomGenerator(markdown.Value).Generate(tableInfoForLiquid, columnInfosForLiquid, otherInfoForLiquid, webRootPath);
                    builder.AppendLine(fileContentMarkdown);
                }

                resultCollectionDic.Add(markdown.Key, builder.ToString());
            }
            catch (Exception ex)
            {
                ex.ToString();
            }
            return(Json(resultCollectionDic));
        }
コード例 #2
0
        /// <summary>
        /// (TW)取得其它資訊內容
        /// </summary>
        /// <param name="tableInfoForLiquid"></param>
        /// <param name="columnsForLiquid"></param>
        /// <returns></returns>
        private OtherInfoForLiquid getOtherInfoForLiquid(TableInfoForLiquid tableInfoForLiquid, List <ColumnInfoForLiquid> columnsForLiquid)
        {
            var result         = new OtherInfoForLiquid();
            var identityColumn = columnsForLiquid.FirstOrDefault();//暫以第一筆表示

            if (identityColumn != null)
            {
                result.IndentityColumn            = identityColumn.MapColumnName;
                result.IndentityModelType         = identityColumn.ModelType;
                result.IndentityColumnDescription = identityColumn.ColumnDescription;
            }
            return(result);
        }
コード例 #3
0
        /// <summary>
        /// (TW)產生程式碼
        /// (EN)generate Source code
        /// </summary>
        /// <param name="tableInfoForLiquid"></param>
        /// <param name="columnsForLiquid"></param>
        /// <param name="contentRootPath"></param>
        /// <returns></returns>
        public dynamic Generate(TableInfoForLiquid tableInfoForLiquid, List <ColumnInfoForLiquid> columnsForLiquid, OtherInfoForLiquid otherInfoForLiquid, string contentRootPath)
        {
            var result     = "";
            var liquidPath = contentRootPath + LiquidPath;

            //(TW)使用Liquid的框架產生程式碼,傳入參數:table , columns
            var      templateContent = File.ReadAllText(liquidPath, Encoding.UTF8);
            Template template        = Template.Parse(templateContent);

            result = template.Render(Hash.FromAnonymousObject(
                                         new
            {
                table   = tableInfoForLiquid,
                columns = columnsForLiquid,
                other   = otherInfoForLiquid
            }));

            return(result);
        }
コード例 #4
0
        public IActionResult GenerateCode([FromBody] object data)
        {
            Dictionary <string, string> resultCollectionDic = new Dictionary <string, string>();

            try
            {
                string webRootPath     = _hostingEnvironment.WebRootPath;     //From wwwroot
                string contentRootPath = _hostingEnvironment.ContentRootPath; //From Others

                var postData    = JsonConvert.DeserializeObject <dynamic>(data.ToString());
                var tableJson   = postData.table;
                var columnsJson = postData.columns;


                //(TW)取得Table資訊
                var tableInfo = JsonConvert.DeserializeObject <TableInfo>(tableJson.ToString());
                //(TW)頁面上勾選的Table Columns資訊反序列化 (包括從DB取得的資訊內容)
                List <ColumnInfo> columnInfos = JsonConvert.DeserializeObject <List <ColumnInfo> >(columnsJson.ToString());

                var tableInfoForLiquid   = new TableInfoForLiquid(tableInfo);
                var columnInfosForLiquid = columnInfos.Select(m => new ColumnInfoForLiquid(m)).ToList();
                var otherInfoForLiquid   = getOtherInfoForLiquid(tableInfoForLiquid, columnInfosForLiquid);


                foreach (var item in _genDefineDic)
                {
                    var result = new CustomGenerator(item.Value).Generate(tableInfoForLiquid, columnInfosForLiquid, otherInfoForLiquid, webRootPath);
                    resultCollectionDic.Add(item.Key, result);
                }
            }
            catch (Exception ex)
            {
                ex.ToString();
            }

            return(Json(resultCollectionDic));
        }