public IQuery GetSql()
        {
            var query = Queries.BeginTransaction();

            query.Comment(nameProvider.GetName(item));
            query.DefineVariable("ENTRY", script.EntryOrGuid);
            var(serializedScript, serializedConditions) = scriptExporter.ToDatabaseCompatibleSmartScript(script);
            BuildDelete(query, serializedScript);
            BuildUpdate(query);
            BuildInsert(query, serializedScript, serializedConditions);
            return(query.Close());
        }
        private void BuildInsert(IMultiQuery query)
        {
            var(serializedScript, serializedConditions) = scriptExporter.ToDatabaseCompatibleSmartScript(script);

            if (serializedScript.Length == 0)
            {
                return;
            }

            var lines = serializedScript.Select(s => GenerateSingleSai(query, s));

            query.Table("smart_scripts").BulkInsert(lines);

            query.BlankLine();

            query.Add(conditionQueryGenerator.BuildDeleteQuery(new IDatabaseProvider.ConditionKey(
                                                                   SmartConstants.ConditionSourceSmartScript,
                                                                   null,
                                                                   script.EntryOrGuid,
                                                                   (int)script.SourceType)));
            query.Add(conditionQueryGenerator.BuildInsertQuery(serializedConditions));
        }