Beispiel #1
0
        internal ISqlNode PrepareParse()
        {
            if (!File.Exists(_sqlFilePath))
            {
                throw new InvalidSqlFileException(ExceptionMessageId.EspC001, _sqlFilePath);
            }

            var rawSql = File.ReadAllText(_sqlFilePath);

            if (string.IsNullOrWhiteSpace(rawSql))
            {
                throw new InvalidSqlFileException(ExceptionMessageId.EspC002, _sqlFilePath);
            }
            if (_config == null)
            {
                throw new InvalidSqlParserConfigException(ExceptionMessageId.EspD001);
            }

            if (_config.DbConnectionKind == DbConnectionKind.Unknown)
            {
                throw new InvalidSqlParserConfigException(ExceptionMessageId.EspD002);
            }

            if (_config.DataParameterCreator == null)
            {
                throw new InvalidSqlParserConfigException(ExceptionMessageId.EspD003);
            }

            _evaluator = new EasyExpressionEvaluator(_sqlFilePath);

            ISqlNode sqlNode  = null;
            var      hasCache = false;

            if (ConfigContainer.EnableCache)
            {
                if (SqlCache.TryGetValue(_sqlFilePath, out SqlFileInfo info))
                {
                    sqlNode  = info.SqlNode;
                    hasCache = true;
                }
            }

            if (!hasCache)
            {
                var parser = new DomaSqlParser(rawSql);
                sqlNode = parser.Parse();
                if (ConfigContainer.EnableCache)
                {
                    var info = new SqlFileInfo
                    {
                        FilePath = _sqlFilePath,
                        RawSql   = rawSql,
                        SqlNode  = sqlNode
                    };
                    SqlCache.TryAdd(_sqlFilePath, info);
                }
            }

            return(sqlNode);
        }
Beispiel #2
0
 /// <summary>
 /// Is executed after the content of the migration file has been copied to output file
 /// </summary>
 /// <param name="version"></param>
 /// <param name="file"></param>
 public virtual void AfterMigrationFile(Version version, SqlFileInfo file)
 {
     if (file.SqlInsertMigration)
     {
         streamWriter.WriteLine("INSERT INTO migrations (major, minor, filename) VALUES('{0}', '{1}', '{2}');",
                      version.Major, version.Minor, file.FileInfo.Name);
     }
 }
Beispiel #3
0
        public override void AfterMigrationFile(Version version, SqlFileInfo file)
        {
            // GO is needed for applying multiple DDL statements in one transaction
            streamWriter.WriteLine("GO");

            base.AfterMigrationFile(version, file);
            streamWriter.WriteLine("GO");
        }
Beispiel #4
0
 /// <summary>
 /// Is executed before the content of the migration file is copied to output file
 /// </summary>
 /// <param name="version"></param>
 /// <param name="file"></param>
 public virtual void BeforeMigrationFile(Version version, SqlFileInfo file)
 {
     streamWriter.WriteLine("-- db-migrator:FILE: {0}", file.FileInfo.Name);
 }