Skip to content

Commit 28132ed

Browse files
Update Query database endpoint to return both Page and Database
1 parent 5ec0c95 commit 28132ed

File tree

8 files changed

+42
-25
lines changed

8 files changed

+42
-25
lines changed

Src/Notion.Client/Api/Databases/DatabasesClient.cs

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
1-
using System.Collections.Generic;
2-
using System.Linq;
3-
using System.Threading;
1+
using System.Threading;
42
using System.Threading.Tasks;
53
using static Notion.Client.ApiEndpoints;
64

75
namespace Notion.Client
86
{
9-
public class DatabasesClient : IDatabasesClient
7+
public sealed partial class DatabasesClient : IDatabasesClient
108
{
119
private readonly IRestClient _client;
1210

@@ -20,24 +18,6 @@ public async Task<Database> RetrieveAsync(string databaseId, CancellationToken c
2018
return await _client.GetAsync<Database>(DatabasesApiUrls.Retrieve(databaseId), cancellationToken: cancellationToken);
2119
}
2220

23-
public async Task<PaginatedList<Page>> QueryAsync(
24-
string databaseId,
25-
DatabasesQueryParameters databasesQueryParameters, CancellationToken cancellationToken = default)
26-
{
27-
var body = (IDatabaseQueryBodyParameters)databasesQueryParameters;
28-
var queryParameters = (IDatabaseQueryQueryParameters)databasesQueryParameters;
29-
30-
var queryParams = queryParameters.FilterProperties?
31-
.Select(x => new KeyValuePair<string, string>("filter_properties", x));
32-
33-
return await _client.PostAsync<PaginatedList<Page>>(
34-
DatabasesApiUrls.Query(databaseId),
35-
body,
36-
queryParams,
37-
cancellationToken: cancellationToken
38-
);
39-
}
40-
4121
public async Task<Database> CreateAsync(DatabasesCreateParameters databasesCreateParameters, CancellationToken cancellationToken = default)
4222
{
4323
var body = (IDatabasesCreateBodyParameters)databasesCreateParameters;

Src/Notion.Client/Api/Databases/IDatabasesClient.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public interface IDatabasesClient
2424
/// <returns>
2525
/// <see cref="PaginatedList{T}" />
2626
/// </returns>
27-
Task<PaginatedList<Page>> QueryAsync(string databaseId, DatabasesQueryParameters databasesQueryParameters, CancellationToken cancellationToken = default);
27+
Task<DatabaseQueryResponse> QueryAsync(string databaseId, DatabasesQueryParameters databasesQueryParameters, CancellationToken cancellationToken = default);
2828

2929
/// <summary>
3030
/// Creates a database as a subpage in the specified parent page, with the specified properties schema.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using System.Collections.Generic;
2+
using System.Linq;
3+
using System.Threading;
4+
using System.Threading.Tasks;
5+
6+
namespace Notion.Client
7+
{
8+
public sealed partial class DatabasesClient
9+
{
10+
public async Task<DatabaseQueryResponse> QueryAsync(
11+
string databaseId,
12+
DatabasesQueryParameters databasesQueryParameters, CancellationToken cancellationToken = default)
13+
{
14+
var body = (IDatabaseQueryBodyParameters)databasesQueryParameters;
15+
var queryParameters = (IDatabaseQueryQueryParameters)databasesQueryParameters;
16+
17+
var queryParams = queryParameters.FilterProperties?
18+
.Select(x => new KeyValuePair<string, string>("filter_properties", x));
19+
20+
return await _client.PostAsync<DatabaseQueryResponse>(
21+
ApiEndpoints.DatabasesApiUrls.Query(databaseId),
22+
body,
23+
queryParams,
24+
cancellationToken: cancellationToken
25+
);
26+
}
27+
}
28+
}

Src/Notion.Client/Api/Databases/RequestParams/DatabasesQueryParameters.cs renamed to Src/Notion.Client/Api/Databases/Query/Request/DatabasesQueryParameters.cs

File renamed without changes.

Src/Notion.Client/Api/Databases/RequestParams/IDatabaseQueryBodyParameters.cs renamed to Src/Notion.Client/Api/Databases/Query/Request/IDatabaseQueryBodyParameters.cs

File renamed without changes.

Src/Notion.Client/Api/Databases/RequestParams/IDatabaseQueryQueryParameters.cs renamed to Src/Notion.Client/Api/Databases/Query/Request/IDatabaseQueryQueryParameters.cs

File renamed without changes.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace Notion.Client
2+
{
3+
// ReSharper disable once ClassNeverInstantiated.Global
4+
public class DatabaseQueryResponse : PaginatedList<IWikiDatabase>
5+
{
6+
}
7+
}

Test/Notion.UnitTests/DatabasesClientTests.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,9 @@ public async Task QueryAsync()
6464

6565
pagesPaginatedList.Results.Should().ContainSingle();
6666

67-
foreach (var page in pagesPaginatedList.Results)
67+
foreach (var iWikiDatabase in pagesPaginatedList.Results)
6868
{
69+
var page = (Page)iWikiDatabase;
6970
page.Parent.Should().BeAssignableTo<IPageParent>();
7071
page.Object.Should().Be(ObjectType.Page);
7172
}
@@ -476,8 +477,9 @@ var jsonData
476477

477478
pagesPaginatedList.Results.Should().ContainSingle();
478479

479-
foreach (var page in pagesPaginatedList.Results)
480+
foreach (var iWikiDatabase in pagesPaginatedList.Results)
480481
{
482+
var page = (Page)iWikiDatabase;
481483
page.Parent.Should().BeAssignableTo<IPageParent>();
482484
page.Object.Should().Be(ObjectType.Page);
483485

0 commit comments

Comments
 (0)