2424using System ;
2525using System . Collections ;
2626using System . Collections . Generic ;
27+ using System . Diagnostics . Contracts ;
2728using System . Linq ;
2829using System . Linq . Expressions ;
2930using System . Reactive . Linq ;
3738
3839namespace SQLitePCL . pretty . Orm
3940{
40-
4141 /// <summary>
4242 /// An immutable builder that allows the use of LINQ like syntax to build a SQL query that can subsequently be executed against a SQLite database.
4343 /// </summary>
44- public sealed class TableQuery < T >
44+ internal sealed class TableQuery < T >
4545 {
4646 private readonly string _selection ;
4747 private readonly ITableMapping < T > _mapping ;
@@ -106,9 +106,9 @@ public override string ToString()
106106 /// Converts the query to a count query.
107107 /// </summary>
108108 /// <returns>A new <see cref="SQLitePCL.pretty.Orm.TableQuery<T>"/>.</returns>
109- public TableQuery < T > Count ( )
109+ public string Count ( )
110110 {
111- return new TableQuery < T > ( _mapping , "count(*)" , _where , _orderBy , _limit , _offset ) ;
111+ return new TableQuery < T > ( _mapping , "count(*)" , _where , _orderBy , _limit , _offset ) . ToString ( ) ;
112112 }
113113
114114 /// <summary>
@@ -125,7 +125,6 @@ public TableQuery<T> Where(Expression<Func<T, bool>> predExpr)
125125
126126 if ( _limit != null || _offset != null )
127127 {
128- // FIXME: Why?
129128 throw new NotSupportedException ( "Cannot call where after a skip or a take" ) ;
130129 }
131130
@@ -467,7 +466,7 @@ private static string GetSqlName (Expression expr)
467466 /// <summary>
468467 /// Extension methods for querying a database using instances of <see cref="TableQuery<T>"/>
469468 /// </summary>
470- public static class TableQuery
469+ internal static class TableQuery
471470 {
472471 public static ITableMappedStatement < T > PrepareStatement < T > ( this IDatabaseConnection This , TableQuery < T > query )
473472 {
@@ -489,44 +488,14 @@ public static IObservable<T> Query<T>(this IAsyncDatabaseConnection This, TableQ
489488 return This . Query ( query . ToString ( ) ) . Select ( query . Mapping . ToObject ) ;
490489 }
491490
492- public static IStatement PrepareCountStatement < T > ( this IDatabaseConnection This , TableQuery < T > query )
493- {
494- return This . PrepareStatement ( query . Count ( ) . ToString ( ) ) ;
495- }
496-
497- public static Task < IAsyncStatement > PrepareCountStatemenAsync < T > ( this IAsyncDatabaseConnection This , TableQuery < T > query )
498- {
499- return This . PrepareStatementAsync ( query . Count ( ) . ToString ( ) ) ;
500- }
501-
502- public static int Count < T > ( this IDatabaseConnection This , TableQuery < T > query )
503- {
504- return This . Query ( query . Count ( ) . ToString ( ) ) . SelectScalarInt ( ) . First ( ) ;
505- }
506-
507- public static Task < int > CountAsync < T > ( this IAsyncDatabaseConnection This , TableQuery < T > query )
491+ public static IObservable < T > Query < T > ( this IAsyncDatabaseConnection This , TableQuery < T > query , params object [ ] values )
508492 {
509- return This . CountAsync ( query , CancellationToken . None ) ;
510- }
511-
512- public static Task < int > CountAsync < T > ( this IAsyncDatabaseConnection This , TableQuery < T > query , CancellationToken ct )
513- {
514- return This . Query ( query . Count ( ) . ToString ( ) ) . SelectScalarInt ( ) . FirstAsync ( ) . ToTask ( ct ) ;
515- }
516-
517- public static int Count < T > ( this IDatabaseConnection This , TableQuery < T > query , params object [ ] values )
518- {
519- return This . Query ( query . Count ( ) . ToString ( ) , values ) . SelectScalarInt ( ) . First ( ) ;
520- }
521-
522- public static Task < int > CountAsync < T > ( this IAsyncDatabaseConnection This , TableQuery < T > query , params object [ ] values )
523- {
524- return This . CountAsync ( query , CancellationToken . None , values ) ;
493+ return This . Query ( query . ToString ( ) , values ) . Select ( query . Mapping . ToObject ) ;
525494 }
526495
527- public static Task < int > CountAsync < T > ( this IAsyncDatabaseConnection This , TableQuery < T > query , CancellationToken ct , params object [ ] values )
496+ public static IStatement PrepareCountStatement < T > ( this IDatabaseConnection This , TableQuery < T > query )
528497 {
529- return This . Query ( query . Count ( ) . ToString ( ) , values ) . SelectScalarInt ( ) . FirstAsync ( ) . ToTask ( ct ) ;
498+ return This . PrepareStatement ( query . Count ( ) . ToString ( ) ) ;
530499 }
531500 }
532501}
0 commit comments