Skip to content
This repository has been archived by the owner on Oct 8, 2020. It is now read-only.

Commit

Permalink
IDbPipe.Reading
Browse files Browse the repository at this point in the history
  • Loading branch information
danielwertheim committed Nov 30, 2012
1 parent 81f785f commit 2e3de5c
Show file tree
Hide file tree
Showing 9 changed files with 53 additions and 69 deletions.
10 changes: 2 additions & 8 deletions Source/Projects/SisoDb.Sql2005/Sql2005DbClient.cs
Expand Up @@ -78,14 +78,8 @@ public override IEnumerable<string> GetJsonByIds(IEnumerable<IStructureId> ids,
var paramsString = string.Join(",", batchedIds.Select(p => p.Name));
cmd.CommandText = sqlFormat.Inject(paramsString);

using (var reader = cmd.ExecuteReader(CommandBehavior.SingleResult | CommandBehavior.SequentialAccess))
{
while (reader.Read())
{
yield return reader.GetString(0);
}
reader.Close();
}
foreach (var data in YieldJson(structureSchema, cmd))
yield return data;
}
}
}
Expand Down
10 changes: 2 additions & 8 deletions Source/Projects/SisoDb.SqlCe4/SqlCe4DbClient.cs
Expand Up @@ -281,14 +281,8 @@ public override IEnumerable<string> GetJsonByIds(IEnumerable<IStructureId> ids,
var paramsString = string.Join(",", batchedIds.Select(p => p.Name));
cmd.CommandText = sqlFormat.Inject(paramsString);

using (var reader = cmd.ExecuteReader(CommandBehavior.SingleResult | CommandBehavior.SequentialAccess))
{
while (reader.Read())
{
yield return reader.GetString(0);
}
reader.Close();
}
foreach (var data in YieldJson(structureSchema, cmd))
yield return data;
}
}
}
Expand Down
10 changes: 2 additions & 8 deletions Source/Projects/SisoDb.SqlServer/SqlServerDbClient.cs
Expand Up @@ -79,14 +79,8 @@ public override IEnumerable<string> GetJsonByIds(IEnumerable<IStructureId> ids,
cmd.Parameters.Clear();
cmd.Parameters.Add(SqlServerIdsTableParam.CreateIdsTableParam(structureSchema.IdAccessor.IdType, idBatch));

using (var reader = cmd.ExecuteReader(CommandBehavior.SingleResult | CommandBehavior.SequentialAccess))
{
while (reader.Read())
{
yield return reader.GetString(0);
}
reader.Close();
}
foreach (var data in YieldJson(structureSchema, cmd))
yield return data;
}
}
}
Expand Down
52 changes: 30 additions & 22 deletions Source/Projects/SisoDb/Dac/DbClientBase.cs
Expand Up @@ -615,7 +615,9 @@ public virtual string GetJsonById(IStructureId structureId, IStructureSchema str

var sql = SqlStatements.GetSql("GetJsonById").Inject(structureSchema.GetStructureTableName());

return ExecuteScalar<string>(sql, new DacParameter("id", structureId.Value));
return HasPipe
? Pipe.Reading(structureSchema, ExecuteScalar<string>(sql, new DacParameter("id", structureId.Value)))
: ExecuteScalar<string>(sql, new DacParameter("id", structureId.Value));
}

public virtual string GetJsonByIdWithLock(IStructureId structureId, IStructureSchema structureSchema)
Expand All @@ -624,7 +626,9 @@ public virtual string GetJsonByIdWithLock(IStructureId structureId, IStructureSc

var sql = SqlStatements.GetSql("GetJsonByIdWithLock").Inject(structureSchema.GetStructureTableName());

return ExecuteScalar<string>(sql, new DacParameter("id", structureId.Value));
return HasPipe
? Pipe.Reading(structureSchema, ExecuteScalar<string>(sql, new DacParameter("id", structureId.Value)))
: ExecuteScalar<string>(sql, new DacParameter("id", structureId.Value));
}

public virtual IEnumerable<string> GetJsonOrderedByStructureId(IStructureSchema structureSchema)
Expand All @@ -633,26 +637,43 @@ public virtual IEnumerable<string> GetJsonOrderedByStructureId(IStructureSchema

var sql = SqlStatements.GetSql("GetAllJson").Inject(structureSchema.GetStructureTableName());

return YieldJson(sql);
return YieldJson(structureSchema, sql);
}

public abstract IEnumerable<string> GetJsonByIds(IEnumerable<IStructureId> ids, IStructureSchema structureSchema);

public virtual IEnumerable<string> YieldJson(string sql, params IDacParameter[] parameters)
public virtual IEnumerable<string> YieldJson(IStructureSchema structureSchema, string sql, params IDacParameter[] parameters)
{
using (var cmd = CreateCommand(sql, parameters))
{
foreach (var json in YieldJson(cmd))
yield return json;
return YieldJson(structureSchema, cmd);
}
}

public virtual IEnumerable<string> YieldJsonBySp(string sql, params IDacParameter[] parameters)
public virtual IEnumerable<string> YieldJsonBySp(IStructureSchema structureSchema, string sql, params IDacParameter[] parameters)
{
using (var cmd = CreateSpCommand(sql, parameters))
{
foreach (var json in YieldJson(cmd))
yield return json;
return YieldJson(structureSchema, cmd);
}
}

protected virtual IEnumerable<string> YieldJson(IStructureSchema structureSchema, IDbCommand cmd)
{
using (var reader = cmd.ExecuteReader(CommandBehavior.SingleResult | CommandBehavior.SequentialAccess))
{
var i = reader.FieldCount - 1;
if (HasPipe)
{
while (reader.Read())
yield return Pipe.Reading(structureSchema, reader.GetString(i));
}
else
{
while (reader.Read())
yield return reader.GetString(i);
}
reader.Close();
}
}

Expand Down Expand Up @@ -822,19 +843,6 @@ public virtual void SingleUpdateOfStructure(IStructure structure, IStructureSche
new DacParameter(StructureStorageSchema.Fields.Id.Name, structure.Id.Value));
}

private IEnumerable<string> YieldJson(IDbCommand cmd)
{
using (var reader = cmd.ExecuteReader(CommandBehavior.SingleResult | CommandBehavior.SequentialAccess))
{
var i = reader.FieldCount - 1;
while (reader.Read())
{
yield return reader.GetString(i);
}
reader.Close();
}
}

protected virtual void EnsureValidNames(ModelTableNames names)
{
foreach (var tableName in names.AllTableNames)
Expand Down
4 changes: 2 additions & 2 deletions Source/Projects/SisoDb/Dac/IDbClient.cs
Expand Up @@ -65,8 +65,8 @@ public interface IDbClient : IDisposable
IEnumerable<string> GetJsonOrderedByStructureId(IStructureSchema structureSchema);
IEnumerable<string> GetJsonByIds(IEnumerable<IStructureId> ids, IStructureSchema structureSchema);

IEnumerable<string> YieldJson(string sql, params IDacParameter[] parameters);
IEnumerable<string> YieldJsonBySp(string sql, params IDacParameter[] parameters);
IEnumerable<string> YieldJson(IStructureSchema structureSchema, string sql, params IDacParameter[] parameters);
IEnumerable<string> YieldJsonBySp(IStructureSchema structureSchema, string sql, params IDacParameter[] parameters);

void BulkInsertStructures(IStructureSchema structureSchema, IStructure[] structures);
void BulkInsertIndexes(IndexesReader reader);
Expand Down
8 changes: 4 additions & 4 deletions Source/Projects/SisoDb/DbQueryEngine.cs
Expand Up @@ -187,7 +187,7 @@ protected virtual IEnumerable<object> OnQuery(IQuery query, Type structureType)
sqlQuery,
q =>
{
var sourceData = DbClient.YieldJson(sqlQuery.Sql, sqlQuery.Parameters);
var sourceData = DbClient.YieldJson(structureSchema, sqlQuery.Sql, sqlQuery.Parameters);
return Db.Serializer.DeserializeMany(sourceData, structureType);
},
ExecutionContext.Session.CacheConsumeMode);
Expand Down Expand Up @@ -223,7 +223,7 @@ protected virtual IEnumerable<object> OnQueryAs(IQuery query, Type structureType
sqlQuery,
q =>
{
var sourceData = DbClient.YieldJson(sqlQuery.Sql, sqlQuery.Parameters);
var sourceData = DbClient.YieldJson(structureSchema, sqlQuery.Sql, sqlQuery.Parameters);
return Db.Serializer.DeserializeMany(sourceData, resultType);
},
ExecutionContext.Session.CacheConsumeMode);
Expand All @@ -247,7 +247,7 @@ protected virtual IEnumerable<object> OnQueryAs(IQuery query, Type structureType
sqlQuery,
q =>
{
var sourceData = DbClient.YieldJson(sqlQuery.Sql, sqlQuery.Parameters);
var sourceData = DbClient.YieldJson(structureSchema, sqlQuery.Sql, sqlQuery.Parameters);
return Db.Serializer.DeserializeMany<TResult>(sourceData);
},
ExecutionContext.Session.CacheConsumeMode);
Expand All @@ -274,7 +274,7 @@ protected virtual IEnumerable<string> OnQueryAsJson(Type structuretype, IQuery q

var sqlQuery = QueryGenerator.GenerateQuery(query);

return DbClient.YieldJson(sqlQuery.Sql, sqlQuery.Parameters);
return DbClient.YieldJson(structureSchema, sqlQuery.Sql, sqlQuery.Parameters);
}
}
}
4 changes: 2 additions & 2 deletions Source/Projects/SisoDb/DbSession.cs
Expand Up @@ -218,7 +218,7 @@ protected virtual TOut OnGetByQueryAs<TOut>(Type structureType, Expression<Func<
var query = queryBuilder.Build();
var sqlQuery = QueryGenerator.GenerateQuery(query);
var sourceData = DbClient.YieldJson(sqlQuery.Sql, sqlQuery.Parameters).SingleOrDefault();
var sourceData = DbClient.YieldJson(structureSchema, sqlQuery.Sql, sqlQuery.Parameters).SingleOrDefault();
return Db.Serializer.Deserialize<TOut>(sourceData);
},
Expand Down Expand Up @@ -708,7 +708,7 @@ protected virtual void OnEnsureConcurrencyTokenIsValid(IStructureSchema structur
var sqlQuery = QueryGenerator.GenerateQuery(query);
foreach (var structure in Db.Serializer.DeserializeMany<T>(
DbClient.YieldJson(sqlQuery.Sql, sqlQuery.Parameters)))
DbClient.YieldJson(structureSchema, sqlQuery.Sql, sqlQuery.Parameters)))
{
var structureIdBefore = structureSchema.IdAccessor.GetValue(structure);
modifier.Invoke(structure);
Expand Down
20 changes: 8 additions & 12 deletions Source/Projects/SisoDb/DbSessionAdvanced.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using SisoDb.Dac;
using SisoDb.EnsureThat;
Expand Down Expand Up @@ -121,11 +120,9 @@ public virtual void NonQuery(string sql, params IDacParameter[] parameters)
{
Ensure.That(query, "query").IsNotNull();

OnUpsertStructureSchema<TContract>();
var structureSchema = OnUpsertStructureSchema<TContract>();

var sourceData = DbClient.YieldJsonBySp(query.Name, query.Parameters);

return Db.Serializer.DeserializeMany<TOut>(sourceData);
return Db.Serializer.DeserializeMany<TOut>(DbClient.YieldJsonBySp(structureSchema, query.Name, query.Parameters));
}

public virtual IEnumerable<string> NamedQueryAsJson<T>(INamedQuery query) where T : class
Expand Down Expand Up @@ -153,9 +150,9 @@ public virtual void NonQuery(string sql, params IDacParameter[] parameters)
{
Ensure.That(query, "query").IsNotNull();

OnUpsertStructureSchema<T>();
var structureSchema = OnUpsertStructureSchema<T>();

return DbClient.YieldJsonBySp(query.Name, query.Parameters);
return DbClient.YieldJsonBySp(structureSchema, query.Name, query.Parameters);
}

public virtual IEnumerable<T> RawQuery<T>(IRawQuery query) where T : class
Expand All @@ -174,10 +171,9 @@ public virtual void NonQuery(string sql, params IDacParameter[] parameters)
{
Ensure.That(query, "query").IsNotNull();

OnUpsertStructureSchema<TContract>();
var structureSchema = OnUpsertStructureSchema<TContract>();

var sourceData = DbClient.YieldJson(query.QueryString, query.Parameters);
return Db.Serializer.DeserializeMany<TOut>(sourceData);
return Db.Serializer.DeserializeMany<TOut>(DbClient.YieldJson(structureSchema, query.QueryString, query.Parameters));
}

public virtual IEnumerable<string> RawQueryAsJson<T>(IRawQuery query) where T : class
Expand All @@ -186,9 +182,9 @@ public virtual void NonQuery(string sql, params IDacParameter[] parameters)
{
Ensure.That(query, "query").IsNotNull();
OnUpsertStructureSchema<T>();
var structureSchema = OnUpsertStructureSchema<T>();
return DbClient.YieldJson(query.QueryString, query.Parameters);
return DbClient.YieldJson(structureSchema, query.QueryString, query.Parameters);
});
}
}
Expand Down
4 changes: 1 addition & 3 deletions Source/Projects/SisoDb/IDbPipe.cs
@@ -1,12 +1,10 @@
using System.Collections.Generic;
using SisoDb.Structures.Schemas;
using SisoDb.Structures.Schemas;

namespace SisoDb
{
public interface IDbPipe
{
string Writing(IStructureSchema structureSchema, string data);
string Reading(IStructureSchema structureSchema, string data);
IEnumerable<string> Reading(IStructureSchema structureSchema, IEnumerable<string> data);
}
}

0 comments on commit 2e3de5c

Please sign in to comment.