Skip to content

Commit 20cb9f9

Browse files
Merge pull request #121 from matteobortolazzo/dev
Dev
2 parents 010ca6c + eba7edd commit 20cb9f9

11 files changed

+25
-30
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# 3.0.1 (2020-03-10)
2+
3+
## Bug Fixes
4+
* **Table Splitting**: Fix discriminator. ([#120](https://github.com/matteobortolazzo/couchdb-net/issues/120))
5+
16
# 3.0.0 (2020-03-09)
27

38
## Breaking Changes

LATEST_CHANGE.md

+2-10
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,3 @@
1-
## Breaking Changes
2-
* Update to [Flurl 3](https://github.com/tmenier/Flurl/releases/tag/Flurl.Http.3.0.0). There should be no differences for the end user, but keep in mind.
1+
## Bug Fixes
32

4-
## Features
5-
* **Table Splitting**: Ability to use the same database for different document with automatic filtering. ([#106](https://github.com/matteobortolazzo/couchdb-net/issues/106))
6-
* **Views**: Ability to get views. Thanks to [panoukos41](https://github.com/panoukos41)
7-
8-
## Improvements
9-
* **Logical Expressions Prune**: If expressions are constant booleans, they are removed automatically keeping the query valid. ([#113](https://github.com/matteobortolazzo/couchdb-net/issues/113))
10-
* **IsUpAsync**: Returns false on timeout and on not successful codes. ([#107](https://github.com/matteobortolazzo/couchdb-net/issues/107))
11-
* **FindAsync**: Faster when document is not found. ([#92](https://github.com/matteobortolazzo/couchdb-net/issues/92))
3+
* **Table Splitting**: Fix discriminator. ([#120](https://github.com/matteobortolazzo/couchdb-net/issues/120))

src/CouchDB.Driver/CouchClient.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ public async ValueTask DisposeAsync()
345345

346346
protected virtual async Task DisposeAsync(bool disposing)
347347
{
348-
if (disposing && _flurlClient != null)
348+
if (disposing)
349349
{
350350
if (_options.AuthenticationType == AuthenticationType.Cookie && _options.LogOutOnDispose)
351351
{

src/CouchDB.Driver/CouchDatabase.cs

+3-5
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@
2525
using Newtonsoft.Json;
2626
using System.Net;
2727
using CouchDB.Driver.Views;
28-
using Flurl.Http.Configuration;
29-
using Newtonsoft.Json.Serialization;
3028

3129
namespace CouchDB.Driver
3230
{
@@ -192,7 +190,7 @@ public async Task<TSource> AddAsync(TSource document, bool batch = false, Cancel
192190
request = request.SetQueryParam("batch", "ok");
193191
}
194192

195-
document.Discriminator = _discriminator;
193+
document.SplitDiscriminator = _discriminator;
196194
DocumentSaveResponse response = await request
197195
.PostJsonAsync(document, cancellationToken)
198196
.ReceiveJson<DocumentSaveResponse>()
@@ -224,7 +222,7 @@ public async Task<TSource> AddOrUpdateAsync(TSource document, bool batch = false
224222
request = request.SetQueryParam("batch", "ok");
225223
}
226224

227-
document.Discriminator = _discriminator;
225+
document.SplitDiscriminator = _discriminator;
228226
DocumentSaveResponse response = await request
229227
.PutJsonAsync(document, cancellationToken)
230228
.ReceiveJson<DocumentSaveResponse>()
@@ -271,7 +269,7 @@ public async Task<IEnumerable<TSource>> AddOrUpdateRangeAsync(IList<TSource> doc
271269

272270
foreach (TSource? document in documents)
273271
{
274-
document.Discriminator = _discriminator;
272+
document.SplitDiscriminator = _discriminator;
275273
}
276274

277275
DocumentSaveResponse[] response = await NewRequest()

src/CouchDB.Driver/Extensions/TypeExtensions.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ internal static class TypeExtensions
1212
{
1313
public static string GetName(this Type t, CouchOptions options)
1414
{
15-
var jsonObjectAttributes = t.GetCustomAttributes(typeof(JsonObjectAttribute), true);
15+
object[] jsonObjectAttributes = t.GetCustomAttributes(typeof(JsonObjectAttribute), true);
1616
JsonObjectAttribute? jsonObject = jsonObjectAttributes.Length > 0
1717
? jsonObjectAttributes[0] as JsonObjectAttribute
1818
: null;

src/CouchDB.Driver/Helpers/MethodCallExpressionBuilder.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ public static MethodCallExpression WrapInDiscriminatorFilter<TSource>(this Expre
114114
{
115115
Check.NotNull(node, nameof(node));
116116

117-
Expression<Func<TSource, bool>> filter = (d) => d.Discriminator == discriminator;
117+
Expression<Func<TSource, bool>> filter = (d) => d.SplitDiscriminator == discriminator;
118118

119119
return Expression.Call(typeof(Queryable), nameof(Queryable.Where),
120120
new[] { typeof(TSource) }, node, filter);

src/CouchDB.Driver/Types/CouchDocument.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ private Dictionary<string, CouchAttachment> AttachmentsSetter
5858
public CouchAttachmentsCollection Attachments { get; internal set; }
5959

6060
[DataMember]
61-
[JsonProperty("_discriminator", NullValueHandling = NullValueHandling.Ignore)]
62-
internal string Discriminator { get; set; }
61+
[JsonProperty("split_discriminator", NullValueHandling = NullValueHandling.Ignore)]
62+
internal string SplitDiscriminator { get; set; }
6363

6464
[OnDeserialized]
6565
internal void OnDeserializedMethod(StreamingContext context)

src/azure-pipelines.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
variables:
22
BuildConfiguration: Release
3-
PackageVersion: '3.0.0'
3+
PackageVersion: '3.0.1'
44

55
trigger:
66
branches:

tests/CouchDB.Driver.UnitTests/CouchDbContext_Tests.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,9 @@ await context.OtherRebels.AddAsync(new OtherRebel
104104
var result = await context.OtherRebels.ToListAsync();
105105
Assert.NotEmpty(result);
106106
Assert.Equal("Luke", result[0].Name);
107-
Assert.Equal(@"{""_conflicts"":[],""name"":""Leia"",""age"":0,""_discriminator"":""SimpleRebel""}", httpTest.CallLog[0].RequestBody);
108-
Assert.Equal(@"{""_conflicts"":[],""rebel_bith_date"":""0001-01-01T00:00:00"",""name"":""Luke"",""age"":0,""isJedi"":false,""species"":0,""guid"":""00000000-0000-0000-0000-000000000000"",""_discriminator"":""OtherRebel""}", httpTest.CallLog[1].RequestBody);
109-
Assert.Equal(@"{""selector"":{""_discriminator"":""OtherRebel""}}", httpTest.CallLog[2].RequestBody);
107+
Assert.Equal(@"{""_conflicts"":[],""name"":""Leia"",""age"":0,""split_discriminator"":""SimpleRebel""}", httpTest.CallLog[0].RequestBody);
108+
Assert.Equal(@"{""_conflicts"":[],""rebel_bith_date"":""0001-01-01T00:00:00"",""name"":""Luke"",""age"":0,""isJedi"":false,""species"":0,""guid"":""00000000-0000-0000-0000-000000000000"",""split_discriminator"":""OtherRebel""}", httpTest.CallLog[1].RequestBody);
109+
Assert.Equal(@"{""selector"":{""split_discriminator"":""OtherRebel""}}", httpTest.CallLog[2].RequestBody);
110110
}
111111
}
112112
}

tests/CouchDB.Driver.UnitTests/Database_Tests.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ public async Task Create_Discriminator()
123123

124124
var r = new Rebel { Name = "Luke" };
125125
var newR = await rebels.AddAsync(r);
126-
Assert.Equal("myRebels", newR.Discriminator);
126+
Assert.Equal("myRebels", newR.SplitDiscriminator);
127127
httpTest
128128
.ShouldHaveCalled("http://localhost/rebels")
129129
.WithVerb(HttpMethod.Post);
@@ -138,7 +138,7 @@ public async Task CreateOrUpdate_Discriminator()
138138

139139
var r = new Rebel { Name = "Luke", Id = "1" };
140140
var newR = await rebels.AddOrUpdateAsync(r);
141-
Assert.Equal("myRebels", newR.Discriminator);
141+
Assert.Equal("myRebels", newR.SplitDiscriminator);
142142
httpTest
143143
.ShouldHaveCalled("http://localhost/rebels/1")
144144
.WithVerb(HttpMethod.Put);

tests/CouchDB.Driver.UnitTests/Find/Find_Discriminator.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,17 @@ public void Discriminator_WithoutFilter()
2222
{
2323
var json1 = _rebels.ToString();
2424
var json2 = _simpleRebels.ToString();
25-
Assert.Equal(@"{""selector"":{""_discriminator"":""Rebel""}}", json1);
26-
Assert.Equal(@"{""selector"":{""_discriminator"":""SimpleRebel""}}", json2);
25+
Assert.Equal(@"{""selector"":{""split_discriminator"":""Rebel""}}", json1);
26+
Assert.Equal(@"{""selector"":{""split_discriminator"":""SimpleRebel""}}", json2);
2727
}
2828

2929
[Fact]
3030
public void Discriminator_WithFilter()
3131
{
3232
var json1 = _rebels.Where(c => c.Age == 19).ToString();
3333
var json2 = _simpleRebels.Where(c => c.Age == 19).ToString();
34-
Assert.Equal(@"{""selector"":{""$and"":[{""age"":19},{""_discriminator"":""Rebel""}]}}", json1);
35-
Assert.Equal(@"{""selector"":{""$and"":[{""age"":19},{""_discriminator"":""SimpleRebel""}]}}", json2);
34+
Assert.Equal(@"{""selector"":{""$and"":[{""age"":19},{""split_discriminator"":""Rebel""}]}}", json1);
35+
Assert.Equal(@"{""selector"":{""$and"":[{""age"":19},{""split_discriminator"":""SimpleRebel""}]}}", json2);
3636
}
3737
}
3838
}

0 commit comments

Comments
 (0)