@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Data ;
using System.Linq ;
using System.Linq.Expressions ;
using NzbDrone.Core.Tv ;
using ServiceStack.OrmLite ;
namespace NzbDrone.Core.Datastore
@ -12,6 +11,7 @@ namespace NzbDrone.Core.Datastore
{
IEnumerable < TModel > All ( ) ;
int Count ( ) ;
bool Any ( Expression < Func < TModel , bool > > predicate ) ;
TModel Get ( int id ) ;
TModel Single ( Expression < Func < TModel , bool > > predicate ) ;
TModel SingleOrDefault ( ) ;
@ -28,36 +28,41 @@ namespace NzbDrone.Core.Datastore
void Purge ( ) ;
bool HasItems ( ) ;
void DeleteMany ( IEnumerable < int > ids ) ;
void Update Only < TKey > ( TModel model , Expression < Func < TModel , TKey > > onlyFields ) ;
void Update Fields < TKey > ( TModel model , Expression < Func < TModel , TKey > > onlyFields ) ;
}
public class BasicRepository < TModel > : IBasicRepository < TModel > where TModel : ModelBase , new ( )
{
private readonly IDbConnection _database ;
public BasicRepository ( IDbConnection database )
{
D atabase = database ;
_d atabase = database ;
}
public IDbConnection Database { get ; private set ; }
public IEnumerable < TModel > All ( )
{
return D atabase. Select < TModel > ( ) ;
return _d atabase. Select < TModel > ( ) ;
}
public int Count ( )
{
return ( int ) Database . Count < TModel > ( ) ;
return ( int ) _database . Count < TModel > ( ) ;
}
public bool Any ( Expression < Func < TModel , bool > > predicate )
{
return _database . Exists < TModel > ( predicate ) ;
}
public TModel Get ( int id )
{
return Database . GetById < TModel > ( id ) ;
return _d atabase. GetById < TModel > ( id ) ;
}
public TModel Single ( Expression < Func < TModel , bool > > predicate )
{
return D atabase. Select ( predicate ) . Single ( ) ;
return _d atabase. Select ( predicate ) . Single ( ) ;
}
public TModel SingleOrDefault ( )
@ -72,73 +77,73 @@ namespace NzbDrone.Core.Datastore
public TModel SingleOrDefault ( Expression < Func < TModel , bool > > predicate )
{
return D atabase. Select ( predicate ) . SingleOrDefault ( ) ;
return _d atabase. Select ( predicate ) . SingleOrDefault ( ) ;
}
public List < TModel > Where ( Expression < Func < TModel , bool > > predicate )
{
return D atabase. Select ( predicate ) ;
return _d atabase. Select ( predicate ) ;
}
public TModel Insert ( TModel model )
{
D atabase. Insert ( model ) ;
model . Id = ( int ) D atabase. GetLastInsertId ( ) ;
_d atabase. Insert ( model ) ;
model . Id = ( int ) _d atabase. GetLastInsertId ( ) ;
return model ;
}
public TModel Update ( TModel model )
{
D atabase. Update ( model ) ;
_d atabase. Update ( model ) ;
return model ;
}
public void Delete ( TModel model )
{
D atabase. Delete ( model ) ;
_d atabase. Delete ( model ) ;
}
public void InsertMany ( IList < TModel > models )
{
D atabase. InsertAll ( models ) ;
_d atabase. InsertAll ( models ) ;
}
public void UpdateMany ( IList < TModel > models )
{
D atabase. UpdateAll ( models ) ;
_d atabase. UpdateAll ( models ) ;
}
public void DeleteMany ( List < TModel > models )
{
D atabase. DeleteAll ( models ) ;
_d atabase. DeleteAll ( models ) ;
}
public TModel Upsert ( TModel model )
{
if ( model . Id = = 0 )
{
D atabase. Insert ( model ) ;
model . Id = ( int ) D atabase. GetLastInsertId ( ) ;
_d atabase. Insert ( model ) ;
model . Id = ( int ) _d atabase. GetLastInsertId ( ) ;
return model ;
}
D atabase. Update ( model ) ;
_d atabase. Update ( model ) ;
return model ;
}
public void Delete ( int id )
{
D atabase. DeleteById < TModel > ( id ) ;
_d atabase. DeleteById < TModel > ( id ) ;
}
public void DeleteMany ( IEnumerable < int > ids )
{
D atabase. DeleteByIds < TModel > ( ids ) ;
_d atabase. DeleteByIds < TModel > ( ids ) ;
}
public void Purge ( )
{
D atabase. DeleteAll < TModel > ( ) ;
_d atabase. DeleteAll < TModel > ( ) ;
}
public bool HasItems ( )
@ -146,9 +151,14 @@ namespace NzbDrone.Core.Datastore
return Count ( ) > 0 ;
}
public void Update Only < TKey > ( TModel model , Expression < Func < TModel , TKey > > onlyFields )
public void Update Fields < TKey > ( TModel model , Expression < Func < TModel , TKey > > onlyFields )
{
Database . UpdateOnly ( model , onlyFields ) ;
if ( model . Id = = 0 )
{
throw new InvalidOperationException ( "Attempted to updated model without ID" ) ;
}
_database . UpdateOnly ( model , onlyFields , m = > m . Id = = model . Id ) ;
}
}
}