aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 5b3f403ebdc5bf67223ad1f0ff3fa0f4989b0db5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# Go migrations

![build status](https://api.travis-ci.org/felix/go-migrate.svg?branch=master)

A very simple migration library for your Go projects.

```go
import "github.com/felix/go-migrate"
```

or

```go
import "src.userspace.com.au/felix/go-migrate"
```

## Features

- Any database/sql drivers should work. See https://github.com/golang/go/wiki/SQLDrivers

- Each migration is run in a transaction so there should be no 'dirty' state.

- Only migrates "up". I have never used a "down" migration.

- Enables a callback function to suit whatever logging implementation you choose.

## Usage

```go
db, err := sql.Open("pgx", uri)
//db, err := sql.Open("sqlite3", uri)
if err != nil {
    return err
}
defer db.Close()

// Relative path to migration files
migrator, err := migrate.NewFileMigrator(db, "file://migrations/")
if err != nil {
    return fmt.Errorf("failed to create migrator: %s", err)
}

// Migrate all the way
err = migrator.Migrate()
if err != nil {
    return fmt.Errorf("failed to migrate: %s", err)
}

v, err := migrator.Version()
fmt.Printf("database at version %d\n", v)
```