/// <summary> /// Executes a request that queries values on a single table, with constraints. /// This is the synchronous implementation. /// </summary> /// <parameters> /// <param name="context">Description of the request.</param> /// </parameters> /// <returns> /// The request result. /// </returns> protected virtual ISingleQueryResult Execute(ISingleQueryContext context) { if (!IsOperationThreadStarted) { return(new SingleQueryResult(false, ResultError.ErrorFatalNoOperationThread)); } IActiveOperation <ISingleQueryResultInternal> ActiveOperation = Connector.SingleQuery(context); ISingleQueryResultInternal Result = ActiveOperation.Result; FinalizeOrQueue(ActiveOperation); return(Result); }
public virtual string FinalizeOperation(MySqlCommand command, ISingleQueryResultInternal result) { try { using (MySqlDataReader Reader = command.EndExecuteReader(result.AsyncResult)) { ITableDescriptor Table = Context.Table; ISchemaDescriptor Schema = Table.Schema; IReadOnlyCollection <IColumnDescriptor> TableStructure = Schema.Tables[Table]; FillResult(Reader, TableStructure, out List <IResultRow> Rows); result.SetCompletedWithRows(Rows); return($"succeeded, {Rows.Count} row(s) returned"); } } catch { result.SetCompleted(false, ResultError.ErrorExceptionCompletingQuery); throw; } }