Skip to content

Commit 2d8fd8f

Browse files
author
tanaka takaya
authored
Merge pull request #7 from vertical-blank/rename-and-add-method
to use default parameter, change name of methods.
2 parents 7e920ce + 71398d4 commit 2d8fd8f

File tree

8 files changed

+97
-54
lines changed

8 files changed

+97
-54
lines changed

js/src/main/scala/com/github/vertical_blank/sqlformatter/scala/SqlFormatter.scala

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,16 @@ private[scala] object Facade extends js.Object {
1212

1313
object SqlFormatter extends AbstractSqlFormatter {
1414
def format(sql: String,
15-
language: SQLLanguage,
16-
indent: String): String =
17-
Facade.format(sql, js.Dictionary("language" -> language.name, "indent" -> indent))
15+
config: FormatConfig): String =
16+
Facade.format(sql, js.Dictionary("language" -> config.dialect.name, "indent" -> config.indent))
1817

19-
def format(sql: String,
18+
def formatWithNamedParams(sql: String,
2019
params: Map[String, Any],
21-
language: SQLLanguage,
22-
indent: String): String =
23-
Facade.format(sql, js.Dictionary("language" -> language.name, "indent" -> indent, "params" -> params.toJSDictionary))
20+
config: FormatConfig): String =
21+
Facade.format(sql, js.Dictionary("language" -> config.dialect.name, "indent" -> config.indent, "params" -> params.toJSDictionary))
2422

25-
def format(sql: String,
23+
def formatWithIndexedParams(sql: String,
2624
params: Seq[Any],
27-
language: SQLLanguage,
28-
indent: String): String =
29-
Facade.format(sql, js.Dictionary("language" -> language.name, "indent" -> indent, "params" -> params.toJSArray))
25+
config: FormatConfig): String =
26+
Facade.format(sql, js.Dictionary("language" -> config.dialect.name, "indent" -> config.indent, "params" -> params.toJSArray))
3027
}

jvm/src/main/scala/com/github/vertical_blank/sqlformatter/scala/SqlFormatter.scala

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,13 @@ import com.github.vertical_blank.sqlformatter.{SqlFormatter => JSqlFormatter}
55

66
object SqlFormatter extends AbstractSqlFormatter {
77
def format(sql: String,
8-
language: SQLLanguage,
9-
indent: String): String = JSqlFormatter.of(language.name).format(sql, indent)
8+
config: FormatConfig): String = JSqlFormatter.of(config.dialect.name).format(sql, config.indent)
109

11-
12-
def format(sql: String,
10+
def formatWithNamedParams(sql: String,
1311
params: Map[String, Any],
14-
language: SQLLanguage,
15-
indent: String): String = JSqlFormatter.of(language.name).format(sql, indent, params.asJava)
12+
config: FormatConfig): String = JSqlFormatter.of(config.dialect.name).format(sql, config.indent, params.asJava)
1613

17-
def format(sql: String,
14+
def formatWithIndexedParams(sql: String,
1815
params: Seq[Any],
19-
language: SQLLanguage,
20-
indent: String): String = JSqlFormatter.of(language.name).format(sql, indent, params.asJava)
16+
config: FormatConfig): String = JSqlFormatter.of(config.dialect.name).format(sql, config.indent, params.asJava)
2117
}

readme.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,65 @@ SELECT
2525
FROM
2626
table1
2727
```
28+
29+
### Dialect
30+
31+
You can pass dialect with `FormatConfig` :
32+
33+
```scala
34+
SqlFormatter.format(
35+
"SELECT *",
36+
FormatConfig(dialect = SqlDialect.CouchbaseN1QL))
37+
```
38+
39+
Currently just four SQL dialects are supported:
40+
41+
- StandardSQL - [Standard SQL](https://en.wikipedia.org/wiki/SQL:2011)
42+
- CouchbaseN1QL - [Couchbase N1QL](http://www.couchbase.com/n1ql)
43+
- DB2 - [IBM DB2](https://www.ibm.com/analytics/us/en/technology/db2/)
44+
- PLSQL - [Oracle PL/SQL](http://www.oracle.com/technetwork/database/features/plsql/index.html)
45+
46+
### Format
47+
48+
Defaults to two spaces.
49+
You can pass indent string with `FormatConfig` to `format` :
50+
51+
```scala
52+
SqlFormatter.format(
53+
"SELECT * FROM table1",
54+
FormatConfig(indent = " "))
55+
```
56+
57+
This will output:
58+
59+
```sql
60+
SELECT
61+
*
62+
FROM
63+
table1
64+
```
65+
66+
### Placeholders replacement
67+
68+
You can pass `Seq` to `formatWithIndexedParams`, or `Map` to `formatWithNamedParams` :
69+
70+
```scala
71+
// Named placeholders
72+
SqlFormatter.formatWithNamedParams("SELECT * FROM tbl WHERE foo = @foo", params = Map("foo" -> "'bar'"))
73+
74+
// Indexed placeholders
75+
SqlFormatter.formatWithIndexedParams("SELECT * FROM tbl WHERE foo = ?", params = Seq("'bar'"))
76+
```
77+
78+
Both result in:
79+
80+
```sql
81+
SELECT
82+
*
83+
FROM
84+
tbl
85+
WHERE
86+
foo = 'bar'
87+
```
88+
89+
Same as the `format` method, `formatWithNamedParams` and `formatWithIndexedParams` accept `dialect` and `indent` parameters.
Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,14 @@
11
package com.github.vertical_blank.sqlformatter.scala
22

33
trait AbstractSqlFormatter {
4-
final def format(sql: String): String =
5-
format(sql, SQLLanguage.StandardSQL, indent = " ")
64

7-
final def format(sql: String, indent: String): String =
8-
format(sql, SQLLanguage.StandardSQL, indent = indent)
5+
def format(sql: String, config: FormatConfig = FormatConfig()): String
96

10-
final def format(sql: String, params: Map[String, Any]): String =
11-
format(sql, params, SQLLanguage.StandardSQL, indent = " ")
12-
13-
final def format(sql: String, params: Seq[Any]): String =
14-
format(sql, params, SQLLanguage.StandardSQL, indent = " ")
15-
16-
def format(sql: String,
17-
language: SQLLanguage,
18-
indent: String): String
19-
20-
def format(sql: String,
7+
def formatWithNamedParams(sql: String,
218
params: Map[String, Any],
22-
language: SQLLanguage,
23-
indent: String): String
9+
config: FormatConfig = FormatConfig()): String
2410

25-
def format(sql: String,
11+
def formatWithIndexedParams(sql: String,
2612
params: Seq[Any],
27-
language: SQLLanguage ,
28-
indent: String): String
13+
config: FormatConfig = FormatConfig()): String
2914
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.github.vertical_blank.sqlformatter.scala
2+
3+
case class FormatConfig(
4+
dialect: SqlDialect = SqlDialect.StandardSQL,
5+
indent: String = " ")

shared/src/main/scala/com/github/vertical_blank/sqlformatter/scala/SQLLanguage.scala

Lines changed: 0 additions & 9 deletions
This file was deleted.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.github.vertical_blank.sqlformatter.scala
2+
3+
sealed abstract class SqlDialect(val name: String) extends Product with Serializable
4+
object SqlDialect {
5+
case object StandardSQL extends SqlDialect("sql")
6+
case object CouchbaseN1QL extends SqlDialect("n1ql")
7+
case object DB2 extends SqlDialect("db2")
8+
case object PLSQL extends SqlDialect("pl/sql")
9+
}

shared/src/test/scala/com/github/vertical_blank/sqlformatter/scala/BaseTest.scala

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,18 @@ abstract class BaseTest(sqlFormatter: AbstractSqlFormatter) extends FunSuite {
3434
| table""".stripMargin
3535

3636
assert(sqlFormatter
37-
.format("SELECT foo, bar, CASE baz WHEN 'one' THEN 1 WHEN 'two' THEN 2 ELSE 3 END FROM table", indent = " ") == formatted)
37+
.format("SELECT foo, bar, CASE baz WHEN 'one' THEN 1 WHEN 'two' THEN 2 ELSE 3 END FROM table", FormatConfig(indent = " ")) == formatted)
3838
}
3939

4040
test("withNamedParams") {
41-
val namedParams = Map("foo" -> "'bar'")
42-
4341
val formatted = """|SELECT
4442
| *
4543
|FROM
4644
| table
4745
|WHERE
4846
| foo = 'bar'""".stripMargin
4947

50-
assert(sqlFormatter.format("SELECT * FROM table WHERE foo = @foo", namedParams) == formatted)
48+
assert(sqlFormatter.formatWithNamedParams("SELECT * FROM table WHERE foo = @foo", params = Map("foo" -> "'bar'")) == formatted)
5149
}
5250

5351
test("withIndexedParams") {
@@ -59,6 +57,6 @@ abstract class BaseTest(sqlFormatter: AbstractSqlFormatter) extends FunSuite {
5957
|WHERE
6058
| foo = 'bar'""".stripMargin
6159

62-
assert(sqlFormatter.format("SELECT * FROM table WHERE foo = ?", Seq("'bar'")) == formatted)
60+
assert(sqlFormatter.formatWithIndexedParams("SELECT * FROM table WHERE foo = ?", params = Seq("'bar'")) == formatted)
6361
}
6462
}

0 commit comments

Comments
 (0)