forked from elastic/elasticsearch-net
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDeleteExtensions.cs
133 lines (126 loc) · 7.08 KB
/
DeleteExtensions.cs
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
using System;
using System.Threading.Tasks;
namespace Nest
{
/// <summary>
/// Implements extensions to Delete that allow for easier by id deletes.
/// </summary>
public static class DeleteExtensions
{
/// <summary>
///The delete API allows to delete a typed JSON document from a specific index based on its id.
/// <para> </para>>http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-delete.html
/// </summary>
/// <typeparam name="T">The type used to infer the default index and typename</typeparam>
/// <param name="client"></param>
/// <param name="index">The name of the index as string</param>
/// <param name="type">The type name of the document you wish to delete</param>
/// <param name="id">The id as string of the document you want to delete</param>
/// <param name="selector">An optional descriptor to further describe the delete operation</param>
public static IDeleteResponse Delete(this IElasticClient client, string index, string type, string id,
Func<DeleteDescriptor<object>, DeleteDescriptor<object>> selector = null)
{
selector = selector ?? (s => s);
return client.Delete<object>(s => selector(s.Index(index).Type(type).Id(id)));
}
/// <summary>
///The delete API allows to delete a typed JSON document from a specific index based on its id.
/// <para> </para>>http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-delete.html
/// </summary>
/// <typeparam name="T">The type used to infer the default index and typename</typeparam>
/// <param name="client"></param>
/// <param name="id">The id as int of the document you want to delete</param>
/// <param name="selector">An optional descriptor to further describe the delete operation</param>
public static IDeleteResponse Delete<T>(this IElasticClient client, long id, Func<DeleteDescriptor<T>, DeleteDescriptor<T>> selector = null) where T : class
{
selector = selector ?? (s => s);
return client.Delete<T>(s => selector(s.Id(id)));
}
/// <summary>
///The delete API allows to delete a typed JSON document from a specific index based on its id.
/// <para> </para>>http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-delete.html
/// </summary>
/// <typeparam name="T">The type used to infer the default index and typename</typeparam>
/// <param name="client"></param>
/// <param name="id">The id as string of the document you want to delete</param>
/// <param name="selector">An optional descriptor to further describe the delete operation</param>
public static IDeleteResponse Delete<T>(this IElasticClient client, string id, Func<DeleteDescriptor<T>, DeleteDescriptor<T>> selector = null) where T : class
{
selector = selector ?? (s => s);
return client.Delete<T>(s => selector(s.Id(id)));
}
/// <summary>
///The delete API allows to delete a typed JSON document from a specific index based on its id.
/// <para> </para>>http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-delete.html
/// </summary>
/// <typeparam name="T">The type used to infer the default index and typename</typeparam>
/// <param name="client"></param>
/// <param name="id">The id as int of the document you want to delete</param>
/// <param name="selector">An optional descriptor to further describe the delete operation</param>
public static Task<IDeleteResponse> DeleteAsync<T>(this IElasticClient client, long id, Func<DeleteDescriptor<T>, DeleteDescriptor<T>> selector = null) where T : class
{
selector = selector ?? (s => s);
return client.DeleteAsync<T>(s => selector(s.Id(id)));
}
/// <summary>
///The delete API allows to delete a typed JSON document from a specific index based on its id.
/// <para> </para>>http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-delete.html
/// </summary>
/// <typeparam name="T">The type used to infer the default index and typename</typeparam>
/// <param name="client"></param>
/// <param name="index">The name of the index as string</param>
/// <param name="type">The type name of the document you wish to delete</param>
/// <param name="id">The id as string of the document you want to delete</param>
/// <param name="selector">An optional descriptor to further describe the delete operation</param>
public static Task<IDeleteResponse> DeleteAsync(this IElasticClient client,
string index, string type, string id,
Func<DeleteDescriptor<object>, DeleteDescriptor<object>> selector = null)
{
selector = selector ?? (s => s);
return client.DeleteAsync<object>(s => selector(s.Index(index).Type(type).Id(id)));
}
/// <summary>
///The delete API allows to delete a typed JSON document from a specific index based on its id.
/// <para> </para>>http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-delete.html
/// </summary>
/// <typeparam name="T">The type used to infer the default index and typename</typeparam>
/// <param name="client"></param>
/// <param name="id">The id as string of the document you want to delete</param>
/// <param name="selector">An optional descriptor to further describe the delete operation</param>
public static Task<IDeleteResponse> DeleteAsync<T>(this IElasticClient client, string id, Func<DeleteDescriptor<T>, DeleteDescriptor<T>> selector = null) where T : class
{
selector = selector ?? (s => s);
return client.DeleteAsync<T>(s => selector(s.Id(id)));
}
/// <summary>
///The delete API allows to delete a typed JSON document from a specific index based on its id.
/// <para> </para>>http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-delete.html
/// </summary>
/// <typeparam name="T">The type used to infer the default index and typename</typeparam>
/// <param name="client"></param>
/// <param name="obj">The object used to infer the id</param>
/// <param name="selector">An optional descriptor to further describe the delete operation</param>
public static IDeleteResponse Delete<T>(this IElasticClient client, T obj, Func<DeleteDescriptor<T>, DeleteDescriptor<T>> selector = null) where T : class
{
obj.ThrowIfNull("obj");
var id = client.Infer.Id(obj);
selector = selector ?? (s => s);
return client.Delete<T>(s => selector(s.Id(id)));
}
/// <summary>
///The delete API allows to delete a typed JSON document from a specific index based on its id.
/// <para> </para>>http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-delete.html
/// </summary>
/// <typeparam name="T">The type used to infer the default index and typename</typeparam>
/// <param name="client"></param>
/// <param name="obj">The object used to infer the id</param>
/// <param name="selector">An optional descriptor to further describe the delete operation</param>
public static Task<IDeleteResponse> DeleteAsync<T>(this IElasticClient client, T obj, Func<DeleteDescriptor<T>, DeleteDescriptor<T>> selector = null) where T : class
{
obj.ThrowIfNull("obj");
var id = client.Infer.Id(obj);
selector = selector ?? (s => s);
return client.DeleteAsync<T>(s => selector(s.Id(id)));
}
}
}