/
migrationsController.go
63 lines (54 loc) · 1.51 KB
/
migrationsController.go
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
53
54
55
56
57
58
59
60
61
62
63
package migrations
import (
"database/sql"
"log"
"github.com/LucaBernstein/beancount-bot-tg/db/migrations/generic"
"github.com/LucaBernstein/beancount-bot-tg/db/migrations/postgres"
"github.com/LucaBernstein/beancount-bot-tg/db/migrations/sqlite"
)
type MigrationProvider interface {
Schema(*sql.DB) int
V1(*sql.Tx)
V2(*sql.Tx)
V3(*sql.Tx)
V4(*sql.Tx)
V5(*sql.Tx)
V6(*sql.Tx)
V7(*sql.Tx)
V8(*sql.Tx)
V9(*sql.Tx)
V10(*sql.Tx)
V11(*sql.Tx)
V12(*sql.Tx)
V13(*sql.Tx)
V14(*sql.Tx)
}
func migrate(db *sql.DB, m MigrationProvider) {
originalSchema := m.Schema(db)
log.Printf("DB schema before migrations: %d", originalSchema)
migrationsWrapper := generic.MigrationsWrapper{
SchemaFn: m.Schema,
}
// Insert all migrations here:
migrationsWrapper.Migrate(m.V1, 1)(db)
migrationsWrapper.Migrate(m.V2, 2)(db)
migrationsWrapper.Migrate(m.V3, 3)(db)
migrationsWrapper.Migrate(m.V4, 4)(db)
migrationsWrapper.Migrate(m.V5, 5)(db)
migrationsWrapper.Migrate(m.V6, 6)(db)
migrationsWrapper.Migrate(m.V7, 7)(db)
migrationsWrapper.Migrate(m.V8, 8)(db)
migrationsWrapper.Migrate(m.V9, 9)(db)
migrationsWrapper.Migrate(m.V10, 10)(db)
migrationsWrapper.Migrate(m.V11, 11)(db)
migrationsWrapper.Migrate(m.V12, 12)(db)
migrationsWrapper.Migrate(m.V13, 13)(db)
migrationsWrapper.Migrate(m.V14, 14)(db)
log.Printf("Migrations ran through. Schema version: %d", m.Schema(db))
}
func MigratePostgres(db *sql.DB) {
migrate(db, &postgres.Controller{})
}
func MigrateSqlite(db *sql.DB) {
migrate(db, &sqlite.Controller{})
}