Skip to content

Commit 37f1c2e

Browse files
committedFeb 25, 2020
fix Drop table
1 parent 5713ae0 commit 37f1c2e

File tree

8 files changed

+43
-90
lines changed

8 files changed

+43
-90
lines changed
 

‎gee-orm/day1-database-sql/geeorm/session/raw_test.go

+9-20
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package session
22

33
import (
44
"database/sql"
5-
"geeorm/log"
65
"os"
76
"testing"
87

@@ -11,18 +10,10 @@ import (
1110

1211
var TestDB *sql.DB
1312

14-
func setup() {
15-
TestDB, _ = sql.Open("sqlite3", "gee.db")
16-
log.SetLevel(log.ErrorLevel)
17-
}
18-
19-
func teardown() {
20-
_ = TestDB.Close()
21-
}
2213
func TestMain(m *testing.M) {
23-
setup()
14+
TestDB, _ = sql.Open("sqlite3", "gee.db")
2415
code := m.Run()
25-
teardown()
16+
_ = TestDB.Close()
2617
os.Exit(code)
2718
}
2819

@@ -31,20 +22,18 @@ func NewSession() *Session {
3122
}
3223

3324
func TestSession_Exec(t *testing.T) {
34-
_, _ = NewSession().Raw("DROP TABLE USER;").Exec()
35-
_, _ = NewSession().Raw("CREATE TABLE USER(name text);").Exec()
36-
result, _ := NewSession().
37-
Raw("INSERT INTO USER(`name`) values (?), (?)", "Tom", "Sam").Exec()
25+
_, _ = NewSession().Raw("DROP TABLE IF EXISTS User;").Exec()
26+
_, _ = NewSession().Raw("CREATE TABLE User(name text);").Exec()
27+
result, _ := NewSession().Raw("INSERT INTO User(`name`) values (?), (?)", "Tom", "Sam").Exec()
3828
if count, err := result.RowsAffected(); err != nil || count != 2 {
3929
t.Fatal("expect 2, but got", count)
4030
}
4131
}
4232

43-
func TestSession_QueryRow(t *testing.T) {
44-
_, _ = NewSession().Raw("DROP TABLE USER;").Exec()
45-
_, _ = NewSession().Raw("CREATE TABLE USER(name text);").Exec()
46-
row := NewSession().Raw("SELECT count(*) FROM USER").QueryRow()
47-
33+
func TestSession_QueryRows(t *testing.T) {
34+
_, _ = NewSession().Raw("DROP TABLE IF EXISTS User;").Exec()
35+
_, _ = NewSession().Raw("CREATE TABLE User(name text);").Exec()
36+
row := NewSession().Raw("SELECT count(*) FROM User").QueryRow()
4837
var count int
4938
if err := row.Scan(&count); err != nil || count != 0 {
5039
t.Fatal("failed to query db", err)

‎gee-orm/day2-reflect-schema/geeorm/session/raw_test.go

+11-19
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,19 @@ import (
66
"testing"
77

88
"geeorm/dialect"
9+
910
_ "github.com/mattn/go-sqlite3"
1011
)
1112

1213
var (
13-
TestDB *sql.DB
14-
TestDial dialect.Dialect
15-
)
16-
17-
func setup() {
18-
TestDB, _ = sql.Open("sqlite3", "gee.db")
14+
TestDB *sql.DB
1915
TestDial, _ = dialect.GetDialect("sqlite3")
20-
}
21-
22-
func teardown() {
23-
_ = TestDB.Close()
24-
}
16+
)
2517

2618
func TestMain(m *testing.M) {
27-
setup()
19+
TestDB, _ = sql.Open("sqlite3", "gee.db")
2820
code := m.Run()
29-
teardown()
21+
_ = TestDB.Close()
3022
os.Exit(code)
3123
}
3224

@@ -35,18 +27,18 @@ func NewSession() *Session {
3527
}
3628

3729
func TestSession_Exec(t *testing.T) {
38-
_, _ = NewSession().Raw("DROP TABLE USER;").Exec()
39-
_, _ = NewSession().Raw("CREATE TABLE USER(name text);").Exec()
40-
result, _ := NewSession().Raw("INSERT INTO USER(`name`) values (?), (?)", "Tom", "Sam").Exec()
30+
_, _ = NewSession().Raw("DROP TABLE IF EXISTS User;").Exec()
31+
_, _ = NewSession().Raw("CREATE TABLE User(name text);").Exec()
32+
result, _ := NewSession().Raw("INSERT INTO User(`name`) values (?), (?)", "Tom", "Sam").Exec()
4133
if count, err := result.RowsAffected(); err != nil || count != 2 {
4234
t.Fatal("expect 2, but got", count)
4335
}
4436
}
4537

4638
func TestSession_QueryRows(t *testing.T) {
47-
_, _ = NewSession().Raw("DROP TABLE USER;").Exec()
48-
_, _ = NewSession().Raw("CREATE TABLE USER(name text);").Exec()
49-
row := NewSession().Raw("SELECT count(*) FROM USER").QueryRow()
39+
_, _ = NewSession().Raw("DROP TABLE IF EXISTS User;").Exec()
40+
_, _ = NewSession().Raw("CREATE TABLE User(name text);").Exec()
41+
row := NewSession().Raw("SELECT count(*) FROM User").QueryRow()
5042
var count int
5143
if err := row.Scan(&count); err != nil || count != 0 {
5244
t.Fatal("failed to query db", err)

‎gee-orm/day2-reflect-schema/geeorm/session/schema.go

+2-5
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"fmt"
55
"strings"
66

7-
"geeorm/log"
87
"geeorm/schema"
98
)
109

@@ -38,7 +37,7 @@ func (s *Session) CreateTable(value interface{}) error {
3837
// DropTable drops a table with the name of model
3938
func (s *Session) DropTable(value interface{}) error {
4039
table := s.RefTable(value)
41-
_, err := s.Raw(fmt.Sprintf("DROP TABLE %s", table.TableName)).Exec()
40+
_, err := s.Raw(fmt.Sprintf("DROP TABLE IF EXISTS %s", table.TableName)).Exec()
4241
return err
4342
}
4443

@@ -52,8 +51,6 @@ func (s *Session) HasTable(value interface{}) bool {
5251
sql, values := s.dialect.TableExistSQL(tableName)
5352
row := s.Raw(sql, values...).QueryRow()
5453
var tmp string
55-
if err := row.Scan(&tmp); err != nil {
56-
log.Error(err)
57-
}
54+
_ = row.Scan(&tmp)
5855
return tmp == tableName
5956
}

‎gee-orm/day3-save-query/geeorm/clause/clause_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77

88
func TestClause_Set(t *testing.T) {
99
var clause Clause
10-
clause.Set(INSERT, "User", "Name,Age")
10+
clause.Set(INSERT, "User", []string{"Name", "Age"})
1111
sql := clause.sql[INSERT]
1212
vars := clause.sqlVars[INSERT]
1313
t.Log(sql, vars)
@@ -19,7 +19,7 @@ func TestClause_Set(t *testing.T) {
1919
func TestClause_Build(t *testing.T) {
2020
var clause Clause
2121
clause.Set(LIMIT, 3)
22-
clause.Set(SELECT, "User", "*")
22+
clause.Set(SELECT, "User", []string{"*"})
2323
orders := []Type{SELECT, LIMIT}
2424
sql, vars := clause.Build(orders)
2525
t.Log(sql, vars)

‎gee-orm/day3-save-query/geeorm/clause/generator.go

+2-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package clause
22

33
import (
44
"fmt"
5-
"log"
65
"strings"
76
)
87

@@ -29,7 +28,7 @@ func genBindVars(num int) string {
2928
func _insert(values ...interface{}) (string, []interface{}) {
3029
// INSERT INTO $tableName ($fields)
3130
tableName := values[0]
32-
fields := values[1]
31+
fields := strings.Join(values[1].([]string), ",")
3332
return fmt.Sprintf("INSERT INTO %s (%v)", tableName, fields), []interface{}{}
3433
}
3534

@@ -57,12 +56,11 @@ func _values(values ...interface{}) (string, []interface{}) {
5756
func _select(values ...interface{}) (string, []interface{}) {
5857
// SELECT $fields FROM $tableName
5958
tableName := values[0]
60-
fields := values[1]
59+
fields := strings.Join(values[1].([]string), ",")
6160
return fmt.Sprintf("SELECT %v FROM %s", fields, tableName), []interface{}{}
6261
}
6362

6463
func _limit(values ...interface{}) (string, []interface{}) {
6564
// LIMIT $num
66-
log.Println(values...)
6765
return "LIMIT ?", values
6866
}

‎gee-orm/day3-save-query/geeorm/session/raw_test.go

+11-19
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,19 @@ import (
66
"testing"
77

88
"geeorm/dialect"
9+
910
_ "github.com/mattn/go-sqlite3"
1011
)
1112

1213
var (
13-
TestDB *sql.DB
14-
TestDial dialect.Dialect
15-
)
16-
17-
func setup() {
18-
TestDB, _ = sql.Open("sqlite3", "gee.db")
14+
TestDB *sql.DB
1915
TestDial, _ = dialect.GetDialect("sqlite3")
20-
}
21-
22-
func teardown() {
23-
_ = TestDB.Close()
24-
}
16+
)
2517

2618
func TestMain(m *testing.M) {
27-
setup()
19+
TestDB, _ = sql.Open("sqlite3", "gee.db")
2820
code := m.Run()
29-
teardown()
21+
_ = TestDB.Close()
3022
os.Exit(code)
3123
}
3224

@@ -35,18 +27,18 @@ func NewSession() *Session {
3527
}
3628

3729
func TestSession_Exec(t *testing.T) {
38-
_, _ = NewSession().Raw("DROP TABLE USER;").Exec()
39-
_, _ = NewSession().Raw("CREATE TABLE USER(name text);").Exec()
40-
result, _ := NewSession().Raw("INSERT INTO USER(`name`) values (?), (?)", "Tom", "Sam").Exec()
30+
_, _ = NewSession().Raw("DROP TABLE IF EXISTS User;").Exec()
31+
_, _ = NewSession().Raw("CREATE TABLE User(name text);").Exec()
32+
result, _ := NewSession().Raw("INSERT INTO User(`name`) values (?), (?)", "Tom", "Sam").Exec()
4133
if count, err := result.RowsAffected(); err != nil || count != 2 {
4234
t.Fatal("expect 2, but got", count)
4335
}
4436
}
4537

4638
func TestSession_QueryRows(t *testing.T) {
47-
_, _ = NewSession().Raw("DROP TABLE USER;").Exec()
48-
_, _ = NewSession().Raw("CREATE TABLE USER(name text);").Exec()
49-
row := NewSession().Raw("SELECT count(*) FROM USER").QueryRow()
39+
_, _ = NewSession().Raw("DROP TABLE IF EXISTS User;").Exec()
40+
_, _ = NewSession().Raw("CREATE TABLE User(name text);").Exec()
41+
row := NewSession().Raw("SELECT count(*) FROM User").QueryRow()
5042
var count int
5143
if err := row.Scan(&count); err != nil || count != 0 {
5244
t.Fatal("failed to query db", err)

‎gee-orm/day3-save-query/geeorm/session/record.go

+4-16
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,14 @@ package session
33
import (
44
"geeorm/clause"
55
"reflect"
6-
"strings"
76
)
87

98
// Create one or more records in database
109
func (s *Session) Create(values ...interface{}) (int64, error) {
11-
var flag bool
1210
recordValues := make([]interface{}, 0)
1311
for _, value := range values {
1412
table := s.RefTable(value)
15-
if !flag {
16-
flag = true
17-
fieldSQL := strings.Join(table.FieldNames, ", ")
18-
s.clause.Set(clause.INSERT, table.TableName, fieldSQL)
19-
}
13+
s.clause.Set(clause.INSERT, table.TableName, table.FieldNames)
2014
recordValues = append(recordValues, table.Values(value))
2115
}
2216

@@ -34,9 +28,7 @@ func (s *Session) Create(values ...interface{}) (int64, error) {
3428
func (s *Session) First(value interface{}) error {
3529
table := s.RefTable(value)
3630

37-
fieldSQL := strings.Join(table.FieldNames, ", ")
38-
39-
s.clause.Set(clause.SELECT, table.TableName, fieldSQL)
31+
s.clause.Set(clause.SELECT, table.TableName, table.FieldNames)
4032
s.clause.Set(clause.LIMIT, 1)
4133

4234
sql, vars := s.clause.Build([]clause.Type{clause.SELECT, clause.LIMIT})
@@ -57,8 +49,7 @@ func (s *Session) Find(values interface{}) error {
5749
destType := destSlice.Type().Elem()
5850
table := s.RefTable(reflect.New(destType).Elem().Interface())
5951

60-
fieldSQL := strings.Join(table.FieldNames, ", ")
61-
s.clause.Set(clause.SELECT, table.TableName, fieldSQL)
52+
s.clause.Set(clause.SELECT, table.TableName, table.FieldNames)
6253
sql, vars := s.clause.Build([]clause.Type{clause.SELECT})
6354
rows, err := s.Raw(sql, vars...).QueryRows()
6455
if err != nil {
@@ -76,8 +67,5 @@ func (s *Session) Find(values interface{}) error {
7667
}
7768
destSlice.Set(reflect.Append(destSlice, dest))
7869
}
79-
if err := rows.Close(); err != nil {
80-
return err
81-
}
82-
return nil
70+
return rows.Close()
8371
}

‎gee-orm/day3-save-query/geeorm/session/schema.go

+2-5
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"fmt"
55
"strings"
66

7-
"geeorm/log"
87
"geeorm/schema"
98
)
109

@@ -38,7 +37,7 @@ func (s *Session) CreateTable(value interface{}) error {
3837
// DropTable drops a table with the name of model
3938
func (s *Session) DropTable(value interface{}) error {
4039
table := s.RefTable(value)
41-
_, err := s.Raw(fmt.Sprintf("DROP TABLE %s", table.TableName)).Exec()
40+
_, err := s.Raw(fmt.Sprintf("DROP TABLE IF EXISTS %s", table.TableName)).Exec()
4241
return err
4342
}
4443

@@ -52,8 +51,6 @@ func (s *Session) HasTable(value interface{}) bool {
5251
sql, values := s.dialect.TableExistSQL(tableName)
5352
row := s.Raw(sql, values...).QueryRow()
5453
var tmp string
55-
if err := row.Scan(&tmp); err != nil {
56-
log.Error(err)
57-
}
54+
_ = row.Scan(&tmp)
5855
return tmp == tableName
5956
}

0 commit comments

Comments
 (0)
Please sign in to comment.