mirror of
https://github.com/Theodor-Springmann-Stiftung/musenalm.git
synced 2025-10-29 09:15:33 +00:00
BUGFIX: migration speedup
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
package migrations
|
package migrations
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"sync"
|
||||||
|
|
||||||
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
|
"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
|
||||||
"github.com/Theodor-Springmann-Stiftung/musenalm/helpers/datatypes"
|
"github.com/Theodor-Springmann-Stiftung/musenalm/helpers/datatypes"
|
||||||
"github.com/Theodor-Springmann-Stiftung/musenalm/migrations/seed"
|
"github.com/Theodor-Springmann-Stiftung/musenalm/migrations/seed"
|
||||||
@@ -18,40 +20,61 @@ func init() {
|
|||||||
|
|
||||||
adb.Reihen = xmlmodels.SanitizeReihen(adb.Reihen, adb.Relationen_Bände_Reihen)
|
adb.Reihen = xmlmodels.SanitizeReihen(adb.Reihen, adb.Relationen_Bände_Reihen)
|
||||||
|
|
||||||
agents, err := seed.RecordsFromAkteure(app, adb.Akteure)
|
var agentsmap map[string]*dbmodels.Agent
|
||||||
if err == nil {
|
var placesmap map[string]*dbmodels.Place
|
||||||
for _, record := range agents {
|
var seriesmap map[string]*dbmodels.Series
|
||||||
if err = app.Save(record); err != nil {
|
var entriesmap map[string]*dbmodels.Entry
|
||||||
app.Logger().Error("Error saving record", "error", err, "record", record)
|
var contentsmap map[string]*dbmodels.Content
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
places, err := seed.RecordsFromOrte(app, adb.Orte)
|
wg := sync.WaitGroup{}
|
||||||
if err == nil {
|
wg.Add(3)
|
||||||
for _, record := range places {
|
|
||||||
if err = app.Save(record); err != nil {
|
|
||||||
app.Logger().Error("Error saving record", "error", err, "record", record)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
placesmap := datatypes.MakeMap(places, func(record *dbmodels.Place) string { return record.Name() })
|
go func() {
|
||||||
|
agents, err := seed.RecordsFromAkteure(app, adb.Akteure)
|
||||||
series, err := seed.RecordsFromReihentitel(app, adb.Reihen)
|
if err == nil {
|
||||||
if err == nil {
|
for _, record := range agents {
|
||||||
for _, record := range series {
|
if err = app.Save(record); err != nil {
|
||||||
if err = app.Save(record); err != nil {
|
app.Logger().Error("Error saving record", "error", err, "record", record)
|
||||||
app.Logger().Error("Error saving record", "error", err, "record", record)
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
panic(err)
|
||||||
}
|
}
|
||||||
} else {
|
agentsmap = datatypes.MakeMap(agents, func(record *dbmodels.Agent) string { return record.MusenalmID() })
|
||||||
panic(err)
|
wg.Done()
|
||||||
}
|
}()
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
places, err := seed.RecordsFromOrte(app, adb.Orte)
|
||||||
|
if err == nil {
|
||||||
|
for _, record := range places {
|
||||||
|
if err = app.Save(record); err != nil {
|
||||||
|
app.Logger().Error("Error saving record", "error", err, "record", record)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
placesmap = datatypes.MakeMap(places, func(record *dbmodels.Place) string { return record.Name() })
|
||||||
|
wg.Done()
|
||||||
|
}()
|
||||||
|
|
||||||
|
go func() {
|
||||||
|
series, err := seed.RecordsFromReihentitel(app, adb.Reihen)
|
||||||
|
if err == nil {
|
||||||
|
for _, record := range series {
|
||||||
|
if err = app.Save(record); err != nil {
|
||||||
|
app.Logger().Error("Error saving record", "error", err, "record", record)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
seriesmap = datatypes.MakeMap(series, func(record *dbmodels.Series) string { return record.MusenalmID() })
|
||||||
|
wg.Done()
|
||||||
|
}()
|
||||||
|
|
||||||
|
wg.Wait()
|
||||||
|
|
||||||
entries, err := seed.RecordsFromBände(app, *adb, placesmap)
|
entries, err := seed.RecordsFromBände(app, *adb, placesmap)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
@@ -64,62 +87,82 @@ func init() {
|
|||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
entriesmap := datatypes.MakeMap(entries, func(record *dbmodels.Entry) string { return record.MusenalmID() })
|
entriesmap = datatypes.MakeMap(entries, func(record *dbmodels.Entry) string { return record.MusenalmID() })
|
||||||
|
|
||||||
if records, err := seed.ItemsFromBändeAndBIBLIO(app, adb.Bände, adb.BIBLIO, entriesmap); err == nil {
|
wg.Add(2)
|
||||||
for _, record := range records {
|
|
||||||
if err = app.Save(record); err != nil {
|
go func() {
|
||||||
app.Logger().Error("Error saving record", "error", err, "record", record)
|
if records, err := seed.ItemsFromBändeAndBIBLIO(app, adb.Bände, adb.BIBLIO, entriesmap); err == nil {
|
||||||
|
for _, record := range records {
|
||||||
|
if err = app.Save(record); err != nil {
|
||||||
|
app.Logger().Error("Error saving record", "error", err, "record", record)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
panic(err)
|
||||||
}
|
}
|
||||||
} else {
|
wg.Done()
|
||||||
panic(err)
|
}()
|
||||||
}
|
|
||||||
|
|
||||||
contents, err := seed.RecordsFromInhalte(app, adb.Inhalte, entriesmap)
|
go func() {
|
||||||
if err == nil {
|
contents, err := seed.RecordsFromInhalte(app, adb.Inhalte, entriesmap)
|
||||||
for _, record := range contents {
|
if err == nil {
|
||||||
if err = app.Save(record); err != nil {
|
for _, record := range contents {
|
||||||
app.Logger().Error("Error saving record", "error", err, "record", record)
|
if err = app.Save(record); err != nil {
|
||||||
|
app.Logger().Error("Error saving record", "error", err, "record", record)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
panic(err)
|
||||||
}
|
}
|
||||||
} else {
|
contentsmap = datatypes.MakeMap(contents, func(record *dbmodels.Content) string { return record.MusenalmID() })
|
||||||
panic(err)
|
wg.Done()
|
||||||
}
|
}()
|
||||||
|
|
||||||
seriesmap := datatypes.MakeMap(series, func(record *dbmodels.Series) string { return record.MusenalmID() })
|
wg.Wait()
|
||||||
agentsmap := datatypes.MakeMap(agents, func(record *dbmodels.Agent) string { return record.MusenalmID() })
|
|
||||||
contentsmap := datatypes.MakeMap(contents, func(record *dbmodels.Content) string { return record.MusenalmID() })
|
|
||||||
|
|
||||||
if records, err := seed.RecordsFromRelationBändeReihen(app, adb.Relationen_Bände_Reihen, seriesmap, entriesmap); err == nil {
|
wg.Add(3)
|
||||||
for _, record := range records {
|
|
||||||
if err := app.Save(record); err != nil {
|
go func() {
|
||||||
app.Logger().Error("Error saving record", "error", err, "record", record)
|
if records, err := seed.RecordsFromRelationBändeReihen(app, adb.Relationen_Bände_Reihen, seriesmap, entriesmap); err == nil {
|
||||||
|
for _, record := range records {
|
||||||
|
if err := app.Save(record); err != nil {
|
||||||
|
app.Logger().Error("Error saving record", "error", err, "record", record)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
panic(err)
|
||||||
}
|
}
|
||||||
} else {
|
wg.Done()
|
||||||
panic(err)
|
}()
|
||||||
}
|
|
||||||
|
|
||||||
if records, err := seed.RecordsFromRelationBändeAkteure(app, adb.Relationen_Bände_Akteure, entriesmap, agentsmap); err == nil {
|
go func() {
|
||||||
for _, record := range records {
|
if records, err := seed.RecordsFromRelationBändeAkteure(app, adb.Relationen_Bände_Akteure, entriesmap, agentsmap); err == nil {
|
||||||
if err := app.Save(record); err != nil {
|
for _, record := range records {
|
||||||
app.Logger().Error("Error saving record", "error", err, "record", record)
|
if err := app.Save(record); err != nil {
|
||||||
|
app.Logger().Error("Error saving record", "error", err, "record", record)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
panic(err)
|
||||||
}
|
}
|
||||||
} else {
|
wg.Done()
|
||||||
panic(err)
|
}()
|
||||||
}
|
|
||||||
|
|
||||||
if records, err := seed.RecordsFromRelationInhalteAkteure(app, adb.Relationen_Inhalte_Akteure, contentsmap, agentsmap); err == nil {
|
go func() {
|
||||||
for _, record := range records {
|
if records, err := seed.RecordsFromRelationInhalteAkteure(app, adb.Relationen_Inhalte_Akteure, contentsmap, agentsmap); err == nil {
|
||||||
if err := app.Save(record); err != nil {
|
for _, record := range records {
|
||||||
app.Logger().Error("Error saving record", "error", err, "record", record)
|
if err := app.Save(record); err != nil {
|
||||||
|
app.Logger().Error("Error saving record", "error", err, "record", record)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
panic(err)
|
||||||
}
|
}
|
||||||
} else {
|
wg.Done()
|
||||||
panic(err)
|
}()
|
||||||
}
|
|
||||||
|
wg.Wait()
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}, func(app core.App) error {
|
}, func(app core.App) error {
|
||||||
|
|||||||
Reference in New Issue
Block a user