Skip to content

Commit

Permalink
feat: refactor for jsqlparser 5.0
Browse files Browse the repository at this point in the history
  • Loading branch information
QuadStingray committed Oct 21, 2024
1 parent 3948d48 commit 022cc63
Showing 1 changed file with 16 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,28 +6,28 @@ import dev.mongocamp.driver.mongodb.database.DatabaseProvider
import dev.mongocamp.driver.mongodb.database.DatabaseProvider.CollectionSeparator
import dev.mongocamp.driver.mongodb.exception.SqlCommandNotSupportedException
import dev.mongocamp.driver.mongodb.sql.SQLCommandType.SQLCommandType
import net.sf.jsqlparser.expression.operators.conditional.{ AndExpression, OrExpression }
import net.sf.jsqlparser.expression.operators.conditional.{AndExpression, OrExpression}
import net.sf.jsqlparser.expression.operators.relational._
import net.sf.jsqlparser.expression.{ Expression, Parenthesis }
import net.sf.jsqlparser.parser.{ CCJSqlParser, StreamProvider }
import net.sf.jsqlparser.expression.{Expression, Parenthesis}
import net.sf.jsqlparser.parser.{CCJSqlParser, StreamProvider}
import net.sf.jsqlparser.schema.Table
import net.sf.jsqlparser.statement.UnsupportedStatement
import net.sf.jsqlparser.statement.{ShowStatement, UnsupportedStatement}
import net.sf.jsqlparser.statement.alter.Alter
import net.sf.jsqlparser.statement.create.index.CreateIndex
import net.sf.jsqlparser.statement.create.table.CreateTable
import net.sf.jsqlparser.statement.delete.Delete
import net.sf.jsqlparser.statement.drop.Drop
import net.sf.jsqlparser.statement.execute.Execute
import net.sf.jsqlparser.statement.insert.Insert
import net.sf.jsqlparser.statement.select.{ FromItem, PlainSelect, Select, SelectItem }
import net.sf.jsqlparser.statement.select.{FromItem, PlainSelect, Select, SelectItem}
import net.sf.jsqlparser.statement.show.ShowTablesStatement
import net.sf.jsqlparser.statement.truncate.Truncate
import net.sf.jsqlparser.statement.update.Update
import org.bson.conversions.Bson
import org.h2.command.ddl.AlterTable
import org.mongodb.scala.model.IndexOptions
import org.mongodb.scala.model.Sorts.ascending
import org.mongodb.scala.{ Document, Observable, SingleObservable }
import org.mongodb.scala.{Document, Observable, SingleObservable}

import java.sql.SQLException
import java.util.Date
Expand Down Expand Up @@ -112,15 +112,14 @@ class MongoSqlQueryHolder {
else if (classOf[Alter].isAssignableFrom(statement.getClass)) {
sqlCommandType = SQLCommandType.AlterTable
}
else if (classOf[UnsupportedStatement].isAssignableFrom(statement.getClass)) {
val unsupportedStatement = statement.asInstanceOf[UnsupportedStatement]
val isShowDatabases = unsupportedStatement.toString.toLowerCase.contains("show databases")
val isShowSchemas = unsupportedStatement.toString.toLowerCase.contains("show schemas")
if (isShowDatabases | isShowSchemas) {
sqlCommandType = SQLCommandType.ShowDatabases
}
else {
throw new SqlCommandNotSupportedException(s"not supported sql command type <${statement.getClass.getSimpleName}>")
else if (classOf[ShowStatement].isAssignableFrom(statement.getClass)) {
val unsupportedStatement = statement.asInstanceOf[ShowStatement]
unsupportedStatement.getName.trim.toUpperCase match {
case "DATABASES" =>
sqlCommandType = SQLCommandType.ShowDatabases
case "SCHEMAS" =>
sqlCommandType = SQLCommandType.ShowDatabases
case _ =>
}
}
else {
Expand Down Expand Up @@ -289,8 +288,8 @@ class MongoSqlQueryHolder {
parseWhere(e.getLeftExpression, left)
parseWhere(e.getRightExpression, right)
queryMap.put("$and", List(left, right))
case e: Parenthesis =>
parseWhere(e.getExpression, queryMap)
case e: ParenthesedExpressionList[Expression] =>
e.asScala.foreach(ex => parseWhere(ex, queryMap))
case e: InExpression =>
val value = e.getRightExpression match {
case l: ParenthesedExpressionList[Expression] => l.asScala.map(convertValue)
Expand Down

0 comments on commit 022cc63

Please sign in to comment.