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

Commit 9d61368

Browse files
iscottb122Iain Scott
authored andcommitted
Play some code golf from the review.
1 parent 4ec5b3d commit 9d61368

1 file changed

Lines changed: 17 additions & 16 deletions

File tree

src/Winton.DomainModelling.DocumentDb/ValueObjectFacade.cs

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,7 @@ public ValueObjectFacade(
5151
public async Task Create<TValueObject>(TValueObject valueObject)
5252
where TValueObject : struct, IEquatable<TValueObject>
5353
{
54-
string valueObjectType = ValueObjectDocument<TValueObject>.GetDocumentType();
55-
56-
ValueObjectDocument<TValueObject> document =
57-
_documentClient.CreateDocumentQuery<ValueObjectDocument<TValueObject>>(GetUri())
58-
.Where(x => x.Type == valueObjectType)
59-
.AsEnumerable()
60-
.SingleOrDefault(x => x.ValueObject.Equals(valueObject));
54+
ValueObjectDocument<TValueObject> document = Get(valueObject);
6155

6256
if (document == null)
6357
{
@@ -77,13 +71,7 @@ public async Task Create<TValueObject>(TValueObject valueObject)
7771
public async Task Delete<TValueObject>(TValueObject valueObject)
7872
where TValueObject : struct, IEquatable<TValueObject>
7973
{
80-
string valueObjectType = ValueObjectDocument<TValueObject>.GetDocumentType();
81-
82-
ValueObjectDocument<TValueObject> document =
83-
_documentClient.CreateDocumentQuery<ValueObjectDocument<TValueObject>>(GetUri())
84-
.Where(x => x.Type == valueObjectType)
85-
.AsEnumerable()
86-
.SingleOrDefault(x => x.ValueObject.Equals(valueObject));
74+
ValueObjectDocument<TValueObject> document = Get(valueObject);
8775

8876
if (document != null)
8977
{
@@ -99,12 +87,25 @@ public async Task Delete<TValueObject>(TValueObject valueObject)
9987
/// <returns>An <see cref="T:System.Linq.IQueryable`1" />.</returns>
10088
public IQueryable<TValueObject> Query<TValueObject>()
10189
where TValueObject : struct, IEquatable<TValueObject>
90+
{
91+
return CreateValueObjectDocumentQuery<TValueObject>().Select(x => x.ValueObject);
92+
}
93+
94+
private IQueryable<ValueObjectDocument<TValueObject>> CreateValueObjectDocumentQuery<TValueObject>()
95+
where TValueObject : struct, IEquatable<TValueObject>
10296
{
10397
string valueObjectType = ValueObjectDocument<TValueObject>.GetDocumentType();
10498

10599
return _documentClient.CreateDocumentQuery<ValueObjectDocument<TValueObject>>(GetUri())
106-
.Where(x => x.Type == valueObjectType)
107-
.Select(x => x.ValueObject);
100+
.Where(x => x.Type == valueObjectType);
101+
}
102+
103+
private ValueObjectDocument<TValueObject> Get<TValueObject>(TValueObject valueObject)
104+
where TValueObject : struct, IEquatable<TValueObject>
105+
{
106+
return CreateValueObjectDocumentQuery<TValueObject>()
107+
.AsEnumerable()
108+
.SingleOrDefault(x => x.ValueObject.Equals(valueObject));
108109
}
109110

110111
private Uri GetUri()

0 commit comments

Comments
 (0)