@@ -4,23 +4,24 @@ import dev.mongocamp.driver.mongodb._
44import dev .mongocamp .driver .mongodb .database .DatabaseProvider
55import SQLCommandType .SQLCommandType
66import com .mongodb .client .model .DropIndexOptions
7- import net .sf .jsqlparser .statement .Statement
8- import net .sf .jsqlparser .expression .operators .conditional .{ AndExpression , OrExpression }
7+ import net .sf .jsqlparser .statement .{ ShowStatement , Statement , UnsupportedStatement }
8+ import net .sf .jsqlparser .expression .operators .conditional .{AndExpression , OrExpression }
99import net .sf .jsqlparser .expression .operators .relational ._
10- import net .sf .jsqlparser .expression .{ Expression , Parenthesis }
11- import net .sf .jsqlparser .parser .{ CCJSqlParser , StreamProvider }
12- import net .sf .jsqlparser .schema .{ Column , Table }
10+ import net .sf .jsqlparser .expression .{Expression , Parenthesis }
11+ import net .sf .jsqlparser .parser .{CCJSqlParser , StreamProvider }
12+ import net .sf .jsqlparser .schema .{Column , Table }
1313import net .sf .jsqlparser .statement .create .index .CreateIndex
1414import net .sf .jsqlparser .statement .delete .Delete
1515import net .sf .jsqlparser .statement .drop .Drop
1616import net .sf .jsqlparser .statement .insert .Insert
17- import net .sf .jsqlparser .statement .select .{ AllColumns , FromItem , PlainSelect , Select , SelectItem }
17+ import net .sf .jsqlparser .statement .select .{AllColumns , FromItem , PlainSelect , Select , SelectItem }
18+ import net .sf .jsqlparser .statement .show .ShowTablesStatement
1819import net .sf .jsqlparser .statement .truncate .Truncate
1920import net .sf .jsqlparser .statement .update .Update
2021import org .bson .conversions .Bson
2122import org .mongodb .scala .model .IndexOptions
2223import org .mongodb .scala .model .Sorts .ascending
23- import org .mongodb .scala .{ Document , Observable }
24+ import org .mongodb .scala .{Document , Observable }
2425
2526import java .util .concurrent .TimeUnit
2627import scala .collection .mutable
@@ -84,6 +85,19 @@ class MongoSqlQueryHolder {
8485 sqlCommandType = SQLCommandType .Delete
8586 sqlTable = truncate.getTable
8687 }
88+ else if (classOf [ShowTablesStatement ].isAssignableFrom(statement.getClass)) {
89+ sqlCommandType = SQLCommandType .ShowTables
90+ }
91+ else if (classOf [UnsupportedStatement ].isAssignableFrom(statement.getClass)) {
92+ val unsupportedStatement = statement.asInstanceOf [UnsupportedStatement ]
93+ val isShowDatabases = unsupportedStatement.toString.toLowerCase.contains(" show databases" )
94+ val isShowSchemas = unsupportedStatement.toString.toLowerCase.contains(" show schemas" )
95+ if (isShowDatabases | isShowSchemas) {
96+ sqlCommandType = SQLCommandType .ShowDatabases
97+ } else {
98+ throw new IllegalArgumentException (" not supported sql command type" )
99+ }
100+ }
87101 else {
88102 throw new IllegalArgumentException (" not supported sql command type" )
89103 }
@@ -137,6 +151,10 @@ class MongoSqlQueryHolder {
137151 .dropIndexForName(indexName, new DropIndexOptions ().maxTime(1 , TimeUnit .MINUTES ))
138152 .map(_ => org.mongodb.scala.Document (" indexName" -> indexName))
139153
154+ case SQLCommandType .ShowTables =>
155+ provider.collections()
156+ case SQLCommandType .ShowDatabases =>
157+ provider.databases
140158 case SQLCommandType .DropTable =>
141159 provider.dao(getCollection).drop().map(_ => org.mongodb.scala.Document (" wasAcknowledged" -> true ))
142160
0 commit comments