Example #1
0
        public TableInfo GenerateDDLInfo()
        {
            var tableinfo = new TableInfo();
            var result    = Tokenize(script, Mssql.Status.BASE_INIT, 0);

            Console.WriteLine("base \ttoken \t value \t pid");

            foreach (var tokenize in result)
            {
                Console.WriteLine(tokenize.Status + "\t" + tokenize.TokenType + " \t " + tokenize.Text.ToString() + "\t" + tokenize.Pid);
            }

            tableinfo.TableName = result.First(x => x.TokenType == TokenType.TBN).NodeText;
            foreach (var item in result.GroupBy(x => x.Pid))
            {
                if (item.Any(x => x.TokenType == TokenType.FI) && item.Any(x => x.TokenType == TokenType.FIELD_NAME) && item.Any(x => x.TokenType == TokenType.FIELD_TYPE))
                {
                    var name = item.First(x => x.TokenType == TokenType.FIELD_NAME).NodeText;

                    tableinfo.AddCol(name,
                                     item.First(x => x.TokenType == TokenType.FIELD_TYPE).NodeText,
                                     item.FirstOrDefault(x => x.TokenType == TokenType.FIELD_NULL)?.NodeText == "NULL",
                                     result.Any(x => x.NodeText == name && x.TokenType == TokenType.K)
                                     );
                }
            }
            return(tableinfo);
        }