Skip to content

Commit 022cc63

Browse files
committed
feat: refactor for jsqlparser 5.0
1 parent 3948d48 commit 022cc63

File tree

1 file changed

+16
-17
lines changed

1 file changed

+16
-17
lines changed

src/main/scala/dev/mongocamp/driver/mongodb/sql/MongoSqlQueryHolder.scala

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,28 @@ import dev.mongocamp.driver.mongodb.database.DatabaseProvider
66
import dev.mongocamp.driver.mongodb.database.DatabaseProvider.CollectionSeparator
77
import dev.mongocamp.driver.mongodb.exception.SqlCommandNotSupportedException
88
import dev.mongocamp.driver.mongodb.sql.SQLCommandType.SQLCommandType
9-
import net.sf.jsqlparser.expression.operators.conditional.{ AndExpression, OrExpression }
9+
import net.sf.jsqlparser.expression.operators.conditional.{AndExpression, OrExpression}
1010
import net.sf.jsqlparser.expression.operators.relational._
11-
import net.sf.jsqlparser.expression.{ Expression, Parenthesis }
12-
import net.sf.jsqlparser.parser.{ CCJSqlParser, StreamProvider }
11+
import net.sf.jsqlparser.expression.{Expression, Parenthesis}
12+
import net.sf.jsqlparser.parser.{CCJSqlParser, StreamProvider}
1313
import net.sf.jsqlparser.schema.Table
14-
import net.sf.jsqlparser.statement.UnsupportedStatement
14+
import net.sf.jsqlparser.statement.{ShowStatement, UnsupportedStatement}
1515
import net.sf.jsqlparser.statement.alter.Alter
1616
import net.sf.jsqlparser.statement.create.index.CreateIndex
1717
import net.sf.jsqlparser.statement.create.table.CreateTable
1818
import net.sf.jsqlparser.statement.delete.Delete
1919
import net.sf.jsqlparser.statement.drop.Drop
2020
import net.sf.jsqlparser.statement.execute.Execute
2121
import net.sf.jsqlparser.statement.insert.Insert
22-
import net.sf.jsqlparser.statement.select.{ FromItem, PlainSelect, Select, SelectItem }
22+
import net.sf.jsqlparser.statement.select.{FromItem, PlainSelect, Select, SelectItem}
2323
import net.sf.jsqlparser.statement.show.ShowTablesStatement
2424
import net.sf.jsqlparser.statement.truncate.Truncate
2525
import net.sf.jsqlparser.statement.update.Update
2626
import org.bson.conversions.Bson
2727
import org.h2.command.ddl.AlterTable
2828
import org.mongodb.scala.model.IndexOptions
2929
import org.mongodb.scala.model.Sorts.ascending
30-
import org.mongodb.scala.{ Document, Observable, SingleObservable }
30+
import org.mongodb.scala.{Document, Observable, SingleObservable}
3131

3232
import java.sql.SQLException
3333
import java.util.Date
@@ -112,15 +112,14 @@ class MongoSqlQueryHolder {
112112
else if (classOf[Alter].isAssignableFrom(statement.getClass)) {
113113
sqlCommandType = SQLCommandType.AlterTable
114114
}
115-
else if (classOf[UnsupportedStatement].isAssignableFrom(statement.getClass)) {
116-
val unsupportedStatement = statement.asInstanceOf[UnsupportedStatement]
117-
val isShowDatabases = unsupportedStatement.toString.toLowerCase.contains("show databases")
118-
val isShowSchemas = unsupportedStatement.toString.toLowerCase.contains("show schemas")
119-
if (isShowDatabases | isShowSchemas) {
120-
sqlCommandType = SQLCommandType.ShowDatabases
121-
}
122-
else {
123-
throw new SqlCommandNotSupportedException(s"not supported sql command type <${statement.getClass.getSimpleName}>")
115+
else if (classOf[ShowStatement].isAssignableFrom(statement.getClass)) {
116+
val unsupportedStatement = statement.asInstanceOf[ShowStatement]
117+
unsupportedStatement.getName.trim.toUpperCase match {
118+
case "DATABASES" =>
119+
sqlCommandType = SQLCommandType.ShowDatabases
120+
case "SCHEMAS" =>
121+
sqlCommandType = SQLCommandType.ShowDatabases
122+
case _ =>
124123
}
125124
}
126125
else {
@@ -289,8 +288,8 @@ class MongoSqlQueryHolder {
289288
parseWhere(e.getLeftExpression, left)
290289
parseWhere(e.getRightExpression, right)
291290
queryMap.put("$and", List(left, right))
292-
case e: Parenthesis =>
293-
parseWhere(e.getExpression, queryMap)
291+
case e: ParenthesedExpressionList[Expression] =>
292+
e.asScala.foreach(ex => parseWhere(ex, queryMap))
294293
case e: InExpression =>
295294
val value = e.getRightExpression match {
296295
case l: ParenthesedExpressionList[Expression] => l.asScala.map(convertValue)

0 commit comments

Comments
 (0)