Previews: crawler as a background service (#44891)
* add SQL migrations
* dashboard previews from sql: poc
* added todos
* refactor: use the same enums where possible
* use useEffect, always return json
* added todo
* refactor + delete files after use
* refactor + fix manual thumbnail upload
* refactor: move all interactions with sqlStore to thumbnail repo
* refactor: remove file operations in thumb crawler/service
* refactor: fix dashboard_thumbs sql store
* refactor: extracted thumbnail fetching/updating to a hook
* refactor: store thumbnails in redux store
* refactor: store thumbnails in redux store
* refactor: private'd repo methods
* removed redux storage, saving images as blobs
* allow for configurable rendering timeouts
* added 1) query for dashboards with stale thumbnails, 2) command for marking thumbnails as stale
* use sql-based queue in crawler
* ui for marking thumbnails as stale
* replaced `stale` boolean prop with `state` enum
* introduce rendering session
* compilation errors
* fix crawler stop button
* rename thumbnail state frozen to locked
* #44449: fix merge conflicts
* #44449: remove thumb methods from `Store` interface
* #44449: clean filepath, defer file closing
* #44449: fix rendering.Theme cyclic import
* #44449: linting
* #44449: linting
* #44449: mutex'd crawlerStatus access
* #44449: added integration tests for `sqlstore.dashboard_thumbs`
* #44449: added comments to explain the `ThumbnailState` enum
* #44449: use os.ReadFile rather then os.Open
* #44449: always enable dashboardPreviews feature during integration tests
* #44449: remove sleep time, adjust number of threads
* #44449: review fix: add `orgId` to `DashboardThumbnailMeta`
* #44449: review fix: automatic parsing of thumbnailState
* #44449: lint fixes
* #44449: crawler as a background service v0.1
* #44449: use ServerLockService
* #44449: use ServerLockService
* #44449: review fix: prefer `WithDbSession` over `WithTransactionalDbSession`
* #44449: review fix: add a comment explaining source of the filepath
* #44449: review fix: added filepath validation
* #44449: fix FindDashboardsWithStaleThumbnails to include `theme` and `kind` in search params
* #44449: fix FindDashboardsWithStaleThumbnails to include `theme` and `kind` in search params
* #44449: create function for crawler on demand
* #44449: improve crawler logging
* #44449: fix wire
* #44449: uncomment dummy thumb service, fix ticker interval
* #44449: prevent race condition
* #44449: improve logging
* #44449: fix theme
* #44449: review fixes https://github.com/grafana/grafana/pull/45063/files @fzambia
* #44449: add missing unlock
* #44449: merge
* #44449: review fix - logger @fzambia https://github.com/grafana/grafana/pull/45063/files
* #44449: formatting
* #44449: merge conflict fix
* #44449: merge conflict fix
* #44449: merge conflict fix
* #44449: naming fix
* #44449: update authOpts
* #44449: change authOpts.role back to admin
* #44449: fix `walk` signature, move ctx to a first argument
* #44449: add `dashboardPreviewsScheduler` feature flag
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Alexander Emelin <frvzmb@gmail.com>