diff --git a/internal/models/global_api.go b/internal/models/global_api.go index ed64826..8a3b8d0 100644 --- a/internal/models/global_api.go +++ b/internal/models/global_api.go @@ -5,6 +5,7 @@ const ( CatalogSharedEventType = "catalog_shared" CatalogUnsharedEventType = "catalog_unshared" ContextBoundEventType = "context_bound" + CatalogImportedEventType = "catalog_imported" ) // Heartbeats are emitted to the global service periodically by running natster diff --git a/natster/catalog.go b/natster/catalog.go index 1c5138e..c69c4fd 100644 --- a/natster/catalog.go +++ b/natster/catalog.go @@ -274,6 +274,9 @@ func ImportCatalog(ctx *fisk.ParseContext) error { ShareOpts.Name, ShareOpts.AccountKey, ) } + if !catFound && !mediaFound { + publishCatalogImported() + } return nil } @@ -423,6 +426,29 @@ func publishCatalogUnshared() error { return nil } +func publishCatalogImported() error { + ctx, _ := loadContext() + client, err := globalservice.NewClientWithCredsPath(ctx.CredsPath) + if err != nil { + slog.Error( + "Failed to connect to NGS", + slog.String("error", err.Error()), + ) + return err + } + err = client.PublishEvent(models.CatalogImportedEventType, ShareOpts.Name, ShareOpts.AccountKey, nil) + if err != nil { + slog.Error( + "Failed to publish catalog imported event", + slog.String("error", err.Error()), + ) + return err + } + client.Drain() + + return nil +} + func publishCatalogShared() error { ctx, _ := loadContext() client, err := globalservice.NewClientWithCredsPath(ctx.CredsPath)