@@ -158,8 +158,8 @@ private Result<Supplier<YqlQuery>> findDeleteQuery(TableDescription source) {
158158
159159 @ SuppressWarnings ("null" )
160160 private Result <Supplier <YqlQuery >> validate (TableDescription source , XmlConfig .Query query , boolean keysOnly ) {
161- String queryText = query .getText ().trim ();
162- Result <DataQuery > parsed = ydb .parseQuery (queryText );
161+ String text = query .getText ().trim ();
162+ Result <DataQuery > parsed = ydb .parseQuery (text );
163163 if (!parsed .isSuccess ()) {
164164 logger .error ("Can't parse query for consumer {}, got status {}" , cdc .getConsumer (), parsed .getStatus ());
165165 return parsed .map (null );
@@ -222,24 +222,33 @@ private Result<Supplier<YqlQuery>> validate(TableDescription source, XmlConfig.Q
222222 }
223223
224224 List <String > keys = source .getPrimaryKeys ();
225- if (query .getUpsertTo () != null && !query .getUpsertTo ().trim ().isEmpty ()) {
226- String execute = "UPSERT INTO `" + query .getUpsertTo ().trim () + "` " ;
227- return Result .success (YqlQuery .readAndExecuteYql (queryText , execute , keys , paramName , structType , cdc ));
228- }
229- if (query .getDeleteFrom () != null && !query .getDeleteFrom ().trim ().isEmpty ()) {
230- String execute = "DELETE FROM `" + query .getDeleteFrom ().trim () + "` ON " ;
231- return Result .success (YqlQuery .readAndExecuteYql (queryText , execute , keys , paramName , structType , cdc ));
232- }
233- if (query .getUpdateOn () != null && !query .getUpdateOn ().trim ().isEmpty ()) {
234- String execute = "UPDATE `" + query .getUpdateOn ().trim () + "` ON " ;
235- return Result .success (YqlQuery .readAndExecuteYql (queryText , execute , keys , paramName , structType , cdc ));
236- }
237- if (query .getInsertTo () != null && !query .getInsertTo ().trim ().isEmpty ()) {
238- String execute = "INSERT INTO `" + query .getInsertTo ().trim () + "` " ;
239- return Result .success (YqlQuery .readAndExecuteYql (queryText , execute , keys , paramName , structType , cdc ));
225+ if (query .getActionTable () != null && !query .getActionTable ().trim ().isEmpty ()) {
226+ String actionTable = query .getActionTable ().trim ();
227+ String action = query .getActionMode ();
228+ if ("upsertInto" .equalsIgnoreCase (action )) {
229+ String execute = "UPSERT INTO `" + actionTable + "` " ;
230+ return Result .success (YqlQuery .readAndExecuteYql (text , execute , keys , paramName , structType , cdc ));
231+ }
232+ if ("deleteFrom" .equalsIgnoreCase (action )) {
233+ String execute = "DELETE FROM `" + actionTable + "` ON " ;
234+ return Result .success (YqlQuery .readAndExecuteYql (text , execute , keys , paramName , structType , cdc ));
235+ }
236+ if ("updateOn" .equalsIgnoreCase (action )) {
237+ String execute = "UPDATE `" + actionTable + "` ON " ;
238+ return Result .success (YqlQuery .readAndExecuteYql (text , execute , keys , paramName , structType , cdc ));
239+ }
240+ if ("insertInto" .equalsIgnoreCase (action )) {
241+ String execute = "INSERT INTO `" + actionTable + "` " ;
242+ return Result .success (YqlQuery .readAndExecuteYql (text , execute , keys , paramName , structType , cdc ));
243+ }
244+
245+ return Result .fail (Status .of (StatusCode .CLIENT_INTERNAL_ERROR , Issue .of (
246+ "Uknown actionName " + action + ", expected upsertInto/deleteFrom/updateOn/insertInto" ,
247+ Issue .Severity .ERROR
248+ )));
240249 }
241250
242- return Result .success (YqlQuery .executeYql (queryText , keys , paramName , structType , cdc ));
251+ return Result .success (YqlQuery .executeYql (text , keys , paramName , structType , cdc ));
243252 }
244253 }
245254
0 commit comments