@@ -161,7 +161,139 @@ export const DataEngineCountOptionsSchema = z.object({
161161} ) . describe ( 'Options for DataEngine.count operations' ) ;
162162
163163// ==========================================================================
164- // 8. Type Exports
164+ // 8. Definition (Contract)
165+ // ==========================================================================
166+
167+ export const DataEngineContractSchema = z . object ( {
168+ find : z . function ( )
169+ . args ( z . string ( ) , DataEngineQueryOptionsSchema . optional ( ) )
170+ . returns ( z . promise ( z . array ( z . any ( ) ) ) ) ,
171+
172+ findOne : z . function ( )
173+ . args ( z . string ( ) , DataEngineQueryOptionsSchema . optional ( ) )
174+ . returns ( z . promise ( z . any ( ) ) ) ,
175+
176+ insert : z . function ( )
177+ . args ( z . string ( ) , z . union ( [ z . record ( z . any ( ) ) , z . array ( z . record ( z . any ( ) ) ) ] ) , DataEngineInsertOptionsSchema . optional ( ) )
178+ . returns ( z . promise ( z . any ( ) ) ) ,
179+
180+ update : z . function ( )
181+ . args ( z . string ( ) , z . record ( z . any ( ) ) , DataEngineUpdateOptionsSchema . optional ( ) )
182+ . returns ( z . promise ( z . any ( ) ) ) ,
183+
184+ delete : z . function ( )
185+ . args ( z . string ( ) , DataEngineDeleteOptionsSchema . optional ( ) )
186+ . returns ( z . promise ( z . any ( ) ) ) ,
187+
188+ count : z . function ( )
189+ . args ( z . string ( ) , DataEngineCountOptionsSchema . optional ( ) )
190+ . returns ( z . promise ( z . number ( ) ) ) ,
191+
192+ aggregate : z . function ( )
193+ . args ( z . string ( ) , DataEngineAggregateOptionsSchema )
194+ . returns ( z . promise ( z . array ( z . any ( ) ) ) )
195+ } ) . describe ( 'Standard Data Engine Contract' ) ;
196+
197+ // ==========================================================================
198+ // 9. Virtualization & RPC Protocol
199+ // ==========================================================================
200+
201+ /**
202+ * Data Engine RPC Request (Virtual ObjectQL)
203+ *
204+ * This schema defines the serialized format for executing Data Engine operations
205+ * via HTTP, Message Queue, or Plugin boundaries.
206+ *
207+ * It enables "Virtual Data Engines" where the implementation resides in a
208+ * separate microservice or plugin.
209+ */
210+
211+ export const DataEngineFindRequestSchema = z . object ( {
212+ method : z . literal ( 'find' ) ,
213+ object : z . string ( ) ,
214+ query : DataEngineQueryOptionsSchema . optional ( )
215+ } ) ;
216+
217+ export const DataEngineFindOneRequestSchema = z . object ( {
218+ method : z . literal ( 'findOne' ) ,
219+ object : z . string ( ) ,
220+ query : DataEngineQueryOptionsSchema . optional ( )
221+ } ) ;
222+
223+ export const DataEngineInsertRequestSchema = z . object ( {
224+ method : z . literal ( 'insert' ) ,
225+ object : z . string ( ) ,
226+ data : z . union ( [ z . record ( z . any ( ) ) , z . array ( z . record ( z . any ( ) ) ) ] ) ,
227+ options : DataEngineInsertOptionsSchema . optional ( )
228+ } ) ;
229+
230+ export const DataEngineUpdateRequestSchema = z . object ( {
231+ method : z . literal ( 'update' ) ,
232+ object : z . string ( ) ,
233+ data : z . record ( z . any ( ) ) ,
234+ id : z . any ( ) . optional ( ) . describe ( 'ID for single update, or use filter in options' ) ,
235+ options : DataEngineUpdateOptionsSchema . optional ( )
236+ } ) ;
237+
238+ export const DataEngineDeleteRequestSchema = z . object ( {
239+ method : z . literal ( 'delete' ) ,
240+ object : z . string ( ) ,
241+ id : z . any ( ) . optional ( ) . describe ( 'ID for single delete, or use filter in options' ) ,
242+ options : DataEngineDeleteOptionsSchema . optional ( )
243+ } ) ;
244+
245+ export const DataEngineCountRequestSchema = z . object ( {
246+ method : z . literal ( 'count' ) ,
247+ object : z . string ( ) ,
248+ query : DataEngineCountOptionsSchema . optional ( )
249+ } ) ;
250+
251+ export const DataEngineAggregateRequestSchema = z . object ( {
252+ method : z . literal ( 'aggregate' ) ,
253+ object : z . string ( ) ,
254+ query : DataEngineAggregateOptionsSchema
255+ } ) ;
256+
257+ /**
258+ * Data Engine Batch Request
259+ * Execute multiple operations in a single transaction/request efficiently.
260+ */
261+ export const DataEngineBatchRequestSchema = z . object ( {
262+ method : z . literal ( 'batch' ) ,
263+ requests : z . array ( z . discriminatedUnion ( 'method' , [
264+ DataEngineFindRequestSchema ,
265+ DataEngineFindOneRequestSchema ,
266+ DataEngineInsertRequestSchema ,
267+ DataEngineUpdateRequestSchema ,
268+ DataEngineDeleteRequestSchema ,
269+ DataEngineCountRequestSchema ,
270+ DataEngineAggregateRequestSchema
271+ ] ) ) ,
272+ /**
273+ * Transaction Mode
274+ * - true: All or nothing (Atomic)
275+ * - false: Best effort, continue on error
276+ */
277+ transaction : z . boolean ( ) . default ( true ) . optional ( )
278+ } ) ;
279+
280+ /**
281+ * Unified Data Engine Request Union
282+ * Use this to validate any incoming "Virtual ObjectQL" request.
283+ */
284+ export const DataEngineRequestSchema = z . discriminatedUnion ( 'method' , [
285+ DataEngineFindRequestSchema ,
286+ DataEngineFindOneRequestSchema ,
287+ DataEngineInsertRequestSchema ,
288+ DataEngineUpdateRequestSchema ,
289+ DataEngineDeleteRequestSchema ,
290+ DataEngineCountRequestSchema ,
291+ DataEngineAggregateRequestSchema ,
292+ DataEngineBatchRequestSchema
293+ ] ) . describe ( 'Virtual ObjectQL Request Protocol' ) ;
294+
295+ // ==========================================================================
296+ // 10. Type Exports
165297// ==========================================================================
166298
167299export type DataEngineFilter = z . infer < typeof DataEngineFilterSchema > ;
@@ -172,4 +304,4 @@ export type DataEngineUpdateOptions = z.infer<typeof DataEngineUpdateOptionsSche
172304export type DataEngineDeleteOptions = z . infer < typeof DataEngineDeleteOptionsSchema > ;
173305export type DataEngineAggregateOptions = z . infer < typeof DataEngineAggregateOptionsSchema > ;
174306export type DataEngineCountOptions = z . infer < typeof DataEngineCountOptionsSchema > ;
175-
307+ export type DataEngineRequest = z . infer < typeof DataEngineRequestSchema > ;
0 commit comments