1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2024-12-27 02:43:57 +02:00

elq id is now ignored by petapoco.

This commit is contained in:
kay.one 2013-02-15 20:03:54 -08:00
parent c6fa3cc02b
commit eb90040dd6
5 changed files with 45 additions and 14 deletions

View File

@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Eloquera.Client;
@ -41,6 +42,20 @@ public void should_be_able_to_write_to_database()
Db.AsQueryable<Series>().Should().HaveCount(1);
}
[Test]
public void double_insert_should_fail()
{
Db.Insert(testSeries);
Assert.Throws<InvalidOperationException>(() => Db.Insert(testSeries));
}
[Test]
public void update_item_with_root_index_0_should_faile()
{
testSeries.Id = 0;
Assert.Throws<InvalidOperationException>(() => Db.Update(testSeries));
}
[Test]
public void should_not_store_dirty_data_in_cache()
{
@ -92,11 +107,10 @@ public void new_objects_should_get_id()
}
[Test]
public void new_existing_object_should_get_new_id()
public void new_object_should_get_new_id()
{
testSeries.Id = 0;
Db.Insert(testSeries);
Db.Insert(testSeries);
Db.AsQueryable<Series>().Should().HaveCount(1);
testSeries.Id.Should().Be(1);

View File

@ -8,6 +8,7 @@ public abstract class BaseRepositoryModel
[ID]
private long _eqId;
[PetaPoco.Ignore]
public int Id { get; set; }
}
}

View File

@ -25,6 +25,23 @@ public IEnumerable<T> AsQueryable<T>()
public T Insert<T>(T obj) where T : BaseRepositoryModel
{
if (obj.Id != 0)
{
throw new InvalidOperationException("Attempted to insert object with existing ID as new object");
}
_idService.EnsureIds(obj, new HashSet<object>());
Db.Store(obj);
return obj;
}
public T Update<T>(T obj) where T : BaseRepositoryModel
{
if (obj.Id == 0)
{
throw new InvalidOperationException("Attempted to update object without ID");
}
_idService.EnsureIds(obj, new HashSet<object>());
Db.Store(obj);
return obj;
@ -35,25 +52,24 @@ public IList<T> InsertMany<T>(IList<T> objects) where T : BaseRepositoryModel
_idService.EnsureIds(objects, new HashSet<object>());
return DoMany(objects, Insert);
}
public T Update<T>(T obj)
{
Db.Store(obj);
return obj;
}
public IList<T> UpdateMany<T>(IList<T> objects)
public IList<T> UpdateMany<T>(IList<T> objects) where T : BaseRepositoryModel
{
_idService.EnsureIds(objects, new HashSet<object>());
return DoMany(objects, Update);
}
public void Delete<T>(T obj) where T : new()
public void Delete<T>(T obj) where T : BaseRepositoryModel
{
if (obj.Id == 0)
{
throw new InvalidOperationException("Attempted to delete an object without an ID");
}
Db.Delete(obj);
}
public void DeleteMany<T>(IEnumerable<T> objects) where T : new()
public void DeleteMany<T>(IEnumerable<T> objects) where T : BaseRepositoryModel
{
foreach (var o in objects)
{
@ -61,7 +77,7 @@ public IList<T> UpdateMany<T>(IList<T> objects)
}
}
private IList<T> DoMany<T>(IEnumerable<T> objects, Func<T, T> function)
private IList<T> DoMany<T>(IEnumerable<T> objects, Func<T, T> function) where T : BaseRepositoryModel
{
return objects.Select(function).ToList();
}

View File

@ -2,7 +2,7 @@
using System.Linq;
using NzbDrone.Core.Repository;
namespace NzbDrone.Core.Datastore.PetaPoco
namespace PetaPoco
{
public class EpisodeSeasonRelator
{