public Func <System.Data.IDataReader, int, global::FormABC.Input[]> Find(Revenj.DatabasePersistence.Postgres.IBulkReadQuery query, IEnumerable <string> uris) { var sw = query.Writer; var cms = query.Stream; var count = uris != null?uris.Count() : 0; var pks = new List <string>(count); foreach (var _u in uris ?? new string[0]) { if (_u != null) { pks.Add(_u); } } if (pks.Count == 0) { sw.Write("SELECT 0"); return((dr, ind) => new global::FormABC.Input[0]); } if (query.UsePrepared) { sw.Write(@"SELECT array_agg(_r) FROM ""FormABC"".""Input_entity"" _r WHERE _r.""ID"" = ANY("); var nextArg = query.GetNextArgument(wr => { wr.Write("ARRAY["); PostgresRecordConverter.WriteSimpleUriList(wr, pks); wr.Write("]::uuid[]"); }, "uuid[]"); sw.Write(nextArg); sw.Write(')'); } else { sw.Write(@"SELECT array_agg(_r) FROM ""FormABC"".""Input_entity"" _r WHERE _r.""ID"" IN ("); PostgresRecordConverter.WriteSimpleUriList(sw, pks); sw.Write(')'); } return((dr, ind) => { var result = new List <global::FormABC.Input>(pks.Count); var _pg = dr.GetValue(ind); var _str = _pg as string; if (_str != null) { result.AddRange(PostgresTypedArray.ParseCollection(cms.UseBufferedReader(_str), 0, Locator, _DatabaseCommon.FactoryFormABC_Input.InputConverter.CreateFromRecord)); } else { using (var _tr = _pg as System.IO.TextReader ?? new System.IO.StringReader(_pg.ToString())) result.AddRange(PostgresTypedArray.ParseCollection(cms.UseBufferedReader(_tr), 0, Locator, _DatabaseCommon.FactoryFormABC_Input.InputConverter.CreateFromRecord)); } var found = result.ToArray(); return found; }); }
public Func <System.Data.IDataReader, int, global::FormABC.Input> Find(Revenj.DatabasePersistence.Postgres.IBulkReadQuery query, string uri) { var sw = query.Writer; var cms = query.Stream; if (uri == null) { sw.Write("SELECT 0"); return((dr, ind) => null); } sw.Write(@"SELECT _r FROM ""FormABC"".""Input_entity"" _r WHERE _r.""ID"" = "); if (query.UsePrepared) { var nextArg = query.GetNextArgument(wr => { PostgresRecordConverter.WriteSimpleUri(wr, uri); wr.Write("::uuid"); }, "uuid"); sw.Write(nextArg); } else { PostgresRecordConverter.WriteSimpleUri(sw, uri); } return((dr, ind) => { global::FormABC.Input result = null; var _pg = dr.GetValue(ind); var _str = _pg as string; if (_str != null) { result = _DatabaseCommon.FactoryFormABC_Input.InputConverter.CreateFromRecord(cms.UseBufferedReader(_str), 0, Locator); } else { using (var _tr = _pg as System.IO.TextReader ?? new System.IO.StringReader(_pg.ToString())) result = _DatabaseCommon.FactoryFormABC_Input.InputConverter.CreateFromRecord(cms.UseBufferedReader(_tr), 0, Locator); } if (!HasCustomSecurity) { return result; } var found = new [] { result }; return found.Length == 1 ? result : null; }); }
public Func <System.Data.IDataReader, int, global::FormABC.Input[]> Search(Revenj.DatabasePersistence.Postgres.IBulkReadQuery query, ISpecification <global::FormABC.Input> specification, int?limit, int?offset) { var selectType = "SELECT array_agg(_r) FROM (SELECT _it as _r"; var sw = query.Writer; var cms = query.Stream; if (specification == null) { sw.Write(@"SELECT array_agg(_r) FROM (SELECT _r FROM ""FormABC"".""Input_entity"" _r"); } else { sw.Write("SELECT 0"); return((dr, ind) => Search(specification, limit, offset)); } if (limit != null && limit.Value >= 0) { sw.Write(" LIMIT "); sw.Write(limit.Value); } if (offset != null && offset.Value >= 0) { sw.Write(" OFFSET "); sw.Write(offset.Value); } sw.Write(@") _sq"); return((dr, ind) => { List <global::FormABC.Input> result; var _pg = dr.GetValue(ind); var _str = _pg as string; if (_str != null) { result = PostgresTypedArray.ParseCollection(cms.UseBufferedReader(_str), 0, Locator, _DatabaseCommon.FactoryFormABC_Input.InputConverter.CreateFromRecord); } else { using (var _tr = _pg as System.IO.TextReader ?? new System.IO.StringReader(_pg.ToString())) result = PostgresTypedArray.ParseCollection(cms.UseBufferedReader(_tr), 0, Locator, _DatabaseCommon.FactoryFormABC_Input.InputConverter.CreateFromRecord); } var found = result.ToArray(); return found; }); }
public Func <System.Data.IDataReader, int, long> Count(Revenj.DatabasePersistence.Postgres.IBulkReadQuery query, ISpecification <global::FormABC.Input> specification) { var selectType = "SELECT count(*)"; var sw = query.Writer; var cms = query.Stream; if (specification == null) { sw.Write(@"SELECT count(*) FROM ""FormABC"".""Input_entity"" r"); } else { sw.Write("SELECT 0"); return((dr, ind) => Query(specification).LongCount()); } return((dr, ind) => dr.GetInt64(ind)); }
public Func <System.Data.IDataReader, int, bool> Exists(Revenj.DatabasePersistence.Postgres.IBulkReadQuery query, ISpecification <global::Test.XYZ> specification) { var selectType = "exists(SELECT *"; var sw = query.Writer; var cms = query.Stream; if (specification == null) { sw.Write(@"exists(SELECT * FROM ""Test"".""XYZ_entity"" r"); } else if (specification is global::Test.XYZ.FindBy) { var spec = specification as global::Test.XYZ.FindBy; sw.Write(selectType); sw.Write(@" FROM ""Test"".""XYZ.FindBy""("); if (query.UsePrepared) { sw.Write(query.GetNextArgument(tw => { tw.Write('\''); _DatabaseCommon.Utility.StringToTuple(spec.from).InsertRecord(tw, cms.SmallBuffer, string.Empty, PostgresTuple.EscapeQuote); tw.Write('\''); tw.Write("::varchar"); }, "varchar")); } else { sw.Write('\''); _DatabaseCommon.Utility.StringToTuple(spec.from).InsertRecord(sw, cms.SmallBuffer, string.Empty, PostgresTuple.EscapeQuote); sw.Write('\''); } sw.Write(") _it"); } else { sw.Write("SELECT 0"); return((dr, ind) => Query(specification).Any()); } sw.Write(')'); return((dr, ind) => dr.GetBoolean(ind)); }
public Func <System.Data.IDataReader, int, bool> Exists(Revenj.DatabasePersistence.Postgres.IBulkReadQuery query, ISpecification <global::FormABC.Input> specification) { var selectType = "exists(SELECT *"; var sw = query.Writer; var cms = query.Stream; if (specification == null) { sw.Write(@"exists(SELECT * FROM ""FormABC"".""Input_entity"" r"); } else { sw.Write("SELECT 0"); return((dr, ind) => Query(specification).Any()); } sw.Write(')'); return((dr, ind) => dr.GetBoolean(ind)); }
public Func <System.Data.IDataReader, int, long> Count(Revenj.DatabasePersistence.Postgres.IBulkReadQuery query, ISpecification <global::UseCase1.SelectedSubmission> specification) { var selectType = "SELECT count(*)"; var sw = query.Writer; var cms = query.Stream; if (specification == null) { sw.Write(@"SELECT count(*) FROM ""UseCase1"".""SelectedSubmission"" r"); } else if (specification is global::UseCase1.SelectedSubmission.Where) { var spec = specification as global::UseCase1.SelectedSubmission.Where; sw.Write(selectType); sw.Write(@" FROM ""UseCase1"".""SelectedSubmission.Where""("); if (query.UsePrepared) { sw.Write(query.GetNextArgument(tw => { tw.Write('\''); _DatabaseCommon.Utility.StringToTuple(spec.uri).InsertRecord(tw, cms.SmallBuffer, string.Empty, PostgresTuple.EscapeQuote); tw.Write('\''); tw.Write("::varchar"); }, "varchar")); } else { sw.Write('\''); _DatabaseCommon.Utility.StringToTuple(spec.uri).InsertRecord(sw, cms.SmallBuffer, string.Empty, PostgresTuple.EscapeQuote); sw.Write('\''); } sw.Write(") _it"); } else { sw.Write("SELECT 0"); return((dr, ind) => Query(specification).LongCount()); } return((dr, ind) => dr.GetInt64(ind)); }
public Func <System.Data.IDataReader, int, global::Test.XYZ[]> Search(Revenj.DatabasePersistence.Postgres.IBulkReadQuery query, ISpecification <global::Test.XYZ> specification, int?limit, int?offset) { var selectType = "SELECT array_agg(_r) FROM (SELECT _it as _r"; var sw = query.Writer; var cms = query.Stream; if (specification == null) { sw.Write(@"SELECT array_agg(_r) FROM (SELECT _r FROM ""Test"".""XYZ_entity"" _r"); } else if (specification is global::Test.XYZ.FindBy) { var spec = specification as global::Test.XYZ.FindBy; sw.Write(selectType); sw.Write(@" FROM ""Test"".""XYZ.FindBy""("); if (query.UsePrepared) { sw.Write(query.GetNextArgument(tw => { tw.Write('\''); _DatabaseCommon.Utility.StringToTuple(spec.from).InsertRecord(tw, cms.SmallBuffer, string.Empty, PostgresTuple.EscapeQuote); tw.Write('\''); tw.Write("::varchar"); }, "varchar")); } else { sw.Write('\''); _DatabaseCommon.Utility.StringToTuple(spec.from).InsertRecord(sw, cms.SmallBuffer, string.Empty, PostgresTuple.EscapeQuote); sw.Write('\''); } sw.Write(") _it"); } else { sw.Write("SELECT 0"); return((dr, ind) => Search(specification, limit, offset)); } if (limit != null && limit.Value >= 0) { sw.Write(" LIMIT "); sw.Write(limit.Value); } if (offset != null && offset.Value >= 0) { sw.Write(" OFFSET "); sw.Write(offset.Value); } sw.Write(@") _sq"); return((dr, ind) => { List <global::Test.XYZ> result; var _pg = dr.GetValue(ind); var _str = _pg as string; if (_str != null) { result = PostgresTypedArray.ParseCollection(cms.UseBufferedReader(_str), 0, Locator, _DatabaseCommon.FactoryTest_XYZ.XYZConverter.CreateFromRecord); } else { using (var _tr = _pg as System.IO.TextReader ?? new System.IO.StringReader(_pg.ToString())) result = PostgresTypedArray.ParseCollection(cms.UseBufferedReader(_tr), 0, Locator, _DatabaseCommon.FactoryTest_XYZ.XYZConverter.CreateFromRecord); } var found = result.ToArray(); return found; }); }