feat: add library elements to dash service (#114016)

This commit is contained in:
Costa Alexoglou
2025-11-18 09:21:05 +01:00
committed by GitHub
parent d6e81c6334
commit faabe2e46d
12 changed files with 162 additions and 36 deletions
+14 -4
View File
@@ -9,8 +9,8 @@ import (
)
// Initialize provides the migrator singleton with required dependencies and builds the map of migrations.
func Initialize(dsIndexProvider schemaversion.DataSourceIndexProvider) {
migratorInstance.init(dsIndexProvider)
func Initialize(dsIndexProvider schemaversion.DataSourceIndexProvider, leIndexProvider schemaversion.LibraryElementIndexProvider) {
migratorInstance.init(dsIndexProvider, leIndexProvider)
}
// GetDataSourceIndexProvider returns the datasource index provider instance that was initialized.
@@ -20,12 +20,20 @@ func GetDataSourceIndexProvider() schemaversion.DataSourceIndexProvider {
return migratorInstance.dsIndexProvider
}
// GetLibraryElementIndexProvider returns the library element index provider instance that was initialized.
func GetLibraryElementIndexProvider() schemaversion.LibraryElementIndexProvider {
// Wait for initialization to complete
<-migratorInstance.ready
return migratorInstance.leIndexProvider
}
// ResetForTesting resets the migrator singleton for testing purposes.
func ResetForTesting() {
migratorInstance = &migrator{
migrations: map[int]schemaversion.SchemaVersionMigrationFunc{},
ready: make(chan struct{}),
dsIndexProvider: nil,
leIndexProvider: nil,
}
initOnce = sync.Once{}
}
@@ -48,12 +56,14 @@ type migrator struct {
ready chan struct{}
migrations map[int]schemaversion.SchemaVersionMigrationFunc
dsIndexProvider schemaversion.DataSourceIndexProvider
leIndexProvider schemaversion.LibraryElementIndexProvider
}
func (m *migrator) init(dsIndexProvider schemaversion.DataSourceIndexProvider) {
func (m *migrator) init(dsIndexProvider schemaversion.DataSourceIndexProvider, leIndexProvider schemaversion.LibraryElementIndexProvider) {
initOnce.Do(func() {
m.dsIndexProvider = dsIndexProvider
m.migrations = schemaversion.GetMigrations(dsIndexProvider)
m.leIndexProvider = leIndexProvider
m.migrations = schemaversion.GetMigrations(dsIndexProvider, leIndexProvider)
close(m.ready)
})
}