Skip to content

Commit e10651d

Browse files
committed
Search nodes
1 parent 5acbc97 commit e10651d

File tree

5 files changed

+58
-3
lines changed

5 files changed

+58
-3
lines changed

cloudcms-csharp-driver.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<RootNamespace>CloudCMS</RootNamespace>
77

88
<PackageId>cloudcms</PackageId>
9-
<PackageVersion>1.1.0</PackageVersion>
9+
<PackageVersion>1.1.1</PackageVersion>
1010
<Title>CloudCMS Driver</Title>
1111
<Description>C# .NET driver for CloudCMS</Description>
1212
<Summary>C# .NET driver for CloudCMS</Summary>

src/branches/Branch.cs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,50 @@ public async Task<List<IBaseNode>> QueryNodesAsync(JObject query, JObject pagina
8080
return nodes;
8181
}
8282

83+
public async Task<List<IBaseNode>> SearchNodesAsync(string text, JObject pagination = null)
84+
{
85+
string uri = URI + "/nodes/search";
86+
87+
IDictionary<string, string> queryParams = new Dictionary<string, string>();
88+
if (pagination != null)
89+
{
90+
queryParams = pagination.ToObject<Dictionary<string, string>>();
91+
}
92+
93+
queryParams.Add("text", text);
94+
95+
JObject response = await Driver.GetAsync(uri, queryParams);
96+
97+
return NodeUtil.NodeList(response, this);
98+
}
99+
100+
public async Task<List<IBaseNode>> SearchNodesAsync(JObject search, JObject pagination = null)
101+
{
102+
string uri = URI + "/nodes/search";
103+
104+
IDictionary<string, string> queryParams = new Dictionary<string, string>();
105+
if (pagination != null)
106+
{
107+
queryParams = pagination.ToObject<Dictionary<string, string>>();
108+
}
109+
110+
JObject payload = null;
111+
if (search.ContainsKey("search"))
112+
{
113+
payload = search;
114+
}
115+
else
116+
{
117+
payload = new JObject();
118+
payload.Add("search", search);
119+
}
120+
121+
HttpContent content = new StringContent(payload.ToString());
122+
JObject response = await Driver.PostAsync(uri, queryParams, content);
123+
124+
return NodeUtil.NodeList(response, this);
125+
}
126+
83127
public async Task<List<IBaseNode>> FindNodesAsync(JObject config, JObject pagination = null)
84128
{
85129
string uri = this.URI + "/nodes/find";

src/branches/IBranch.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ public interface IBranch : IRepositoryDocument
1212
Task<IBaseNode> ReadNodeAsync(string nodeId);
1313

1414
Task<List<IBaseNode>> QueryNodesAsync(JObject query, JObject pagination = null);
15+
16+
Task<List<IBaseNode>> SearchNodesAsync(string text, JObject pagination = null);
17+
Task<List<IBaseNode>> SearchNodesAsync(JObject search, JObject pagination = null);
1518

1619
Task<List<IBaseNode>> FindNodesAsync(JObject config, JObject pagination = null);
1720

tests/AbstractWithRepositoryTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ private async Task SetupAsync()
1919
{
2020
JObject obj = new JObject();
2121
obj["title"] = "C# Driver Test Repository";
22-
Repository = await Platform.CreateRepositoryAsync();
22+
Repository = await Platform.CreateRepositoryAsync(obj);
2323
}
2424

2525

tests/NodeTest.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Threading;
33
using System.Linq;
44
using System.Collections.Generic;
5+
using System.Reflection;
56
using System.Threading.Tasks;
67
using Newtonsoft.Json.Linq;
78
using CloudCMS;
@@ -66,7 +67,7 @@ public async void TestNodeCrud()
6667
}
6768

6869
[Fact]
69-
public async void TestNodeQueryFind()
70+
public async void TestNodeQuerySearchFind()
7071
{
7172
IBranch branch = await Fixture.Repository.ReadBranchAsync("master");
7273

@@ -114,6 +115,13 @@ public async void TestNodeQueryFind()
114115
Assert.Contains(node1.Id, findNodesIds);
115116
Assert.Contains(node2.Id, findNodesIds);
116117

118+
// search
119+
List<IBaseNode> searchNodes = await branch.SearchNodesAsync("burger");
120+
var searchNodesIds = searchNodes.Select(node => node.Id);
121+
Assert.Equal(2, searchNodes.Count);
122+
Assert.Contains(node1.Id, searchNodesIds);
123+
Assert.Contains(node2.Id, searchNodesIds);
124+
117125
await node1.DeleteAsync();
118126
await node2.DeleteAsync();
119127
await node3.DeleteAsync();

0 commit comments

Comments
 (0)