Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
1.8 kB · 84 lines
Go
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485package statedb
import ( "context" "os" "time"
"github.com/lmittmann/tint" slogGorm "github.com/orandin/slog-gorm" "github.com/streamplace/oatproxy/pkg/oatproxy" "gorm.io/driver/sqlite" "gorm.io/gorm" "stream.place/streamplace/pkg/config" "stream.place/streamplace/pkg/log" "stream.place/streamplace/pkg/model")
func Migrate(cli *config.CLI) error { gormLogger := slogGorm.New( slogGorm.WithHandler(tint.NewHandler(os.Stderr, &tint.Options{ TimeFormat: time.RFC3339, })), // slogGorm.WithTraceAll(), )
newDB, err := MakeDB(context.Background(), cli, nil, nil) if err != nil { return err }
oldDB, err := gorm.Open(sqlite.Open(cli.DataFilePath([]string{"db.sqlite"})), &gorm.Config{ Logger: gormLogger, }) if err != nil { return err }
var sessions []oatproxy.OAuthSession if err := oldDB.Find(&sessions).Error; err != nil { return err }
for _, session := range sessions { log.Log(context.Background(), "migrating session", "session", session.DownstreamDPoPJKT) err := newDB.DB.Save(&session).Error if err != nil { return err } }
var notifications []Notification if err := oldDB.Find(¬ifications).Error; err != nil { time.Sleep(1 * time.Second) return err }
for _, notification := range notifications { log.Log(context.Background(), "migrating notification", "notification", notification) err := newDB.DB.Save(¬ification).Error if err != nil { return err } }
var repos []model.Repo if err := oldDB.Find(&repos).Error; err != nil { time.Sleep(1 * time.Second) return err }
for _, repo := range repos { newRepo := Repo{ DID: repo.DID, IndexedAt: time.Now().UTC(), } log.Log(context.Background(), "migrating repo", "repo", repo) err := newDB.DB.Save(&newRepo).Error if err != nil { return err } }
return nil}