MCPcopy
hub / github.com/writefreely/writefreely / Migrate

Function Migrate

migrations/migrations.go:91–132  ·  view source on GitHub ↗
(db *datastore)

Source from the content-addressed store, hash-verified

89}
90
91func Migrate(db *datastore) error {
92 var version int
93 var err error
94 if db.tableExists("appmigrations") {
95 err = db.QueryRow("SELECT MAX(version) FROM appmigrations").Scan(&version)
96 if err != nil {
97 return err
98 }
99 } else {
100 log.Info("Initializing appmigrations table...")
101 version = 0
102 _, err = db.Exec(`CREATE TABLE appmigrations (
103 version ` + db.typeInt() + ` NOT NULL,
104 migrated ` + db.typeDateTime() + ` NOT NULL,
105 result ` + db.typeText() + ` NOT NULL
106 ) ` + db.engine() + `;`)
107 if err != nil {
108 return err
109 }
110 }
111
112 if len(migrations[version:]) > 0 {
113 for i, m := range migrations[version:] {
114 curVer := version + i + 1
115 log.Info("Migrating to V%d: %s", curVer, m.Description())
116 err = m.Migrate(db)
117 if err != nil {
118 return err
119 }
120
121 // Update migrations table
122 _, err = db.Exec("INSERT INTO appmigrations (version, migrated, result) VALUES (?, "+db.now()+", ?)", curVer, "")
123 if err != nil {
124 return err
125 }
126 }
127 } else {
128 log.Info("Database up-to-date. No migrations to run.")
129 }
130
131 return nil
132}
133
134func (db *datastore) tableExists(t string) bool {
135 var dummy string

Callers 2

MigrateFunction · 0.92
adminInitDatabaseFunction · 0.92

Calls 8

tableExistsMethod · 0.80
typeIntMethod · 0.80
typeDateTimeMethod · 0.80
typeTextMethod · 0.80
engineMethod · 0.80
DescriptionMethod · 0.65
MigrateMethod · 0.65
nowMethod · 0.45

Tested by

no test coverage detected