Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit db43c91

Browse files
committed
Add SoftDeleteUseCase example
1 parent e5b7ebb commit db43c91

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

tests/ServiceStack.OrmLite.Tests/ServiceStack.OrmLite.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,7 @@
313313
<Compile Include="UseCase\SimpleUseCase.cs" />
314314
<Compile Include="OrmLiteGetScalarTests.cs" />
315315
<Compile Include="OrmLiteCreateTableWithNamingStrategyTest.cs" />
316+
<Compile Include="UseCase\SoftDeleteUseCase.cs" />
316317
<Compile Include="_TypeDescriptorMetadataTests.cs" />
317318
</ItemGroup>
318319
<ItemGroup>
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
using NUnit.Framework;
2+
using ServiceStack.DataAnnotations;
3+
4+
namespace ServiceStack.OrmLite.Tests.UseCase
5+
{
6+
public interface ISoftDelete
7+
{
8+
bool IsDeleted { get; set; }
9+
}
10+
11+
public class ModelWithSoftDelete : ISoftDelete
12+
{
13+
[AutoIncrement]
14+
public int Id { get; set; }
15+
public string Name { get; set; }
16+
public bool IsDeleted { get; set; }
17+
}
18+
19+
public static class SqlExpressionExtensions
20+
{
21+
public static SqlExpression<T> OnlyActive<T>(this SqlExpression<T> q)
22+
where T : ISoftDelete
23+
{
24+
return q.Where(x => x.IsDeleted != true);
25+
}
26+
}
27+
28+
public class SoftDeleteUseCase : OrmLiteTestBase
29+
{
30+
[Test]
31+
public void Can_add_generic_soft_delete_filter_to_SqlExpression()
32+
{
33+
using (var db = OpenDbConnection())
34+
{
35+
db.DropAndCreateTable<ModelWithSoftDelete>();
36+
37+
db.Insert(new ModelWithSoftDelete { Name = "foo" });
38+
db.Insert(new ModelWithSoftDelete { Name = "bar", IsDeleted = true });
39+
40+
var results = db.Select(db.From<ModelWithSoftDelete>().OnlyActive());
41+
42+
Assert.That(results.Count, Is.EqualTo(1));
43+
Assert.That(results[0].Name, Is.EqualTo("foo"));
44+
45+
var result = db.Single(db.From<ModelWithSoftDelete>().Where(x => x.Name == "foo").OnlyActive());
46+
Assert.That(result.Name, Is.EqualTo("foo"));
47+
result = db.Single(db.From<ModelWithSoftDelete>().Where(x => x.Name == "bar").OnlyActive());
48+
Assert.That(result, Is.Null);
49+
}
50+
}
51+
}
52+
}

0 commit comments

Comments
 (0)