protected virtual void ExecuteQuery <Context>(Context execContext) where Context : class, IDataLoaderContext { bool trace = execContext.CurrentNode.Trace; string qry = GetQuery(execContext); if (qry != null) { try { var runner = Compiler.Compile(qry); if (runner.ErrorText != null) { KraftLogger.LogError($"{execContext.LocationInfo(PLUGIN_INTERNAL_NAME)}\n{runner.ErrorText}"); throw new Exception(runner.ErrorText); } using (var host = new ActionQueryHost <Context>(execContext) { { "HostInfo", HostInfo } }) { if (trace) { host.Trace = true; } try { var result = runner.ExecuteScalar(host, ActionQueryHost <Context> .HardLimit(execContext)); } catch { if (trace) { var traceInfo = host.GetTraceInfo(); if (traceInfo != null) { KraftLogger.LogError($"{execContext.LocationInfo(PLUGIN_INTERNAL_NAME)}\n"); KraftLogger.LogError(traceInfo.ToString()); } } throw; } } } catch (Exception ex) { KraftLogger.LogError(ActionQueryTrace.ExceptionToString(ex)); throw; } } }
protected override void ExecuteWrite(IDataLoaderWriteContext execContext) { bool trace = execContext.CurrentNode.Trace; string qry = GetQuery(execContext); if (qry != null) { try { var runner = Compiler.Compile(qry); if (runner.ErrorText != null) { KraftLogger.LogError($"{execContext.LocationInfo(PLUGIN_INTERNAL_NAME)}\n{runner.ErrorText}"); throw new Exception(runner.ErrorText); } using (var host = new ActionQueryHost <IDataLoaderWriteContext>(execContext) { { nameof(IsPostedFile), IsPostedFile }, { nameof(PostedFileSize), PostedFileSize }, { nameof(PostedFileName), PostedFileName }, { nameof(PostedFileType), PostedFileType }, { nameof(CombinePaths), CombinePaths }, { nameof(DeleteFile), DeleteFile }, { nameof(SaveFile), SaveFile }, { nameof(PrependFileName), PrependFileName }, { nameof(CreateDirectory), CreateDirectory }, { nameof(SaveFileToSpread), SaveFileToSpread }, { nameof(PostedFile), this.PostedFile }, { nameof(FileResponse), FileResponse }, { nameof(FileExists), FileExists } }) { host.AddLibrary(new BasicImageLib <IDataLoaderWriteContext>()); if (trace) { host.Trace = true; } try { var result = runner.ExecuteScalar(host, ActionQueryHost <IDataLoaderWriteContext> .HardLimit(execContext)); } catch { if (trace) { var traceInfo = host.GetTraceInfo(); if (traceInfo != null) { KraftLogger.LogError($"{execContext.LocationInfo(PLUGIN_INTERNAL_NAME)}\n"); KraftLogger.LogError(traceInfo.ToString()); } KraftLogger.LogError($"{runner.DumpProgram()}\n"); } throw; } } } catch (Exception ex) { KraftLogger.LogError(ActionQueryTrace.ExceptionToString(ex)); throw; } } // Else nothing to do. }