-
-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathIRoutineSource.cs
More file actions
84 lines (71 loc) · 2.41 KB
/
Copy pathIRoutineSource.cs
File metadata and controls
84 lines (71 loc) · 2.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
namespace NpgsqlRest;
/// <summary>
/// Base interface for endpoint sources. Provides the minimal contract needed
/// to yield routines into the NpgsqlRest pipeline.
/// </summary>
public interface IEndpointSource
{
/// <summary>
/// Comments mode for the current source.
/// </summary>
CommentsMode? CommentsMode { get; set; }
/// <summary>
/// When true, composite type columns in the response are serialized as nested JSON objects.
/// For example, a column "req" of type "my_request(id int, name text)" becomes {"req": {"id": 1, "name": "test"}}
/// instead of the default flat structure {"id": 1, "name": "test"}.
/// Default is false.
/// </summary>
bool NestedJsonForCompositeTypes { get; set; }
/// <summary>
/// Yield all routines with the formatters from the current source.
/// </summary>
/// <param name="serviceProvider">Service provider</param>
/// <param name="retryStrategy"></param>
/// <returns></returns>
IEnumerable<(Routine, IRoutineSourceParameterFormatter)> Read(IServiceProvider? serviceProvider, RetryStrategy? retryStrategy);
}
/// <summary>
/// Extended endpoint source interface for database catalog-based sources (functions, procedures, tables, views).
/// Adds query filtering properties for schema/name patterns.
/// </summary>
public interface IRoutineSource : IEndpointSource
{
/// <summary>
/// SQL Query that returns data source.
/// When it doesn't contain any blanks, it is interpreted as a function name.
/// Set to NULL to use default source query.
/// </summary>
string? Query { get; set; }
/// <summary>
/// Query parameter
/// </summary>
string? SchemaSimilarTo { get; set; }
/// <summary>
/// Query parameter
/// </summary>
string? SchemaNotSimilarTo { get; set; }
/// <summary>
/// Query parameter
/// </summary>
string[]? IncludeSchemas { get; set; }
/// <summary>
/// Query parameter
/// </summary>
string[]? ExcludeSchemas { get; set; }
/// <summary>
/// Query parameter
/// </summary>
string? NameSimilarTo { get; set; }
/// <summary>
/// Query parameter
/// </summary>
string? NameNotSimilarTo { get; set; }
/// <summary>
/// Query parameter
/// </summary>
string[]? IncludeNames { get; set; }
/// <summary>
/// Query parameter
/// </summary>
string[]? ExcludeNames { get; set; }
}