blob: 6b7ef63ae23e5bf719fb85822990abf1e76ed482 (
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
|
package migrate
import (
"database/sql"
)
type stringMigration struct {
version int
sql string
}
// The Version is extracted from the filename
// It implements the Migration interface
func (sm stringMigration) Version() int {
return sm.version
}
// Run executes the migration
// It implements the Migration interface
func (sm stringMigration) Run(tx *sql.Tx) error {
_, err := tx.Exec(sm.sql)
return err
}
// NewStringMigrator creates a new set of migrations from a slice of strings
// Each one is run in a transaction.
func NewStringMigrator(db *sql.DB, src []string, opts ...Option) (*Migrator, error) {
migrations := make([]Migration, 0)
for i, s := range src {
migrations = append(migrations, stringMigration{
version: i + 1,
sql: s,
})
}
m := Migrator{db: db, migrations: migrations}
for _, opt := range opts {
if err := opt(&m); err != nil {
return nil, err
}
}
return &m, nil
}
|