Skip to content

Commit 3fa3085

Browse files
committed
code refactoring
1 parent f69f748 commit 3fa3085

File tree

2 files changed

+14
-22
lines changed

2 files changed

+14
-22
lines changed

oracle/migrator.go

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -484,31 +484,23 @@ func (m Migrator) DropConstraint(value interface{}, name string) error {
484484
return m.Migrator.DropConstraint(value, name)
485485
}
486486

487-
// CreateOracleType creates or replaces an Oracle user-defined type (UDT).
488-
func (m Migrator) CreateType(typeName, definition string) error {
489-
if typeName == "" || definition == "" {
487+
// CreateType creates or replaces an Oracle user-defined type.
488+
func (m Migrator) CreateType(typeName, typeKind, typeof string) error {
489+
if typeName == "" || typeKind == "" || typeof == "" {
490490
return fmt.Errorf("CreateOracleType: both typeName and definition are required")
491491
}
492492

493-
sql := fmt.Sprintf(`CREATE OR REPLACE TYPE "%s" AS %s`, strings.ToLower(typeName), definition)
493+
sql := fmt.Sprintf(`CREATE OR REPLACE TYPE "%s" AS %s OF %s`, strings.ToLower(typeName), typeKind, typeof)
494494
return m.DB.Exec(sql).Error
495495
}
496496

497-
// DropOracleType drops an Oracle user-defined type safely.
498-
func (m Migrator) Droptype(typeName string) error {
497+
// DropType drops an Oracle user-defined type safely.
498+
func (m Migrator) DropType(typeName string) error {
499499
if typeName == "" {
500500
return fmt.Errorf("DropOracleType: typeName is required")
501501
}
502502

503-
sql := fmt.Sprintf(`
504-
BEGIN
505-
EXECUTE IMMEDIATE 'DROP TYPE "%s" FORCE';
506-
EXCEPTION
507-
WHEN OTHERS THEN
508-
IF SQLCODE != -4043 THEN
509-
RAISE;
510-
END IF;
511-
END;`, strings.ToLower(typeName))
503+
sql := fmt.Sprintf(`DROP TYPE "%s";`, strings.ToLower(typeName))
512504

513505
return m.DB.Exec(sql).Error
514506
}

tests/migrate_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1985,17 +1985,17 @@ func TestOracleTypeCreateDrop(t *testing.T) {
19851985
t.Skip("Skipping: current dialect migrator is not Oracle-specific")
19861986
}
19871987

1988-
// 1️⃣ Drop type if it exists
1988+
// Drop type if it exists
19891989
t.Run("drop_existing_type_if_any", func(t *testing.T) {
1990-
err := m.Droptype(typeName)
1990+
err := m.DropType(typeName)
19911991
if err != nil && !strings.Contains(err.Error(), "ORA-04043") {
19921992
t.Fatalf("Unexpected error dropping type: %v", err)
19931993
}
19941994
})
19951995

1996-
// 2️⃣ Create new VARRAY type
1996+
// Create new VARRAY type
19971997
t.Run("create_varray_type", func(t *testing.T) {
1998-
err := m.CreateType(typeName, "VARRAY(10) OF VARCHAR2(80)")
1998+
err := m.CreateType(typeName, "VARRAY(10)", "VARCHAR2(60)")
19991999
if err != nil {
20002000
t.Fatalf("Failed to create Oracle type: %v", err)
20012001
}
@@ -2010,7 +2010,7 @@ func TestOracleTypeCreateDrop(t *testing.T) {
20102010
}
20112011
})
20122012

2013-
// 3️⃣ Create table using the custom type
2013+
// Create table using the custom type
20142014
t.Run("create_table_using_custom_type", func(t *testing.T) {
20152015
createTableSQL := fmt.Sprintf(`
20162016
CREATE TABLE "%s" (
@@ -2028,13 +2028,13 @@ func TestOracleTypeCreateDrop(t *testing.T) {
20282028
}
20292029
})
20302030

2031-
// 4️⃣ Drop table and type
2031+
// Drop table and type
20322032
t.Run("drop_table_and_type", func(t *testing.T) {
20332033
if err := m.DropTable(tableName); err != nil {
20342034
t.Fatalf("Failed to drop table %s: %v", tableName, err)
20352035
}
20362036

2037-
if err := m.Droptype(typeName); err != nil {
2037+
if err := m.DropType(typeName); err != nil {
20382038
t.Fatalf("Failed to drop type %s: %v", typeName, err)
20392039
}
20402040

0 commit comments

Comments
 (0)