Skip to content

Commit

Permalink
remove line breaks
Browse files Browse the repository at this point in the history
  • Loading branch information
yinxulai committed Mar 15, 2024
1 parent f0d2223 commit 229e6fe
Show file tree
Hide file tree
Showing 13 changed files with 41 additions and 43 deletions.
22 changes: 10 additions & 12 deletions common.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,9 @@ func newSqlBuilder() *sqlBuilder {
return builder
}

const orString = ") OR ("
const andString = ") AND ("
var orString = ") OR ("
var andString = ") AND ("
var condSlice = []string{orString, andString}

// 拼接 sql 的工具方法
func (s *sqlBuilder) join(keyword string, open string, fields []string, sep string, close string) string {
Expand All @@ -29,23 +30,20 @@ func (s *sqlBuilder) join(keyword string, open string, fields []string, sep stri

var body = ""
for index, field := range fields {
if (index > 0) && (index != len(field)-1) {
// 在 or、and 的前后都不应该添加 sep
if !slices.Contains[[]string]([]string{orString, andString}, field) {
if !slices.Contains[[]string]([]string{orString, andString}, fields[index-1]) {
body += sep
}
body += field
if index != len(fields)-1 {
nextField := fields[index+1]
if !slices.Contains[[]string](condSlice, field) && !slices.Contains[[]string](condSlice, nextField) {
body += sep
}
}

body += field
}

if keyword != "" {
return keyword + " " + open + body + close + "\n"
return keyword + " " + open + body + close + " "
}

return open + body + close + "\n"
return open + body + close + " "
}

func (s *sqlBuilder) Param(v any) string {
Expand Down
2 changes: 1 addition & 1 deletion create_schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func (s *createSchemaBuilder) String() string {
}

sqlString += s.builder.join(keyword, "", s.statement.schema, "", "")
return strings.Trim(sqlString, "\n")
return strings.Trim(sqlString, " ")
}

func (s *createSchemaBuilder) Params() []any {
Expand Down
2 changes: 1 addition & 1 deletion create_table.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ func (s *createTableBuilder) String() string {

sqlString += s.builder.join(keyword, "", []string{s.statement.table}, "", "")
sqlString += s.builder.join("", "(", s.statement.columns, ", ", ")")
return strings.Trim(sqlString, "\n")
return strings.Trim(sqlString, " ")
}

func (s *createTableBuilder) Params() []any {
Expand Down
2 changes: 1 addition & 1 deletion create_table_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ func TestCreateTableStatement(t *testing.T) {
s.COLUMN("created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP")

result := s.String()
expected := "CREATE TABLE IF NOT EXISTS PERSON\n(id INT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE, age INT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"
expected := "CREATE TABLE IF NOT EXISTS PERSON (id INT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE, age INT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"

if result != expected {
t.Errorf("Case1() 返回值为 %s,期望值为 %s", result, expected)
Expand Down
2 changes: 1 addition & 1 deletion delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ func (s *deleteBuilder) String() string {
if s.statement.limit != "" {
sqlString += s.builder.join("LIMIT", "", []string{s.statement.limit}, "", "")
}
return strings.Trim(sqlString, "\n")
return strings.Trim(sqlString, " ")
}

func (s *deleteBuilder) Params() []any {
Expand Down
2 changes: 1 addition & 1 deletion delete_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ func TestSimpleDeleteStatement(t *testing.T) {
s.LIMIT("20")

result := s.String()
expected := "DELETE FROM PERSON\nWHERE (P.ID = A.ID AND P.FIRST_NAME like ?) OR (P.LAST_NAME like ?)\nOFFSET 10\nLIMIT 20"
expected := "DELETE FROM PERSON WHERE (P.ID = A.ID AND P.FIRST_NAME like ?) OR (P.LAST_NAME like ?) OFFSET 10 LIMIT 20"

if result != expected {
t.Errorf("Case1() 返回值为 %s,期望值为 %s", result, expected)
Expand Down
2 changes: 1 addition & 1 deletion insert.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func (s *insertBuilder) String() string {
sqlString += s.builder.join("INSERT INTO", "", s.statement.table, "", "")
sqlString += s.builder.join("", "(", s.statement.columns, ", ", ")")
sqlString += s.builder.join("VALUES", "(", s.statement.values, ", ", ")")
return strings.Trim(sqlString, "\n")
return strings.Trim(sqlString, " ")
}

func (s *insertBuilder) Params() []any {
Expand Down
8 changes: 4 additions & 4 deletions insert_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ import "testing"

func TestSimpleInsertStatement(t *testing.T) {
s:= INSERT_INTO("PERSON")
s.VALUES("a", "a")
s.VALUES("b", "a")
s.VALUES("c", "a")
s.VALUES("a", s.Param(1))
s.VALUES("b", s.Param(1))
s.VALUES("c", s.Param(1))

result := s.String()
expected := "INSERT INTO PERSON\n(a, b, c)\nVALUES (a, a, a)"
expected := "INSERT INTO PERSON (a, b, c) VALUES ($1, $2, $3)"

if result != expected {
t.Errorf("Case1() 返回值为 %s,期望值为 %s", result, expected)
Expand Down
12 changes: 6 additions & 6 deletions select.go
Original file line number Diff line number Diff line change
Expand Up @@ -182,11 +182,11 @@ func (s *selectBuilder) String() string {

sqlString += s.builder.join("FROM", "", s.statement.table, ", ", "")

sqlString += s.builder.join("JOIN", "", s.statement.join, "\nJOIN ", "")
sqlString += s.builder.join("INNER JOIN", "", s.statement.innerJoin, "\nINNER JOIN ", "")
sqlString += s.builder.join("OUTER JOIN", "", s.statement.outerJoin, "\nOUTER JOIN ", "")
sqlString += s.builder.join("LEFT OUTER JOIN", "", s.statement.leftOuterJoin, "\nLEFT OUTER JOIN ", "")
sqlString += s.builder.join("RIGHT OUTER JOIN", "", s.statement.rightOuterJoin, "\nRIGHT OUTER JOIN ", "")
sqlString += s.builder.join("JOIN", "", s.statement.join, " JOIN ", "")
sqlString += s.builder.join("INNER JOIN", "", s.statement.innerJoin, " INNER JOIN ", "")
sqlString += s.builder.join("OUTER JOIN", "", s.statement.outerJoin, " OUTER JOIN ", "")
sqlString += s.builder.join("LEFT OUTER JOIN", "", s.statement.leftOuterJoin, " LEFT OUTER JOIN ", "")
sqlString += s.builder.join("RIGHT OUTER JOIN", "", s.statement.rightOuterJoin, " RIGHT OUTER JOIN ", "")

sqlString += s.builder.join("WHERE", "(", s.statement.where, " AND ", ")")
sqlString += s.builder.join("GROUP BY", "", s.statement.groupBy, ", ", "")
Expand All @@ -198,7 +198,7 @@ func (s *selectBuilder) String() string {
if s.statement.limit != "" {
sqlString += s.builder.join("LIMIT", "", []string{s.statement.limit}, "", "")
}
return strings.Trim(sqlString, "\n")
return strings.Trim(sqlString, " ")
}

func (s *selectBuilder) Params() []any {
Expand Down
10 changes: 5 additions & 5 deletions select_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ func TestSimpleSelectStatement(t *testing.T) {
var c = "c"

result := Case2(&a, &b, &c)
expected := "SELECT P.ID, P.USERNAME, P.PASSWORD, P.FIRST_NAME, P.LAST_NAME\nFROM PERSON P\nWHERE (P.ID like #id# AND P.FIRST_NAME like #firstName# AND P.LAST_NAME like #lastName#)\nORDER BY P.LAST_NAME"
expected := "SELECT P.ID, P.USERNAME, P.PASSWORD, P.FIRST_NAME, P.LAST_NAME FROM PERSON P WHERE (P.ID like #id# AND P.FIRST_NAME like #firstName# AND P.LAST_NAME like #lastName#) ORDER BY P.LAST_NAME"

if result != expected {
t.Errorf("Case2(&a, &b, &c) 返回值为 %s,期望值为 %s", result, expected)
Expand All @@ -61,7 +61,7 @@ func TestSimpleSelectStatementMissingFirstParam(t *testing.T) {
var c = "c"

result := Case2(nil, &b, &c)
expected := "SELECT P.ID, P.USERNAME, P.PASSWORD, P.FIRST_NAME, P.LAST_NAME\nFROM PERSON P\nWHERE (P.FIRST_NAME like #firstName# AND P.LAST_NAME like #lastName#)\nORDER BY P.LAST_NAME"
expected := "SELECT P.ID, P.USERNAME, P.PASSWORD, P.FIRST_NAME, P.LAST_NAME FROM PERSON P WHERE (P.FIRST_NAME like #firstName# AND P.LAST_NAME like #lastName#) ORDER BY P.LAST_NAME"

if result != expected {
t.Errorf("Case2(nil, &b, &c) 返回值为 %s,期望值为 %s", result, expected)
Expand All @@ -72,7 +72,7 @@ func TestSimpleSelectStatementMissingFirstTwoParams(t *testing.T) {
var c = "c"

result := Case2(nil, nil, &c)
expected := "SELECT P.ID, P.USERNAME, P.PASSWORD, P.FIRST_NAME, P.LAST_NAME\nFROM PERSON P\nWHERE (P.LAST_NAME like #lastName#)\nORDER BY P.LAST_NAME"
expected := "SELECT P.ID, P.USERNAME, P.PASSWORD, P.FIRST_NAME, P.LAST_NAME FROM PERSON P WHERE (P.LAST_NAME like #lastName#) ORDER BY P.LAST_NAME"

if result != expected {
t.Errorf("Case2(nil, nil, &c) 返回值为 %s,期望值为 %s", result, expected)
Expand All @@ -81,7 +81,7 @@ func TestSimpleSelectStatementMissingFirstTwoParams(t *testing.T) {

func TestSimpleSelectStatementMissingAllParams(t *testing.T) {
result := Case2(nil, nil, nil)
expected := "SELECT P.ID, P.USERNAME, P.PASSWORD, P.FIRST_NAME, P.LAST_NAME\nFROM PERSON P\nORDER BY P.LAST_NAME"
expected := "SELECT P.ID, P.USERNAME, P.PASSWORD, P.FIRST_NAME, P.LAST_NAME FROM PERSON P ORDER BY P.LAST_NAME"

if result != expected {
t.Errorf("Case2(nil, nil, nil) 返回值为 %s,期望值为 %s", result, expected)
Expand All @@ -90,7 +90,7 @@ func TestSimpleSelectStatementMissingAllParams(t *testing.T) {

func TestComplexSelectStatement(t *testing.T) {
result := Case1()
expected := "SELECT P.ID, P.USERNAME, P.PASSWORD, P.FULL_NAME, P.LAST_NAME, P.CREATED_ON, P.UPDATED_ON\nFROM PERSON P, ACCOUNT A\nINNER JOIN DEPARTMENT D on D.ID = P.DEPARTMENT_ID\nINNER JOIN COMPANY C on D.COMPANY_ID = C.ID\nWHERE (P.ID = A.ID AND P.FIRST_NAME like ?) OR (P.LAST_NAME like ?)\nGROUP BY P.ID\nHAVING (P.LAST_NAME like ?) OR (P.FIRST_NAME like ?)\nORDER BY P.ID, P.FULL_NAME\nOFFSET 10\nLIMIT 20"
expected := "SELECT P.ID, P.USERNAME, P.PASSWORD, P.FULL_NAME, P.LAST_NAME, P.CREATED_ON, P.UPDATED_ON FROM PERSON P, ACCOUNT A INNER JOIN DEPARTMENT D on D.ID = P.DEPARTMENT_ID INNER JOIN COMPANY C on D.COMPANY_ID = C.ID WHERE (P.ID = A.ID AND P.FIRST_NAME like ?) OR (P.LAST_NAME like ?) GROUP BY P.ID HAVING (P.LAST_NAME like ?) OR (P.FIRST_NAME like ?) ORDER BY P.ID, P.FULL_NAME OFFSET 10 LIMIT 20"

if result != expected {
t.Errorf("Case1() 返回值为 %s,期望值为 %s", result, expected)
Expand Down
2 changes: 1 addition & 1 deletion truncate_table.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ func (s *truncateTableBuilder) Param(v any) string {
func (s *truncateTableBuilder) String() string {
var sqlString string
sqlString += s.builder.join("TRUNCATE TABLE", "", []string{s.statement.table}, "", "")
return strings.Trim(sqlString, "\n")
return strings.Trim(sqlString, " ")
}

func (s *truncateTableBuilder) Params() []any {
Expand Down
16 changes: 8 additions & 8 deletions update.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ func newUpdateBuilder() *updateBuilder {

// 启动更新语句并指定要更新的表。
// 这之后应该是一个或多个 SET() 调用或者 WHERE() 调用。
func UPDATE(v string) *updateBuilder {
func UPDATE(table string) *updateBuilder {
s := newUpdateBuilder()
s.statement.table = append(s.statement.table, v)
s.statement.table = append(s.statement.table, table)
return s
}

Expand Down Expand Up @@ -99,11 +99,11 @@ func (s *updateBuilder) String() string {

sqlString += s.builder.join("UPDATE", "", s.statement.table, "", "")

sqlString += s.builder.join("JOIN", "", s.statement.join, "\nJOIN ", "")
sqlString += s.builder.join("INNER JOIN", "", s.statement.innerJoin, "\nINNER JOIN ", "")
sqlString += s.builder.join("OUTER JOIN", "", s.statement.outerJoin, "\nOUTER JOIN ", "")
sqlString += s.builder.join("LEFT OUTER JOIN", "", s.statement.leftOuterJoin, "\nLEFT OUTER JOIN ", "")
sqlString += s.builder.join("RIGHT OUTER JOIN", "", s.statement.rightOuterJoin, "\nRIGHT OUTER JOIN ", "")
sqlString += s.builder.join("JOIN", "", s.statement.join, " JOIN ", "")
sqlString += s.builder.join("INNER JOIN", "", s.statement.innerJoin, " INNER JOIN ", "")
sqlString += s.builder.join("OUTER JOIN", "", s.statement.outerJoin, " OUTER JOIN ", "")
sqlString += s.builder.join("LEFT OUTER JOIN", "", s.statement.leftOuterJoin, " LEFT OUTER JOIN ", "")
sqlString += s.builder.join("RIGHT OUTER JOIN", "", s.statement.rightOuterJoin, " RIGHT OUTER JOIN ", "")

sqlString += s.builder.join("SET", "", s.statement.set, ", ", "")
sqlString += s.builder.join("WHERE", "(", s.statement.where, " AND ", ")")
Expand All @@ -114,7 +114,7 @@ func (s *updateBuilder) String() string {
if s.statement.limit != "" {
sqlString += s.builder.join("LIMIT", "", []string{s.statement.limit}, "", "")
}
return strings.Trim(sqlString, "\n")
return strings.Trim(sqlString, " ")
}

func (s *updateBuilder) Params() []any {
Expand Down
2 changes: 1 addition & 1 deletion update_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ func TestSimpleUpdateStatement(t *testing.T) {
s.WHERE("P.LAST_NAME like ?")

result := s.String()
expected := "UPDATE PERSON\nINNER JOIN DEPARTMENT D on D.ID = P.DEPARTMENT_ID\nINNER JOIN COMPANY C on D.COMPANY_ID = C.ID\nSET a=1, b=2\nWHERE (P.ID = A.ID AND P.FIRST_NAME like ?) OR (P.LAST_NAME like ?)"
expected := "UPDATE PERSON INNER JOIN DEPARTMENT D on D.ID = P.DEPARTMENT_ID INNER JOIN COMPANY C on D.COMPANY_ID = C.ID SET a=1, b=2 WHERE (P.ID = A.ID AND P.FIRST_NAME like ?) OR (P.LAST_NAME like ?)"

if result != expected {
t.Errorf("Case1() 返回值为 %s,期望值为 %s", result, expected)
Expand Down

0 comments on commit 229e6fe

Please sign in to comment.