11from __future__ import annotations
22
3+ from datetime import datetime
34from typing import TYPE_CHECKING
45
56from meilisearch_python_sdk ._utils import get_async_client , get_client
@@ -28,9 +29,38 @@ async def async_get_batch(
2829 return BatchResult (** response .json ())
2930
3031
31- async def async_get_batches (client : HttpxAsyncClient | AsyncClient ) -> BatchStatus :
32+ async def async_get_batches (
33+ client : HttpxAsyncClient | AsyncClient ,
34+ * ,
35+ uids : list [int ] | None = None ,
36+ batch_uids : list [int ] | None = None ,
37+ index_uids : list [int ] | None = None ,
38+ statuses : list [str ] | None = None ,
39+ types : list [str ] | None = None ,
40+ limit : int = 20 ,
41+ from_ : str | None = None ,
42+ reverse : bool = False ,
43+ before_enqueued_at : datetime | None = None ,
44+ after_enqueued_at : datetime | None = None ,
45+ before_started_at : datetime | None = None ,
46+ after_finished_at : datetime | None = None ,
47+ ) -> BatchStatus :
3248 client_ = get_async_client (client )
33- response = await client_ .get ("batches" )
49+ params = _build_parameters (
50+ uids = uids ,
51+ batch_uids = batch_uids ,
52+ index_uids = index_uids ,
53+ statuses = statuses ,
54+ types = types ,
55+ limit = limit ,
56+ from_ = from_ ,
57+ reverse = reverse ,
58+ before_enqueued_at = before_enqueued_at ,
59+ after_enqueued_at = after_enqueued_at ,
60+ before_started_at = before_started_at ,
61+ after_finished_at = after_finished_at ,
62+ )
63+ response = await client_ .get ("batches" , params = params )
3464
3565 return BatchStatus (** response .json ())
3666
@@ -45,8 +75,92 @@ def get_batch(client: HttpxClient | Client, batch_uid: int) -> BatchResult | Non
4575 return BatchResult (** response .json ())
4676
4777
48- def get_batches (client : HttpxClient | Client ) -> BatchStatus :
78+ def get_batches (
79+ client : HttpxClient | Client ,
80+ * ,
81+ uids : list [int ] | None = None ,
82+ batch_uids : list [int ] | None = None ,
83+ index_uids : list [int ] | None = None ,
84+ statuses : list [str ] | None = None ,
85+ types : list [str ] | None = None ,
86+ limit : int = 20 ,
87+ from_ : str | None = None ,
88+ reverse : bool = False ,
89+ before_enqueued_at : datetime | None = None ,
90+ after_enqueued_at : datetime | None = None ,
91+ before_started_at : datetime | None = None ,
92+ after_finished_at : datetime | None = None ,
93+ ) -> BatchStatus :
4994 client_ = get_client (client )
50- response = client_ .get ("batches" )
95+ params = _build_parameters (
96+ uids = uids ,
97+ batch_uids = batch_uids ,
98+ index_uids = index_uids ,
99+ statuses = statuses ,
100+ types = types ,
101+ limit = limit ,
102+ from_ = from_ ,
103+ reverse = reverse ,
104+ before_enqueued_at = before_enqueued_at ,
105+ after_enqueued_at = after_enqueued_at ,
106+ before_started_at = before_started_at ,
107+ after_finished_at = after_finished_at ,
108+ )
109+
110+ response = client_ .get ("batches" , params = params )
51111
52112 return BatchStatus (** response .json ())
113+
114+
115+ def _build_parameters (
116+ * ,
117+ uids : list [int ] | None = None ,
118+ batch_uids : list [int ] | None = None ,
119+ index_uids : list [int ] | None = None ,
120+ statuses : list [str ] | None = None ,
121+ types : list [str ] | None = None ,
122+ limit : int = 20 ,
123+ from_ : str | None = None ,
124+ reverse : bool = False ,
125+ before_enqueued_at : datetime | None = None ,
126+ after_enqueued_at : datetime | None = None ,
127+ before_started_at : datetime | None = None ,
128+ after_finished_at : datetime | None = None ,
129+ ) -> dict [str , str ]:
130+ params = {}
131+
132+ if uids :
133+ params ["uids" ] = "," .join ([str (uid ) for uid in uids ])
134+
135+ if batch_uids : # pragma: no cover
136+ params ["batchUids" ] = "," .join ([str (uid ) for uid in batch_uids ])
137+
138+ if index_uids : # pragma: no cover
139+ params ["indexUids" ] = "," .join ([str (uid ) for uid in index_uids ])
140+
141+ if statuses : # pragma: no cover
142+ params ["statuses" ] = "," .join (statuses )
143+
144+ if types : # pragma: no cover
145+ params ["types" ] = "," .join (types )
146+
147+ params ["limit" ] = str (limit )
148+
149+ if from_ : # pragma: no cover
150+ params ["from" ] = from_
151+
152+ params ["reverse" ] = "true" if reverse else "false"
153+
154+ if before_enqueued_at : # pragma: no cover
155+ params ["beforeEnqueuedAt" ] = before_enqueued_at .isoformat ()
156+
157+ if after_enqueued_at : # pragma: no cover
158+ params ["afterEnqueuedAt" ] = after_enqueued_at .isoformat ()
159+
160+ if before_started_at : # pragma: no cover
161+ params ["beforeStartedAt" ] = before_started_at .isoformat ()
162+
163+ if after_finished_at : # pragma: no cover
164+ params ["afterFinishedAt" ] = after_finished_at .isoformat ()
165+
166+ return params
0 commit comments