30 lines
860 B
Go
30 lines
860 B
Go
package integration
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"kra/internal/integration/runtimeconfig"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// ReadRuntime returns the communication integration snapshot used by the
|
|
// long-lived MQ/WebSocket adapters.
|
|
func ReadRuntime(db *gorm.DB) ([]runtimeconfig.Config, error) {
|
|
if db == nil || !db.Migrator().HasTable(&ConfigPO{}) {
|
|
return nil, nil
|
|
}
|
|
var rows []ConfigPO
|
|
if err := db.Session(&gorm.Session{NewDB: true}).
|
|
Where("kind IN ?", []string{"mq", "websocket"}).
|
|
Order("kind ASC, provider ASC").
|
|
Find(&rows).Error; err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
|
|
return nil, err
|
|
}
|
|
configs := make([]runtimeconfig.Config, 0, len(rows))
|
|
for _, row := range rows {
|
|
configs = append(configs, runtimeconfig.Config{Kind: row.Kind, Provider: row.Provider, Enabled: row.Enabled, Values: []byte(row.Config)})
|
|
}
|
|
return configs, nil
|
|
}
|