/
BulkDelete.cs
99 lines (77 loc) · 3.33 KB
/
BulkDelete.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
/* SPDX-License-Identifier: Apache-2.0
*
* The OpenSearch Contributors require contributions made to
* this file be licensed under the Apache-2.0 license or a
* compatible open source license.
*/
/*
* Modifications Copyright OpenSearch Contributors. See
* GitHub history for details.
*
* Licensed to Elasticsearch B.V. under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch B.V. licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
using System;
using System.Runtime.Serialization;
using OpenSearch.Net.Utf8Json;
namespace OpenSearch.Client
{
[InterfaceDataContract]
public interface IBulkDeleteOperation<T> : IBulkOperation
where T : class
{
T Document { get; set; }
[DataMember(Name = "if_seq_no")]
long? IfSequenceNumber { get; set; }
[DataMember(Name = "if_primary_term")]
long? IfPrimaryTerm { get; set; }
}
[DataContract]
public class BulkDeleteOperation<T> : BulkOperationBase, IBulkDeleteOperation<T>
where T : class
{
public BulkDeleteOperation(T document) => Document = document;
public BulkDeleteOperation(Id id) => Id = id;
public T Document { get; set; }
public long? IfSequenceNumber { get; set; }
public long? IfPrimaryTerm { get; set; }
protected override Type ClrType => typeof(T);
protected override string Operation => "delete";
protected override object GetBody() => null;
protected override Id GetIdForOperation(Inferrer inferrer) => Id ?? new Id(Document);
protected override Routing GetRoutingForOperation(Inferrer inferrer) => Routing ?? new Routing(Document);
}
[DataContract]
public class BulkDeleteDescriptor<T> : BulkOperationDescriptorBase<BulkDeleteDescriptor<T>, IBulkDeleteOperation<T>>, IBulkDeleteOperation<T>
where T : class
{
protected override Type BulkOperationClrType => typeof(T);
protected override string BulkOperationType => "delete";
long? IBulkDeleteOperation<T>.IfSequenceNumber { get; set; }
long? IBulkDeleteOperation<T>.IfPrimaryTerm { get; set; }
T IBulkDeleteOperation<T>.Document { get; set; }
protected override object GetBulkOperationBody() => null;
protected override Id GetIdForOperation(Inferrer inferrer) => Self.Id ?? new Id(Self.Document);
protected override Routing GetRoutingForOperation(Inferrer inferrer) => Self.Routing ?? new Routing(Self.Document);
/// <summary>
/// The object to infer the id off, (if id is not passed using Id())
/// </summary>
public BulkDeleteDescriptor<T> Document(T @object) => Assign(@object, (a, v) => a.Document = v);
public BulkDeleteDescriptor<T> IfSequenceNumber(long? sequenceNumber) => Assign(sequenceNumber, (a, v) => a.IfSequenceNumber = v);
public BulkDeleteDescriptor<T> IfPrimaryTerm(long? primaryTerm) => Assign(primaryTerm, (a, v) => a.IfPrimaryTerm = v);
}
}