Skip to content

Commit 9f1e184

Browse files
algolia-botshortcutsmillotp
committed
fix(specs): ingestion push task payload [skip-bc] (generated)
algolia/api-clients-automation#3607 Co-authored-by: algolia-bot <[email protected]> Co-authored-by: Clément Vannicatte <[email protected]> Co-authored-by: Pierre Millot <[email protected]>
1 parent 2ea29a2 commit 9f1e184

File tree

4 files changed

+53
-16
lines changed

4 files changed

+53
-16
lines changed

src/main/scala/algoliasearch/api/IngestionClient.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import algoliasearch.ingestion.AuthenticationSortKeys._
1212
import algoliasearch.ingestion.AuthenticationType._
1313
import algoliasearch.ingestion.AuthenticationUpdate
1414
import algoliasearch.ingestion.AuthenticationUpdateResponse
15-
import algoliasearch.ingestion.BatchWriteParams
1615
import algoliasearch.ingestion.DeleteResponse
1716
import algoliasearch.ingestion.Destination
1817
import algoliasearch.ingestion.DestinationCreate
@@ -38,6 +37,7 @@ import algoliasearch.ingestion.ListTasksResponseV1
3837
import algoliasearch.ingestion.ListTransformationsResponse
3938
import algoliasearch.ingestion.OrderKeys._
4039
import algoliasearch.ingestion.PlatformWithNone
40+
import algoliasearch.ingestion.PushTaskPayload
4141
import algoliasearch.ingestion.Run
4242
import algoliasearch.ingestion.RunListResponse
4343
import algoliasearch.ingestion.RunResponse
@@ -1217,20 +1217,20 @@ class IngestionClient(
12171217
*
12181218
* @param taskID
12191219
* Unique identifier of a task.
1220-
* @param batchWriteParams
1220+
* @param pushTaskPayload
12211221
* Request body of a Search API `batch` request that will be pushed in the Connectors pipeline.
12221222
*/
1223-
def pushTask(taskID: String, batchWriteParams: BatchWriteParams, requestOptions: Option[RequestOptions] = None)(
1224-
implicit ec: ExecutionContext
1223+
def pushTask(taskID: String, pushTaskPayload: PushTaskPayload, requestOptions: Option[RequestOptions] = None)(implicit
1224+
ec: ExecutionContext
12251225
): Future[RunResponse] = Future {
12261226
requireNotNull(taskID, "Parameter `taskID` is required when calling `pushTask`.")
1227-
requireNotNull(batchWriteParams, "Parameter `batchWriteParams` is required when calling `pushTask`.")
1227+
requireNotNull(pushTaskPayload, "Parameter `pushTaskPayload` is required when calling `pushTask`.")
12281228

12291229
val request = HttpRequest
12301230
.builder()
12311231
.withMethod("POST")
12321232
.withPath(s"/2/tasks/${escape(taskID)}/push")
1233-
.withBody(batchWriteParams)
1233+
.withBody(pushTaskPayload)
12341234
.build()
12351235
execute[RunResponse](request, requestOptions)
12361236
}

src/main/scala/algoliasearch/ingestion/JsonSupport.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ object JsonSupport {
7575
TriggerSerializer
7676

7777
private def classMapSerializers: Seq[Serializer[_]] = Seq[Serializer[_]]() :+
78-
new ErrorBaseSerializer()
78+
new ErrorBaseSerializer() :+
79+
new PushTaskRecordsSerializer()
7980

8081
implicit val format: Formats = DefaultFormats ++ enumSerializers ++ oneOfsSerializers ++ classMapSerializers
8182
implicit val serialization: org.json4s.Serialization = org.json4s.native.Serialization

src/main/scala/algoliasearch/ingestion/BatchRequest.scala renamed to src/main/scala/algoliasearch/ingestion/PushTaskPayload.scala

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,9 @@ package algoliasearch.ingestion
2525

2626
import algoliasearch.ingestion.Action._
2727

28-
/** BatchRequest
29-
*
30-
* @param body
31-
* Operation arguments (varies with specified `action`).
28+
/** PushTaskPayload
3229
*/
33-
case class BatchRequest(
30+
case class PushTaskPayload(
3431
action: Action,
35-
body: Any
32+
records: Seq[PushTaskRecords]
3633
)

src/main/scala/algoliasearch/ingestion/BatchWriteParams.scala renamed to src/main/scala/algoliasearch/ingestion/PushTaskRecords.scala

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,47 @@
2323
*/
2424
package algoliasearch.ingestion
2525

26-
/** Batch parameters.
26+
import org.json4s.MonadicJValue.jvalueToMonadic
27+
import org.json4s.{Extraction, Formats, JField, JObject, JValue, Serializer, TypeInfo}
28+
29+
/** PushTaskRecords
30+
*
31+
* @param objectID
32+
* Unique record identifier.
2733
*/
28-
case class BatchWriteParams(
29-
requests: Seq[BatchRequest]
34+
case class PushTaskRecords(
35+
objectID: String,
36+
additionalProperties: Option[List[JField]] = None
3037
)
38+
39+
class PushTaskRecordsSerializer extends Serializer[PushTaskRecords] {
40+
41+
override def deserialize(implicit format: Formats): PartialFunction[(TypeInfo, JValue), PushTaskRecords] = {
42+
case (TypeInfo(clazz, _), json) if clazz == classOf[PushTaskRecords] =>
43+
json match {
44+
case jobject: JObject =>
45+
val formats = format - this
46+
val mf = manifest[PushTaskRecords]
47+
val obj = Extraction.extract[PushTaskRecords](jobject)(formats, mf)
48+
49+
val fields = Set("objectID")
50+
val additionalProperties = jobject removeField {
51+
case (name, _) if fields.contains(name) => true
52+
case _ => false
53+
}
54+
additionalProperties.values match {
55+
case JObject(fieldsList) => obj copy (additionalProperties = Some(fieldsList))
56+
case _ => obj
57+
}
58+
case _ => throw new IllegalArgumentException(s"Can't deserialize $json as PushTaskRecords")
59+
}
60+
}
61+
62+
override def serialize(implicit format: Formats): PartialFunction[Any, JValue] = { case value: PushTaskRecords =>
63+
val formats = format - this // remove current serializer from formats to avoid stackoverflow
64+
value.additionalProperties match {
65+
case Some(fields) => Extraction.decompose(value.copy(additionalProperties = None))(formats) merge JObject(fields)
66+
case None => Extraction.decompose(value)(formats)
67+
}
68+
}
69+
}

0 commit comments

Comments
 (0)