public override Cursor OpenCursor(ICrudQueryExecutionContext context, Query query) { var ctx = (MongoDbCRUDQueryExecutionContext)context; Connector.Collection collection; var qry = MakeQuery(ctx.Database, query, Source, out collection); Schema schema = null; var dtp = query.ResultDocType; if (dtp != null && typeof(TypedDoc).IsAssignableFrom(dtp)) { schema = Schema.GetForTypedDoc(query.ResultDocType); } var p = query[QUERY_PARAM_SKIP_COUNT]; var skipCount = p != null?p.Value.AsInt(0) : 0; p = query[QUERY_PARAM_FETCH_BY]; var fetchBy = p != null?p.Value.AsInt(0) : 0; var mcursor = collection.Find(qry, skipCount, fetchBy); var enumerable = enumOpenCursor(schema, query, mcursor); return(new MongoDbCursor(mcursor, enumerable)); }
public override Doc ExecuteProcedure(ICrudQueryExecutionContext context, Query query) { var ctx = (MsSqlCRUDQueryExecutionContext)context; using (var cmd = ctx.Connection.CreateCommand()) { cmd.CommandText = Source.StatementSource; PopulateParameters(cmd, query); cmd.Transaction = ctx.Transaction; try { var affected = cmd.ExecuteNonQuery(); GeneratorUtils.LogCommand(ctx.DataStore, "queryhandler-ok", cmd, null); return(new RowsAffectedDoc(affected)); } catch (Exception error) { GeneratorUtils.LogCommand(ctx.DataStore, "queryhandler-error", cmd, error); throw; } } //using command }
public override RowsetBase Execute(ICrudQueryExecutionContext context, Query query, bool oneDoc = false) { var ctx = (MsSqlCRUDQueryExecutionContext)context; var target = ctx.DataStore.TargetName; using (var cmd = ctx.Connection.CreateCommand()) { cmd.CommandText = Source.StatementSource; PopulateParameters(cmd, query); cmd.Transaction = ctx.Transaction; SqlDataReader reader = null; try { reader = oneDoc ? cmd.ExecuteReader(CommandBehavior.SingleRow) : cmd.ExecuteReader(); GeneratorUtils.LogCommand(ctx.DataStore, "queryhandler-ok", cmd, null); } catch (Exception error) { GeneratorUtils.LogCommand(ctx.DataStore, "queryhandler-error", cmd, error); throw; } using (reader) return(PopulateRowset(ctx, reader, target, query, Source, oneDoc)); } //using command }
public override Doc ExecuteProcedure(ICrudQueryExecutionContext context, Query query) { var ctx = (MongoDbCRUDQueryExecutionContext)context; var qry = MakeQuery(query, Source); var affected = ctx.Database.RunCommand(qry) != null ? 1 : 0; return(new RowsAffectedDoc(affected)); }
public override RowsetBase Execute(ICrudQueryExecutionContext context, Query query, bool oneRow = false) { var ctx = (MongoDbCRUDQueryExecutionContext)context; Connector.Collection collection; var qry = MakeQuery(ctx.Database, query, Source, out collection); Schema schema = null; var dtp = query.ResultDocType; if (dtp != null && typeof(TypedDoc).IsAssignableFrom(dtp)) { schema = Schema.GetForTypedDoc(query.ResultDocType); } Rowset result = null; if (schema != null) { result = new Rowset(schema); } var p = query[QUERY_PARAM_SKIP_COUNT]; var skipCount = p != null?p.Value.AsInt(0) : 0; p = query[QUERY_PARAM_FETCH_BY]; var fetchBy = p != null?p.Value.AsInt(0) : 0; p = query[QUERY_PARAM_FETCH_LIMIT]; var fetchLimit = p != null?p.Value.AsInt(-1) : -1; using (var cursor = collection.Find(qry, skipCount, oneRow ? 1: fetchBy)) foreach (var doc in cursor) { if (schema == null) { schema = Store.Converter.InferSchemaFromBSONDocument(doc); result = new Rowset(schema); } var row = Doc.MakeDoc(schema, query.ResultDocType); Store.Converter.BSONDocumentToDataDoc(doc, row, Store.TargetName); result.Add(row); if (fetchLimit > 0 && result.Count >= fetchLimit) { break; } } return(result); }
public async override Task <RowsetBase> ExecuteAsync(ICrudQueryExecutionContext context, Query query, bool oneRow = false) { await Task.Delay(100); var result = new Rowset(Schema.GetForTypedDoc <Patient>()); var p = query.FindParamByName("Msg")?.Value.AsString(); result.Insert(new Patient { First_Name = "Jack", Last_Name = "Nice", Address1 = p }); result.Insert(new Patient { First_Name = "Mary", Last_Name = "Dice", Address1 = p }); return(result); }
public override Schema GetSchema(ICrudQueryExecutionContext context, Query query) { var ctx = (MongoDbCRUDQueryExecutionContext)context; Connector.Collection collection; var qry = MakeQuery(ctx.Database, query, Source, out collection); var doc = collection.FindOne(qry); if (doc == null) { return(null); } return(Store.Converter.InferSchemaFromBSONDocument(doc)); }
public override Cursor OpenCursor(ICrudQueryExecutionContext context, Query query) { var ctx = (MsSqlCRUDQueryExecutionContext)context; var target = ctx.DataStore.TargetName; Schema.FieldDef[] toLoad; Schema schema = null; SqlDataReader reader = null; var cmd = ctx.Connection.CreateCommand(); try { cmd.CommandText = Source.StatementSource; PopulateParameters(cmd, query); cmd.Transaction = ctx.Transaction; try { reader = cmd.ExecuteReader(); GeneratorUtils.LogCommand(ctx.DataStore, "queryhandler-ok", cmd, null); } catch (Exception error) { GeneratorUtils.LogCommand(ctx.DataStore, "queryhandler-error", cmd, error); throw; } schema = GetSchemaForQuery(target, query, reader, Source, out toLoad); } catch { if (reader != null) { reader.Dispose(); } cmd.Dispose(); throw; } var enumerable = execEnumerable(ctx, cmd, reader, schema, toLoad, query); return(new MsSqlCursor(ctx, cmd, reader, enumerable)); }
public override RowsetBase Execute(ICrudQueryExecutionContext context, Query query, bool oneRow = false) { var ctx = (MongoDbCRUDQueryExecutionContext)context; Azos.Data.Access.MongoDb.Connector.Collection collection; var qry = MakeQuery(ctx.Database, query, Source, out collection); var rrow = new TResult(); var sw = Stopwatch.StartNew(); rrow.Count = collection.Count(qry);//Performs server-side count over query rrow.Interval = sw.Elapsed; var result = new Rowset(Schema.GetForTypedDoc(typeof(TResult))); result.Add(rrow); return(result); }
public override Schema GetSchema(ICrudQueryExecutionContext context, Query query) { var ctx = (MsSqlCRUDQueryExecutionContext)context; var target = ctx.DataStore.TargetName; using (var cmd = ctx.Connection.CreateCommand()) { cmd.CommandText = Source.StatementSource; PopulateParameters(cmd, query); cmd.Transaction = ctx.Transaction; SqlDataReader reader = null; try { reader = cmd.ExecuteReader(CommandBehavior.SchemaOnly); GeneratorUtils.LogCommand(ctx.DataStore, "queryhandler-ok", cmd, null); } catch (Exception error) { GeneratorUtils.LogCommand(ctx.DataStore, "queryhandler-error", cmd, error); throw; } using (reader) { Schema.FieldDef[] toLoad; return(GetSchemaForQuery(target, query, reader, Source, out toLoad)); } //using reader } //using command }
public override Task <Schema> GetSchemaAsync(ICrudQueryExecutionContext context, Query query) { return(TaskUtils.AsCompletedTask(() => this.GetSchema(context, query))); }
public override Schema GetSchema(ICrudQueryExecutionContext context, Query query) { throw new NotImplementedException(); }
public sealed override async Task <RowsetBase> ExecuteAsync(ICrudQueryExecutionContext context, Query query, bool oneRow = false) => await ProfileAsync(() => ExecuteAsync((TStoreContext)context, query, oneRow));
public override Doc ExecuteProcedure(ICrudQueryExecutionContext context, Query query) { throw new NotImplementedException(); }
/// <summary> /// Executes query without fetching any data but schema. The implementation may be called by multiple threads and must be safe /// </summary> public abstract Task <Schema> GetSchemaAsync(ICrudQueryExecutionContext context, Query query);
public sealed override async Task <Doc> ExecuteProcedureAsync(ICrudQueryExecutionContext context, Query query) => await ProfileAsync(() => ExecuteProcedureAsync((TStoreContext)context, query));
public override Cursor OpenCursor(ICrudQueryExecutionContext context, Query query) { throw new NotImplementedException(); }
public sealed override async Task <Schema> GetSchemaAsync(ICrudQueryExecutionContext context, Query query) => await ProfileAsync(() => GetSchemaAsync((TStoreContext)context, query));
public override Schema GetSchema(ICrudQueryExecutionContext context, Query query) => Profile(() => GetSchemaAsync(context, query).GetAwaiter().GetResult());
/// <summary> /// Executes query into Cursor. The implementation may be called by multiple threads and must be safe /// </summary> public abstract Cursor OpenCursor(ICrudQueryExecutionContext context, Query query);
/// <summary> /// Executes query which fetches rowset, such as SELECT statement. The implementation may be called by multiple threads and must be safe /// </summary> public abstract Task <RowsetBase> ExecuteAsync(ICrudQueryExecutionContext context, Query query, bool oneRow = false);
/// <summary> /// Executes query which fetches rowset, such as SELECT statement. The implementation may be called by multiple threads and must be safe /// </summary> public abstract RowsetBase Execute(ICrudQueryExecutionContext context, Query query, bool oneRow = false);
public override RowsetBase Execute(ICrudQueryExecutionContext context, Query query, bool oneRow = false) { throw new NotImplementedException(); }
public override Doc ExecuteProcedure(ICrudQueryExecutionContext context, Query query) => Profile(() => ExecuteProcedureAsync(context, query).GetAwaiter().GetResult());
public override Task <RowsetBase> ExecuteAsync(ICrudQueryExecutionContext context, Query query, bool oneRow = false) { return(TaskUtils.AsCompletedTask(() => this.Execute(context, query, oneRow))); }
public sealed override async Task <Cursor> OpenCursorAsync(ICrudQueryExecutionContext context, Query query) => await ProfileAsync(() => OpenCursorAsync((TStoreContext)context, query));
public override Task <Cursor> OpenCursorAsync(ICrudQueryExecutionContext context, Query query) { return(TaskUtils.AsCompletedTask(() => this.OpenCursor(context, query))); }
public override Cursor OpenCursor(ICrudQueryExecutionContext context, Query query) => Profile(() => OpenCursorAsync(context, query).GetAwaiter().GetResult());
public override Task <Doc> ExecuteProcedureAsync(ICrudQueryExecutionContext context, Query query) { return(TaskUtils.AsCompletedTask(() => this.ExecuteProcedure(context, query))); }
/// <summary> /// Executes query without fetching any data but schema. The implementation may be called by multiple threads and must be safe /// </summary> public abstract Schema GetSchema(ICrudQueryExecutionContext context, Query query);