Skip to content

Commit c273226

Browse files
committed
update test cases
1 parent 33bbfbc commit c273226

File tree

9 files changed

+118
-176
lines changed

9 files changed

+118
-176
lines changed

database/schema/mysql_schema.go

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,25 @@ func (r *MysqlSchema) DropAllTables() error {
3636
return nil
3737
}
3838

39-
if _, err = r.orm.Query().Exec(r.grammar.CompileDisableForeignKeyConstraints()); err != nil {
40-
return err
41-
}
39+
return r.orm.Transaction(func(tx orm.Query) error {
40+
if _, err = tx.Exec(r.grammar.CompileDisableForeignKeyConstraints()); err != nil {
41+
return err
42+
}
43+
44+
var dropTables []string
45+
for _, table := range tables {
46+
dropTables = append(dropTables, table.Name)
47+
}
48+
if _, err = tx.Exec(r.grammar.CompileDropAllTables(dropTables)); err != nil {
49+
return err
50+
}
51+
52+
if _, err = tx.Exec(r.grammar.CompileEnableForeignKeyConstraints()); err != nil {
53+
return err
54+
}
4255

43-
var dropTables []string
44-
for _, table := range tables {
45-
dropTables = append(dropTables, table.Name)
46-
}
47-
if _, err = r.orm.Query().Exec(r.grammar.CompileDropAllTables(dropTables)); err != nil {
4856
return err
49-
}
50-
51-
if _, err = r.orm.Query().Exec(r.grammar.CompileEnableForeignKeyConstraints()); err != nil {
52-
return err
53-
}
54-
55-
return err
57+
})
5658
}
5759

5860
func (r *MysqlSchema) DropAllTypes() error {

database/schema/postgres_schema.go

Lines changed: 17 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,11 @@ package schema
22

33
import (
44
"fmt"
5-
"slices"
6-
"strings"
7-
85
"github.com/goravel/framework/contracts/database/orm"
96
contractsschema "github.com/goravel/framework/contracts/database/schema"
107
"github.com/goravel/framework/database/schema/grammars"
118
"github.com/goravel/framework/database/schema/processors"
9+
"slices"
1210
)
1311

1412
type PostgresSchema struct {
@@ -81,19 +79,21 @@ func (r *PostgresSchema) DropAllTypes() error {
8179
}
8280
}
8381

84-
if len(dropTypes) > 0 {
85-
if _, err := r.orm.Query().Exec(r.grammar.CompileDropAllTypes(dropTypes)); err != nil {
86-
return err
82+
return r.orm.Transaction(func(tx orm.Query) error {
83+
if len(dropTypes) > 0 {
84+
if _, err := tx.Exec(r.grammar.CompileDropAllTypes(dropTypes)); err != nil {
85+
return err
86+
}
8787
}
88-
}
8988

90-
if len(dropDomains) > 0 {
91-
if _, err := r.orm.Query().Exec(r.grammar.CompileDropAllDomains(dropDomains)); err != nil {
92-
return err
89+
if len(dropDomains) > 0 {
90+
if _, err := tx.Exec(r.grammar.CompileDropAllDomains(dropDomains)); err != nil {
91+
return err
92+
}
9393
}
94-
}
9594

96-
return nil
95+
return nil
96+
})
9797
}
9898

9999
func (r *PostgresSchema) DropAllViews() error {
@@ -121,7 +121,11 @@ func (r *PostgresSchema) DropAllViews() error {
121121
}
122122

123123
func (r *PostgresSchema) GetIndexes(table string) ([]contractsschema.Index, error) {
124-
schema, table := r.parseSchemaAndTable(table)
124+
schema, table, err := parseSchemaAndTable(table, r.schema)
125+
if err != nil {
126+
return nil, err
127+
}
128+
125129
table = r.prefix + table
126130

127131
var dbIndexes []processors.DBIndex
@@ -140,16 +144,3 @@ func (r *PostgresSchema) GetTypes() ([]contractsschema.Type, error) {
140144

141145
return r.processor.ProcessTypes(types), nil
142146
}
143-
144-
func (r *PostgresSchema) parseSchemaAndTable(reference string) (schema, table string) {
145-
parts := strings.Split(reference, ".")
146-
schema = r.schema
147-
if len(parts) == 2 {
148-
schema = parts[0]
149-
parts = parts[1:]
150-
}
151-
152-
table = parts[0]
153-
154-
return
155-
}

database/schema/postgres_schema_test.go

Lines changed: 0 additions & 59 deletions
This file was deleted.

database/schema/sqlite_schema.go

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -48,20 +48,22 @@ func (r *SqliteSchema) DropAllTypes() error {
4848
}
4949

5050
func (r *SqliteSchema) DropAllViews() error {
51-
if _, err := r.orm.Query().Exec(r.grammar.CompileEnableWriteableSchema()); err != nil {
52-
return err
53-
}
54-
if _, err := r.orm.Query().Exec(r.grammar.CompileDropAllViews(nil)); err != nil {
55-
return err
56-
}
57-
if _, err := r.orm.Query().Exec(r.grammar.CompileDisableWriteableSchema()); err != nil {
58-
return err
59-
}
60-
if _, err := r.orm.Query().Exec(r.grammar.CompileRebuild()); err != nil {
61-
return err
62-
}
51+
return r.orm.Transaction(func(tx orm.Query) error {
52+
if _, err := tx.Exec(r.grammar.CompileEnableWriteableSchema()); err != nil {
53+
return err
54+
}
55+
if _, err := tx.Exec(r.grammar.CompileDropAllViews(nil)); err != nil {
56+
return err
57+
}
58+
if _, err := tx.Exec(r.grammar.CompileDisableWriteableSchema()); err != nil {
59+
return err
60+
}
61+
if _, err := tx.Exec(r.grammar.CompileRebuild()); err != nil {
62+
return err
63+
}
6364

64-
return nil
65+
return nil
66+
})
6567
}
6668

6769
func (r *SqliteSchema) GetIndexes(table string) ([]schema.Index, error) {

database/schema/sqlserver_schema.go

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package schema
22

33
import (
4-
"strings"
5-
64
"github.com/goravel/framework/contracts/database/orm"
75
contractsschema "github.com/goravel/framework/contracts/database/schema"
86
"github.com/goravel/framework/database/schema/grammars"
@@ -51,7 +49,11 @@ func (r *SqlserverSchema) DropAllViews() error {
5149
}
5250

5351
func (r *SqlserverSchema) GetIndexes(table string) ([]contractsschema.Index, error) {
54-
schema, table := r.parseSchemaAndTable(table)
52+
schema, table, err := parseSchemaAndTable(table, "")
53+
if err != nil {
54+
return nil, err
55+
}
56+
5557
table = r.prefix + table
5658

5759
var dbIndexes []processors.DBIndex
@@ -65,15 +67,3 @@ func (r *SqlserverSchema) GetIndexes(table string) ([]contractsschema.Index, err
6567
func (r *SqlserverSchema) GetTypes() ([]contractsschema.Type, error) {
6668
return nil, nil
6769
}
68-
69-
func (r *SqlserverSchema) parseSchemaAndTable(reference string) (schema, table string) {
70-
parts := strings.Split(reference, ".")
71-
if len(parts) == 2 {
72-
schema = parts[0]
73-
parts = parts[1:]
74-
}
75-
76-
table = parts[0]
77-
78-
return
79-
}

database/schema/sqserver_schema_test.go

Lines changed: 0 additions & 44 deletions
This file was deleted.

database/schema/utils.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package schema
2+
3+
import (
4+
"strings"
5+
6+
"github.com/goravel/framework/errors"
7+
)
8+
9+
func parseSchemaAndTable(reference, defaultSchema string) (string, string, error) {
10+
if reference == "" {
11+
return "", "", errors.SchemaEmptyReferenceString
12+
}
13+
14+
parts := strings.Split(reference, ".")
15+
if len(parts) > 2 {
16+
return "", "", errors.SchemaErrorReferenceFormat
17+
}
18+
19+
schema := defaultSchema
20+
if len(parts) == 2 {
21+
schema = parts[0]
22+
parts = parts[1:]
23+
}
24+
25+
table := parts[0]
26+
27+
return schema, table, nil
28+
}

database/schema/utils_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package schema
2+
3+
import (
4+
"testing"
5+
6+
"github.com/goravel/framework/errors"
7+
"github.com/stretchr/testify/assert"
8+
)
9+
10+
func TestParseSchemaAndTable(t *testing.T) {
11+
tests := []struct {
12+
reference string
13+
defaultSchema string
14+
expectedSchema string
15+
expectedTable string
16+
expectedError error
17+
}{
18+
{"public.users", "public", "public", "users", nil},
19+
{"users", "goravel", "goravel", "users", nil},
20+
{"", "", "", "", errors.SchemaEmptyReferenceString},
21+
{"public.users.extra", "", "", "", errors.SchemaErrorReferenceFormat},
22+
}
23+
24+
for _, test := range tests {
25+
schema, table, err := parseSchemaAndTable(test.reference, test.defaultSchema)
26+
assert.Equal(t, test.expectedSchema, schema)
27+
assert.Equal(t, test.expectedTable, table)
28+
assert.Equal(t, test.expectedError, err)
29+
}
30+
}

errors/list.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,12 @@ var (
112112
RouteDefaultDriverNotSet = New("please set default driver")
113113
RouteInvalidDriver = New("init %s route driver fail: route must be implement route.Route or func() (route.Route, error)")
114114

115-
SchemaDriverNotSupported = New("driver %s is not supported")
116-
SchemaFailedToCreateTable = New("failed to create %s table: %v")
117-
SchemaFailedToDropTable = New("failed to drop %s table: %v")
118-
SchemaFailedToGetTables = New("failed to get %s tables: %v")
115+
SchemaDriverNotSupported = New("driver %s is not supported")
116+
SchemaFailedToCreateTable = New("failed to create %s table: %v")
117+
SchemaFailedToDropTable = New("failed to drop %s table: %v")
118+
SchemaFailedToGetTables = New("failed to get %s tables: %v")
119+
SchemaEmptyReferenceString = New("reference string can't be empty")
120+
SchemaErrorReferenceFormat = New("invalid format: too many dots in reference")
119121

120122
SessionDriverAlreadyExists = New("session driver [%s] already exists")
121123
SessionDriverExtensionFailed = New("session failed to extend session [%s] driver [%v]")

0 commit comments

Comments
 (0)