0c2188c4d4
fix(api): continue crawling when access token refresh fails for one user
2021-05-20 19:19:24 +02:00
879c6a62e2
feat: add optional basic auth for metrics endpoint
2020-12-06 03:03:33 +01:00
66fd6ce1b4
feat(api): custom spotify crawler interval
2020-11-28 18:28:38 +01:00
97f5ef70ac
refactor(api): improve function naming in spotify source
2020-11-28 17:56:49 +01:00
5ca3437b59
fix(api): missed listens from spotify
...
Listory could miss some listens when the Spotify Api misbehaves.
Sometimes the listens added to the last-recently-played endpoint
are showing up are out-of-order.
Because of our optimization to only retrieve listens newer than
the lastRefreshTime we would skip retrieving those out-of-order listens.
By always retrieving the maximum 50 listens we can be reasonably
sure that we got all the listens.
We also had to improve the handling of duplicate listens, as we now
have a lot of them, curtesy of removing the lastRefreshTime
optimization.
2020-11-28 17:55:19 +01:00
e2056b4734
feat(api): add prometheus metrics
...
Currently we support metrics for the Node.js runtime and HTTP endpoints.
2020-11-21 19:55:53 +01:00
9869f0a061
refactor(api): improve logging around spotify crawling loop
2020-11-21 17:43:04 +01:00
fcc2f7d1b6
fix(api): db error on duplicate music library import
...
When the spotify crawler loop would import an artist multiple
times in parallel the first would succeed but the following queries
would throw with following exception:
QueryFailedError: duplicate key value violates unique constraint "IDX_ARTIST_SPOTIFY_ID"
This error also could happen for the album or track.
2020-11-21 17:00:33 +01:00
49b31e8e62
fix(api): exception after refreshing spotify access token
2020-11-18 21:13:16 +01:00
56db4cd2e1
feat(api): setup optional sentry error reporting
2020-11-17 22:26:08 +01:00
9896ea31ff
feat: introduce new report "Top Albums"
2020-11-15 02:43:23 +01:00
09858076bf
refactor(api): optimize imports
2020-11-15 02:37:01 +01:00
427964f255
refactor(api): remove unused constant
2020-11-15 02:36:44 +01:00
44f7e26270
feat: implement long-lived sessions
2020-11-09 18:34:23 +01:00
5fb8a99a56
refactor: fix import relative paths
2020-09-05 21:07:05 +02:00
fb9b83d440
fix(server): improve listens report response time
...
Do not unnecessarily join too many relations
2020-07-12 17:53:31 +02:00
67ea28aec7
refactor: use TimeOptions for Listens report
2020-07-12 17:53:31 +02:00
5bc76f23d0
refator: use TimeOptions for TopArtists report
2020-07-12 17:53:31 +02:00
ad0d197105
refactor(server): do not export listen repository to outside modules
2020-07-12 17:53:31 +02:00
11af91cadb
refactor(server): introduce scoped query builders for recurring filters
2020-07-12 17:53:31 +02:00
f56218602e
fix: remove debug logging
2020-07-11 19:48:18 +02:00
aecc82576a
fix: improve top-artists response time
...
By calculating the necessary counts in the database, we avoid
unncessary joins and data transmissions.
2020-07-11 19:35:36 +02:00
6fc10c40ca
feat: add top-artists report
2020-07-04 21:56:27 +02:00
b8918889a1
refactor(server): introduce TimePresets for reports
2020-06-01 21:19:50 +02:00
6f8fc0265a
fix(server): validate listens report query params
...
When using Omit<>, class-validator can not see the decorators of the base
type and skips validation.
2020-06-01 21:19:50 +02:00
8c5f495ce5
fix(api): frontend sessions expire after 15 minutes (now 1d)
2020-05-13 21:23:57 +02:00
3828b841c2
feat(api): add listen report endpoint
2020-05-09 19:24:17 +02:00
ddcdfff89b
feat(api): enable global ValidationPipeline
2020-05-09 19:24:17 +02:00
c9030937e2
feat(api): filter recent listens by timespan
2020-05-09 19:24:17 +02:00
75d3e2edbd
feat: add docs and polish
2020-05-03 21:10:31 +02:00
a27fcce03b
feat(api): add optional spotify user whitelist
2020-05-03 21:10:31 +02:00
a7c5c68540
feat(api): setup database migrations
2020-05-03 21:10:31 +02:00
d58cb46f3e
feat(api): listen on SIGTERM for graceful shutdown
2020-05-03 21:10:31 +02:00
202665a510
feat(api): add health-check endpoint
2020-05-03 21:10:31 +02:00
e78c6e312d
feat(api): validate configuration
2020-05-03 21:10:31 +02:00
ad98ce4e88
feat: serve frontend from api container in prod build
2020-05-03 21:10:31 +02:00
32dcd84964
feat(frontend): show page when login fails
2020-05-03 21:10:31 +02:00
cffddedc81
fix(api): redirect to frontend on spotify auth error
2020-05-03 21:10:31 +02:00
b6eef7f090
feat(api): setup logging
2020-05-03 21:10:31 +02:00
de6d057f80
feat(api): add getListens endpoint with pagination
2020-05-03 21:10:31 +02:00
d881a78757
chore(api): update dependencies
2020-05-03 21:10:31 +02:00
f2065d3f1f
feat(api): fetch listens from spotify
2020-05-03 21:10:31 +02:00
f253a66f86
feat(api): user authentication
2020-05-03 21:10:31 +02:00
f14eda16ac
feat(frontend): setup
2020-05-03 21:00:31 +02:00
db62d5d908
feat(api): setup nestjs
2020-05-03 21:00:20 +02:00