ops_summary_store.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package postgres
  2. import (
  3. "context"
  4. "fmt"
  5. )
  6. type OpsOverviewCounts struct {
  7. ManagedAssets int
  8. Places int
  9. MapAssets int
  10. TileReleases int
  11. CourseSets int
  12. CourseVariants int
  13. Events int
  14. DefaultEvents int
  15. PublishedEvents int
  16. ConfigSources int
  17. Releases int
  18. RuntimeBindings int
  19. Presentations int
  20. ContentBundles int
  21. OpsUsers int
  22. }
  23. func (s *Store) GetOpsOverviewCounts(ctx context.Context) (*OpsOverviewCounts, error) {
  24. row := s.pool.QueryRow(ctx, `
  25. SELECT
  26. (SELECT COUNT(*) FROM managed_assets WHERE status <> 'archived') AS managed_assets,
  27. (SELECT COUNT(*) FROM places WHERE status <> 'archived') AS places,
  28. (SELECT COUNT(*) FROM map_assets WHERE status <> 'archived') AS map_assets,
  29. (SELECT COUNT(*) FROM tile_releases WHERE status <> 'archived') AS tile_releases,
  30. (SELECT COUNT(*) FROM course_sets WHERE status <> 'archived') AS course_sets,
  31. (SELECT COUNT(*) FROM course_variants WHERE status <> 'archived') AS course_variants,
  32. (SELECT COUNT(*) FROM events WHERE status <> 'archived') AS events,
  33. (SELECT COUNT(*) FROM events WHERE status <> 'archived' AND COALESCE(is_default_experience, false)) AS default_events,
  34. (SELECT COUNT(*) FROM events WHERE status <> 'archived' AND current_release_id IS NOT NULL) AS published_events,
  35. (SELECT COUNT(*) FROM event_config_sources) AS config_sources,
  36. (SELECT COUNT(*) FROM event_releases) AS releases,
  37. (SELECT COUNT(*) FROM map_runtime_bindings WHERE status <> 'archived') AS runtime_bindings,
  38. (SELECT COUNT(*) FROM event_presentations WHERE status <> 'archived') AS presentations,
  39. (SELECT COUNT(*) FROM content_bundles WHERE status <> 'archived') AS content_bundles,
  40. (SELECT COUNT(*) FROM ops_users WHERE status <> 'deleted') AS ops_users
  41. `)
  42. var item OpsOverviewCounts
  43. if err := row.Scan(
  44. &item.ManagedAssets,
  45. &item.Places,
  46. &item.MapAssets,
  47. &item.TileReleases,
  48. &item.CourseSets,
  49. &item.CourseVariants,
  50. &item.Events,
  51. &item.DefaultEvents,
  52. &item.PublishedEvents,
  53. &item.ConfigSources,
  54. &item.Releases,
  55. &item.RuntimeBindings,
  56. &item.Presentations,
  57. &item.ContentBundles,
  58. &item.OpsUsers,
  59. ); err != nil {
  60. return nil, fmt.Errorf("get ops overview counts: %w", err)
  61. }
  62. return &item, nil
  63. }