1+ using System ;
2+ using System . Collections . Generic ;
3+ using System . Threading . Tasks ;
4+
5+ namespace Notion . Client
6+ {
7+ public interface IDatabasesClient
8+ {
9+ Task < Database > RetrieveAsync ( string databaseId ) ;
10+ Task < PaginatedList < Page > > QueryAsync ( string databaseId , DatabasesQueryParameters databasesQueryParameters ) ;
11+ Task < PaginatedList < Database > > ListAsync ( DatabasesListParameters databasesListParameters = null ) ;
12+ }
13+
14+ public class DatabasesClient : IDatabasesClient
15+ {
16+ private readonly IRestClient _client ;
17+
18+ public DatabasesClient ( IRestClient client )
19+ {
20+ _client = client ;
21+ }
22+
23+ public async Task < Database > RetrieveAsync ( string databaseId )
24+ {
25+ try
26+ {
27+ return await _client . GetAsync < Database > ( $ "databases/{ databaseId } ") ;
28+ }
29+ catch ( Exception e )
30+ {
31+ // Todo: Throw Custom Exception
32+ return null ;
33+ }
34+ }
35+
36+ public async Task < PaginatedList < Database > > ListAsync ( DatabasesListParameters databasesListParameters = null )
37+ {
38+ try
39+ {
40+ var databasesListQueryParmaters = ( IDatabasesListQueryParmaters ) databasesListParameters ;
41+ var queryParams = new Dictionary < string , string > ( )
42+ {
43+ { "start_cursor" , databasesListQueryParmaters ? . StartCursor } ,
44+ { "page_size" , databasesListQueryParmaters ? . PageSize }
45+ } ;
46+
47+ return await _client . GetAsync < PaginatedList < Database > > ( "databases" , queryParams ) ;
48+ }
49+ catch ( Exception e )
50+ {
51+ // Todo: Throw Custom Exception
52+ return null ;
53+ }
54+ }
55+
56+ public async Task < PaginatedList < Page > > QueryAsync ( string databaseId , DatabasesQueryParameters databasesQueryParameters )
57+ {
58+ try
59+ {
60+ var body = ( IDatabaseQueryBodyParameters ) databasesQueryParameters ;
61+ return await _client . PostAsync < PaginatedList < Page > > ( $ "databases/{ databaseId } /query", body ) ;
62+ }
63+ catch ( Exception e )
64+ {
65+ return null ;
66+ }
67+ }
68+ }
69+ }
0 commit comments