aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Hanley <felix@userspace.com.au>2020-02-08 10:47:16 +0000
committerFelix Hanley <felix@userspace.com.au>2020-02-08 10:47:16 +0000
commit368d26cdd6ac182ed02701fcc694d748239841d8 (patch)
tree508f4ebf5949fff00d77202669c6f0138cd8c90c
parentcf11cf76db3fc37b6635b9f5f63f262d93ba41a3 (diff)
downloadmigrate-368d26cdd6ac182ed02701fcc694d748239841d8.tar.gz
migrate-368d26cdd6ac182ed02701fcc694d748239841d8.tar.bz2
Check for zero migrationsv0.1.0
-rw-r--r--Makefile25
-rw-r--r--migrate.go20
2 files changed, 17 insertions, 28 deletions
diff --git a/Makefile b/Makefile
index e99cc0a..3750053 100644
--- a/Makefile
+++ b/Makefile
@@ -1,24 +1,13 @@
-GOPATH?= $(HOME)/go
-
.PHONY: test
-test: lint ## Run tests and create coverage report
- go test -short -coverprofile=coverage.txt -covermode=atomic ./...
- go tool cover -html=coverage.txt -o coverage.html
+test: lint
+ go test -short -coverprofile=coverage.txt -covermode=atomic ./... \
+ && go tool cover -html=coverage.txt -o coverage.html
.PHONY: lint
-lint: $(GOPATH)/bin/golint ## Run the code linter
- @for file in $$(find . -name 'vendor' -prune -o -type f -name '*.go'); do \
- golint $$file; done
-
-$(GOPATH)/bin/golint:
- go get -u golang.org/x/lint/golint
+lint:
+ go vet ./...
.PHONY: clean
-clean: ## Clean up temp files and binaries
- @rm -rf coverage*
-
-.PHONY: help
-help:
- @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) |sort \
- |awk 'BEGIN{FS=":.*?## "};{printf "\033[36m%-30s\033[0m %s\n",$$1,$$2}'
+clean:
+ rm -rf coverage*
diff --git a/migrate.go b/migrate.go
index f5838f3..9e81dd1 100644
--- a/migrate.go
+++ b/migrate.go
@@ -43,14 +43,12 @@ func (s sorted) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
// Version reports the current version of the database
func (m *Migrator) Version() (int64, error) {
- err := m.prepareForMigration()
- if err != nil {
+ if err := m.prepareForMigration(); err != nil {
return NilVersion, err
}
var version int64
- err = m.stmts["getVersion"].QueryRow().Scan(&version)
- if err != nil {
+ if err := m.stmts["getVersion"].QueryRow().Scan(&version); err != nil {
if err == sql.ErrNoRows {
return NilVersion, nil
}
@@ -61,8 +59,7 @@ func (m *Migrator) Version() (int64, error) {
// Migrate migrates the database to the highest possible version
func (m *Migrator) Migrate() error {
- err := m.prepareForMigration()
- if err != nil {
+ if err := m.prepareForMigration(); err != nil {
return err
}
@@ -73,8 +70,7 @@ func (m *Migrator) Migrate() error {
// MigrateTo migrates the database to the specified version
func (m *Migrator) MigrateTo(toVersion int64) error {
- err := m.prepareForMigration()
- if err != nil {
+ if err := m.prepareForMigration(); err != nil {
return err
}
@@ -154,17 +150,21 @@ func (m *Migrator) prepareForMigration() error {
return nil
}
+ if len(m.migrations) < 1 {
+ return fmt.Errorf("migrate: no migrations loaded")
+ }
+
if m.versionTable == nil {
vt := "schema_version"
m.versionTable = &vt
}
if _, err := m.db.Exec(fmt.Sprintf(createTableSQL, *m.versionTable)); err != nil {
- return err
+ return fmt.Errorf("migrate: failed to create version table: %w", err)
}
if err := m.prepareStmts(); err != nil {
- return err
+ return fmt.Errorf("migrate: failed to prepare statements: %w", err)
}
sort.Sort(sorted(m.migrations))