Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor: remove outdated error pkg #4

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions go.mod
Original file line number Diff line number Diff line change
@@ -7,11 +7,10 @@ require (
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf // indirect
github.com/manifoldco/promptui v0.3.2
github.com/nicksnyder/go-i18n v1.10.1 // indirect
github.com/pkg/errors v0.8.1
github.com/stretchr/testify v1.4.0
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f // indirect
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138 // indirect
gopkg.in/alecthomas/kingpin.v3-unstable v3.0.0-20191105091915-95d230a53780 // indirect
gopkg.in/yaml.v2 v2.2.8
gopkg.in/yaml.v2 v2.2.2
gorm.io/gorm v1.21.15
)
5 changes: 1 addition & 4 deletions go.sum
Original file line number Diff line number Diff line change
@@ -44,8 +44,6 @@ github.com/nicksnyder/go-i18n v1.10.1 h1:isfg77E/aCD7+0lD/D00ebR2MV5vgeQ276WYyDa
github.com/nicksnyder/go-i18n v1.10.1/go.mod h1:e4Di5xjP9oTVrC6y3C7C0HoSYXjSbhh/dU0eUV32nB4=
github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc=
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -72,8 +70,7 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gorm.io/gorm v1.21.15 h1:gAyaDoPw0lCyrSFWhBlahbUA1U4P5RViC1uIqoB+1Rk=
gorm.io/gorm v1.21.15/go.mod h1:F+OptMscr0P2F2qU97WT1WimdH9GaQPoDW7AYd5i2Y0=
7 changes: 3 additions & 4 deletions migrate/create_connection.go
Original file line number Diff line number Diff line change
@@ -2,11 +2,10 @@ package migrate

import (
"bytes"
"fmt"
"io/ioutil"
"os"
"text/template"

"github.com/pkg/errors"
)

type tmplData struct {
@@ -61,7 +60,7 @@ func NewDB() (*gorm.DB, error) {
connectionFileStringBuffer.Bytes(),
os.ModePerm,
); err != nil {
return "", errors.Wrap(err, "Create connection failed.")
return "", fmt.Errorf("%v (%v)", "Create connection failed.", err.Error())
}

if err := RemovePlugin(targetFileName); err != nil {
@@ -74,7 +73,7 @@ func NewDB() (*gorm.DB, error) {

if os.Getenv("DEBUG_CONNECTION") != "true" {
if err := os.Remove(tmpFile); err != nil {
return "", errors.Wrap(err, "Remove temp file failed")
return "", fmt.Errorf("%v (%v)", "Remove temp file failed", err.Error())
}
}

9 changes: 4 additions & 5 deletions migrate/create_migration.go
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
package migrate

import (
"fmt"
"io/ioutil"
"os"
"time"

"github.com/pkg/errors"
)

// CreateMigration - Create the migration file with template.
func CreateMigration(purpose string) (string, error) {
if purpose == "" {
return "", errors.New("Missing purpose when creating migration")
return "", ErrEmptyPurpose
}

// Create migration folder anyway.
@@ -41,7 +40,7 @@ var Migration migration`
targetFileName := MigrationTargetFolder + "/" + time.Now().Format("20060102150405") + "_" + purpose + ".go"

if fileExists(targetFileName) {
return "", errors.New("Migration exists")
return "", ErrDuplicatedMigration
}

err := ioutil.WriteFile(
@@ -51,7 +50,7 @@ var Migration migration`
)

if err != nil {
return "", errors.Wrap(err, "Create migration failed.")
return "", fmt.Errorf("%v (%v)", "Create migration failed.", err.Error())
}

return targetFileName, nil
11 changes: 6 additions & 5 deletions migrate/down_migrate.go
Original file line number Diff line number Diff line change
@@ -6,7 +6,6 @@ import (
"strconv"

"github.com/manifoldco/promptui"
"github.com/pkg/errors"
"gorm.io/gorm"
)

@@ -23,11 +22,13 @@ func DownMigration(db *gorm.DB, files []os.FileInfo, step int64) error {
result, err := prompt.Run()

if err != nil || result != "Yes" {
return errors.New("Rollback migration canceled")
return ErrMigrationCanceled
}

var metas []GormMeta
db.Order("ID desc").Limit(int(step)).Find(&metas)
if err := db.Order("ID desc").Limit(int(step)).Find(&metas).Error; err != nil {
return err
}

for i, meta := range metas {
pluginName, err := BuildPlugin(meta.Name)
@@ -38,11 +39,11 @@ func DownMigration(db *gorm.DB, files []os.FileInfo, step int64) error {

migration, err := getMigration(pluginName)
if err != nil {
return errors.Wrap(err, "Load migration plugin failed")
return err
}

if err := migration.Down(db); err != nil {
return errors.Wrap(err, "Rollback failed."+meta.Name)
return err
}

fmt.Println("Rollbacked.", i, meta.Name)
11 changes: 11 additions & 0 deletions migrate/error.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package migrate

import (
"errors"
)

var (
ErrMigrationCanceled = errors.New("rollback migration canceled")
ErrEmptyPurpose = errors.New("missing purpose when creating migration")
ErrDuplicatedMigration = errors.New("migration exists")
)
13 changes: 9 additions & 4 deletions migrate/up_migrate.go
Original file line number Diff line number Diff line change
@@ -5,7 +5,8 @@ import (
"os"
"strings"

"github.com/pkg/errors"
"errors"

"gorm.io/gorm"
)

@@ -23,18 +24,22 @@ func UpMigrate(db *gorm.DB, files []os.FileInfo) error {
continue
}

if !errors.Is(err, gorm.ErrRecordNotFound) {
return err
}

pluginName, err := BuildPlugin(file.Name())
if err != nil {
return errors.Wrap(err, "Build plugin failed.")
return fmt.Errorf("%v (%v)", "Build plugin failed.", err.Error())
}

migration, err := getMigration(pluginName)
if err != nil {
return errors.Wrap(err, "Load migration plugin failed")
return fmt.Errorf("%v (%v)", "Load migration plugin failed", err.Error())
}

if err := migration.Up(db); err != nil {
return errors.Wrap(err, "Migrate failed."+file.Name())
return fmt.Errorf("%v (%v)", "Migrate failed."+file.Name(), err.Error())
}

fmt.Println("Migrated.", i, file.Name())
9 changes: 4 additions & 5 deletions migrate/util.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package migrate

import (
"fmt"
"os"
"os/exec"
"plugin"
"strings"

"github.com/pkg/errors"
)

func fileExists(filename string) bool {
@@ -51,12 +50,12 @@ func BuildPlugin(goFileName string) (string, error) {
func getPlugin(pluginName string, symbolTarget string) (plugin.Symbol, error) {
plug, err := plugin.Open(MigrationTargetFolder + "/.plugins/" + pluginName)
if err != nil {
return nil, errors.Wrap(err, "Open plugin filed.")
return nil, fmt.Errorf("%v (%v)", "Open plugin filed.", err.Error())
}

s, err := plug.Lookup(symbolTarget)
if err != nil {
return nil, errors.Wrap(err, symbolTarget+"wrong format - missing "+symbolTarget+" declaration.")
return nil, fmt.Errorf("%v (%v)", symbolTarget+"wrong format - missing "+symbolTarget+" declaration.", err.Error())
}

return s, nil
@@ -71,7 +70,7 @@ func getMigration(pluginName string) (Migration, error) {
var migration Migration
migration, ok := s.(Migration)
if !ok {
return nil, errors.Wrap(err, "Unexpected type from module symbol.")
return nil, fmt.Errorf("%v (%v)", "Unexpected type from module symbol.", err.Error())
}
return migration, nil
}
3 changes: 1 addition & 2 deletions migrate/util_test.go
Original file line number Diff line number Diff line change
@@ -16,11 +16,10 @@ func TestMain(m *testing.M) {
t := MigrationTargetFolder + "/" + n

f, err := os.Create(t)
defer f.Close()

if err != nil {
panic(err)
}
defer f.Close()

if _, err := f.WriteString("package main"); err != nil {
panic(err)