Deluan
029290f304
fix: set default play_count to 0
...
IncPlayCount was not incrementing when the annotation already existed with play_count = null
2020-02-08 22:55:05 -05:00
Deluan
7aab82c246
feat: enable overriding sql sorting
2020-02-06 18:41:34 -05:00
Deluan
6978790e96
feat: allow regular users to login to the UI
2020-02-05 22:22:44 -05:00
Deluan
e0308acef3
feat: add lapsed time to SQL logger, to help detect SQL bottlenecks
2020-02-05 08:47:32 -05:00
Deluan
464880dd31
refactor: use stdlib `filepath.FromSlash`
2020-02-03 17:53:59 -05:00
Deluan
ff8c18e0f4
fix: don't log empty sql responses as errors
2020-02-02 21:29:27 -05:00
Deluan
d4365b9f64
refactor: read musicFolderId from request (but still don't use it)
2020-02-01 17:23:03 -05:00
Deluan
b62b78edfe
refactor: better SQL logging
2020-02-01 17:23:03 -05:00
Deluan
7c4511e33a
refactor: consolidate query executions into two functions `queryOne` and `queryAll`
2020-02-01 17:23:03 -05:00
Deluan
7e65bb8f20
refactor: better integration between `db` and `persistence` packages
...
Will address support for different DBs in the future (+1 squashed commit)
Squashed commits:
[a014757] refactor: better integration between `db` and `persistence` packages
2020-02-01 17:23:03 -05:00
Deluan
a6b8f40ac3
refactor: remove prefix New from SQLStore
2020-02-01 17:23:03 -05:00
Deluan
0d0787e656
refactor:clean annotations in GC
2020-02-01 17:23:03 -05:00
Deluan
88e01d05f6
refactor: annotations
2020-02-01 17:23:03 -05:00
Deluan
de1fea64bc
refactor: introduce GC, to delete old data
2020-02-01 17:23:03 -05:00
Deluan
5d1df19291
fix: manually set timestamps, as we don't rely on the ORM anymore
2020-02-01 17:23:03 -05:00
Deluan
0b91d8a30e
refactor: more SQL logs
2020-02-01 17:23:03 -05:00
Deluan
cdbbb2f596
fix: Find/DeleteByPath
2020-02-01 17:23:03 -05:00
Deluan
44671c59c0
refactor: fix rest filter
2020-02-01 17:23:03 -05:00
Deluan
d9f61a278c
refactor: some clean-up
2020-02-01 17:23:03 -05:00
Deluan
a260e65307
refactor: add GetStarred to artists
2020-02-01 17:23:03 -05:00
Deluan
5a4c763510
refactor: add search back to albums and artists
2020-02-01 17:23:03 -05:00
Deluan
d755609d13
refactor: add search back to mediafiles
2020-02-01 17:23:03 -05:00
Deluan
4f4af34595
fix: DB pagination
2020-02-01 17:23:03 -05:00
Deluan
f5071d1614
refactor: adding back artist and album tables
2020-02-01 17:23:03 -05:00
Deluan
d389d40db1
feat: improve logs, remove config for disable authentication
2020-02-01 17:23:03 -05:00
Deluan
72d9ddf532
refactor: remove annotation handling from engine
2020-02-01 17:23:03 -05:00
Deluan
67ed830a68
refactor: add filters
2020-02-01 17:23:03 -05:00
Deluan
71c1844bca
refactor: new persistence, more SQL, less ORM
2020-02-01 17:23:03 -05:00
Deluan
0d2911daf9
refactor: add Context to the persistence layer
2020-01-27 09:41:33 -05:00
Deluan
0ff741b394
fix: persistence tests were not being properly initialized
2020-01-26 17:10:13 -05:00
Deluan
f9db80c409
feat: add conf for data folder, default current folder (not ./data anymore)
2020-01-26 16:42:56 -05:00
Deluan
58a7879ba8
feat: first time admin user creation through the ui
2020-01-25 17:10:16 -05:00
Deluan
bff6f3a4bd
Rename env vars prefix to ND_
2020-01-24 01:29:31 -05:00
Deluan
bee55c04c8
Rename project to Navidrome
2020-01-23 19:44:08 -05:00
Deluan
ed31b6fa31
Remove unused code
2020-01-22 15:42:29 -05:00
Deluan
1f58bf47d6
Fix GetStarred for all item types
2020-01-22 15:19:37 -05:00
Deluan
7dc3f49c1c
Initial support for artist browsing from UI. Also add linking between resources
2020-01-22 13:02:19 -05:00
Deluan
ea30b4c2d9
Initial support for album browsing from UI
2020-01-22 12:32:31 -05:00
Deluan
9557f7ceed
Initial support for song browsing from UI
2020-01-22 10:47:43 -05:00
Deluan
c73f549c83
Don't try to get albums if ids is empty
2020-01-22 01:03:49 -05:00
Deluan
c8a74881d8
Fix album lists, to use annotations
2020-01-22 01:00:00 -05:00
Deluan
d7116eebd4
Implement annotations per user
2020-01-21 23:03:37 -05:00
Deluan
d4adc784cc
Return playlist duration in getPlayList
2020-01-21 18:10:29 -05:00
Deluan
dce2a1399d
Rename for clarity
2020-01-21 17:50:56 -05:00
Deluan
57fcdac428
Initial support for playlists. Missing permissions
2020-01-21 16:39:35 -05:00
Deluan
de0816da67
Reimplemented GetAlbumList&type=random and GetRandomSongs (now with filter by genres)
2020-01-21 08:49:43 -05:00
Deluan
6cd758faa0
Removed empty clause
2020-01-21 08:48:14 -05:00
Deluan
c6ed0d5377
Remove flag to allow override media annotation
2020-01-20 18:19:16 -05:00
Deluan
99c28731d4
Authenticate Subsonic API calls using the DB
2020-01-20 13:42:43 -05:00
Deluan
e717d99780
Authenticate UI
2020-01-20 10:25:35 -05:00
Deluan
6785d616d0
Remove unused PurgeInactive methods
2020-01-20 08:16:22 -05:00
Deluan
491bfb1f69
Create initial user if User table is empty. Also make model.QueryOptions compatible with rest.QueryOptions
2020-01-19 22:47:22 -05:00
Deluan
2ab0cecd48
Complete User CRUD
2020-01-19 21:46:36 -05:00
Deluan
1c04a19910
Add UserList in UI
2020-01-19 20:40:18 -05:00
Deluan
5bc1551b09
Clean up
2020-01-19 18:28:23 -05:00
Deluan
67eeb218c4
Big Refactor:
...
- Create model.DataStore, with provision for transactions
- Change all layers dependencies on repositories to use DataStore
- Implemented persistence.SQLStore
- Removed iTunes Bridge/Importer support
2020-01-19 16:28:09 -05:00
Deluan
40186f7e10
Don't say "iTunes Library" if not importing from iTunes
2020-01-18 22:57:20 -05:00
Deluan
fe058aa4a1
Don't override media annotations when scanning/importing
2020-01-18 21:45:44 -05:00
Deluan
938a92eded
Register PlayCount/Date in the DB, if DevUseFolderScanner is true
2020-01-18 20:59:20 -05:00
Deluan
3c66da0b17
NowPlaying is not a repo, now it is part of the main engine
2020-01-18 20:21:25 -05:00
Deluan
128e165aba
Add Stars to the DB, including Artists! Only if DevUseFolderScanner is true
2020-01-18 20:03:52 -05:00
Deluan
8ae4fdd5b2
Fix Windows test
2020-01-18 02:15:02 -05:00
Deluan
ccbdf688ea
Reduced size of batches, to not break SQLite
2020-01-18 01:49:08 -05:00
Deluan
54d13d2022
Purge empty albums/artists
2020-01-17 23:28:11 -05:00
Deluan
ea9ed4a287
Fix ChangeDetector to keep the dirMap from last scan
2020-01-17 22:41:10 -05:00
Deluan
5dbe71d675
Update search index when refreshing albums/artists
2020-01-17 21:16:23 -05:00
Deluan
cef65b6ab0
Un-export model mappers
2020-01-17 21:03:54 -05:00
Deluan
c0beaa6377
Integrate ArtistIndex logic into Artist
2020-01-17 20:54:28 -05:00
Deluan
035fdaeb96
Remove old tags from models
2020-01-17 20:54:28 -05:00
Deluan
123f543a94
New Folder Scanner - WIP
2020-01-17 20:54:28 -05:00
Deluan
7a16d41abe
Add MediaFile.FindByPath
2020-01-17 20:54:28 -05:00
Deluan
36d93774bc
Add GetGenre endpoint
2020-01-15 17:56:02 -05:00
Deluan
bc33ace6d6
Merged helper and initialization functions in one file
2020-01-15 11:11:33 -05:00
Deluan
16c550a9d1
Change semantics of ChecksumRepository
2020-01-15 08:54:00 -05:00
Deluan
c404252b7f
Remove sort.Interface from models (not used anymore)
2020-01-15 08:36:25 -05:00
Deluan
0ea2bd79d9
Rename `domain` to `model`
2020-01-14 22:22:34 -05:00
Deluan
25686c1742
Preparing for new scanner
2020-01-14 21:51:35 -05:00
Deluan
9922ba5994
Added initial support for PostgreSQL
2020-01-14 19:20:47 -05:00
Deluan
a99c3a8af3
Another big refactor: Back to a single folder for persistence implementation
2020-01-14 18:47:57 -05:00
Deluan
3d76144f82
Allow LogLevel to be configurable. Also add filename and line number when LogLevel>=debug
2020-01-13 19:57:36 -05:00
Deluan
536244bc44
Removed LedisDB persistence layer. May reimplement in the future (not likely thou)
2020-01-13 16:37:24 -05:00
Deluan
614f4afe28
Implement Artist search with SQL, removed old search/indexer code
2020-01-13 16:06:30 -05:00
Deluan
3a9559a860
Implement Album search with SQL
2020-01-13 16:06:30 -05:00
Deluan
c2448d3880
Using squirrel to generalize SQL search
2020-01-13 16:06:30 -05:00
Deluan
d3af7e689d
Implementing SearchSong using simple SELECTs. The performance hit is not relevant, makes things simpler
2020-01-13 16:06:30 -05:00
Deluan
0629be5800
Removed Storm persistence. Too slow and SQL implementation is actually more versatile
2020-01-13 10:49:36 -05:00
Deluan
66e9377795
Fix delete all from checksum hanging
2020-01-13 10:44:16 -05:00
Deluan
4b08df0725
Run SQL tests in memory
2020-01-13 10:44:16 -05:00
Deluan
87ca885b5e
Optimize Checksums saving
2020-01-13 10:44:16 -05:00
Deluan
b07642a8d1
Add a TODO
2020-01-13 10:44:16 -05:00
Deluan
fddd0dc353
Fix some performance/volume issues
2020-01-13 10:44:16 -05:00
Deluan
973f8869eb
SQL/Orm PlaylistRepository complete
2020-01-13 10:44:16 -05:00
Deluan
5d519dcecf
SQL/Orm PropertyRepository complete
2020-01-13 10:44:16 -05:00
Deluan
3d706e3e98
SQL/Orm ArtistIndexRepository complete
2020-01-13 10:44:16 -05:00
Deluan
78fd567285
SQL/Orm CheckSumRepository complete
2020-01-13 10:44:16 -05:00
Deluan
b9815fc653
SQL/Orm AlbumRepository complete
2020-01-13 10:44:16 -05:00
Deluan
56273dd4d9
SQL/Orm MediaFileRepository complete
2020-01-13 10:44:16 -05:00
Deluan
d70af2c39d
SQL/Orm ArtistRepository complete
2020-01-13 10:44:16 -05:00
Deluan
dd5945ad86
Make sure mock implementations implements their full interface
2020-01-11 21:52:39 -05:00
Deluan
cb107f77f8
Make QueryOptions optional in PlaylistRepository.GetStarred
2020-01-11 21:38:02 -05:00
Deluan
4643628e28
Make QueryOptions optional in MediaFileRepository.GetStarred
2020-01-11 21:33:41 -05:00
Deluan
b85898df93
Make QueryOptions optional in AlbumRepository.GetStarred
2020-01-11 21:30:24 -05:00
Deluan
d4ed6a0569
Make QueryOptions optional in AlbumRepository.GetAll
2020-01-11 21:25:37 -05:00
Deluan
6c05930444
Change tests' db path to a temp folder
2020-01-11 16:48:45 -05:00
Deluan
4b1c909a4d
Make persistence provider pluggable at runtime
2020-01-11 15:27:32 -05:00
Deluan
93ab4132fe
Move mapping functions to db_ledis, where it is used
2020-01-11 15:27:32 -05:00
Deluan
ce1c5e1129
Remove compulsory reindex at startup
2020-01-11 15:27:32 -05:00
Deluan
0c4cbe11be
Fix flake test (was dependent on map keys order)
2020-01-11 15:27:32 -05:00
Deluan
10221b5471
Force dbPath to be relative to main executable
2020-01-11 15:27:32 -05:00
Deluan
c9742181ff
Save Storm DB in the DbPath configured
2020-01-11 15:27:32 -05:00
Deluan
cead8906d6
Implements NowPlayingRepository as an in-memory only struct
2020-01-11 15:27:32 -05:00
Deluan
c9be5f7201
Storm ChecksumsRepository complete.
2020-01-11 15:27:32 -05:00
Deluan
4f151a7409
Storm PlaylistRepository complete.
2020-01-11 15:27:32 -05:00
Deluan
70d7793147
Moved MediaFolders Repository to persistence agnostic package
2020-01-11 15:27:32 -05:00
Deluan
11f4505925
Renamed persistence packages
2020-01-11 15:27:32 -05:00
Deluan
a1d837cb9b
Storm IndexRepository complete.
2020-01-11 15:27:32 -05:00
Deluan
9ccd9545e8
Refactored purgeInactive, better test suite setup
2020-01-11 15:27:32 -05:00
Deluan
ef79f6342f
Removed old runtime tagging code. Not used anymore
2020-01-11 15:27:32 -05:00
Deluan
dbeba1dea9
Storm MediaFileRepository complete.
2020-01-11 15:27:32 -05:00
Deluan
c608e917db
Storm AlbumRepository complete.
2020-01-11 15:27:32 -05:00
Deluan
0ca691b37f
Storm ArtistRepository and PropertyRepository complete.
2020-01-11 15:27:32 -05:00
Deluan
aebb960831
New storm artist repository, WIP
2020-01-11 15:27:32 -05:00
Deluan
40904b220e
Renamed Id to ID, following GoLang convention
2020-01-11 15:27:32 -05:00
Deluan
018352463f
Moved ledis implementation to a new package
2020-01-11 15:27:32 -05:00
Deluan
24cbf766a3
Removed dependency on `engine` from `persistence`
2020-01-09 22:44:45 -05:00
Deluan
84d69a4f41
Replaced Beego logging
2020-01-09 22:44:45 -05:00
Deluan
79701caca3
Removed Beego routing/controllers, converted to Chi.
...
Also introduced Wire for dependency injection
2020-01-09 22:44:45 -05:00
Deluan
29519fe22f
Fixes typo
2017-04-01 09:55:21 -04:00
Deluan
c417a00e62
Renamed project to CloudSonic
2017-04-01 09:47:14 -04:00
Deluan
60bc1d7a11
Polishing
2016-04-21 10:44:27 -04:00
Deluan
c2b1f9782b
New configuration system
2016-03-30 00:05:57 -04:00
Deluan
768764bea7
getRandomSongs.view (partially) implemented
2016-03-29 00:01:27 -04:00
Deluan
1a705d4319
Fixing NowPlaying when we have more than one song in the queue
2016-03-28 19:11:49 -04:00
Deluan
83e0a7b24c
Fixing some lint warnings
2016-03-26 22:43:13 -04:00
Deluan
0e20910061
Cleaning old data from artists indexes
2016-03-26 22:29:26 -04:00
Deluan
f29ac99b45
Trying to fix build
2016-03-25 02:14:38 -04:00
Deluan
1cf8a0db44
Refactored NowPlaying
...
Also added a test case for skipping range
2016-03-24 17:14:13 -04:00
Deluan
d59394c653
GetStarred now returns starred songs
2016-03-23 19:02:58 -04:00
Deluan
b25cfd96eb
Polishing
2016-03-23 16:30:38 -04:00
Deluan
08192e6d23
Handling a racing condition between Register and NowPlaying, when the queue is empty
2016-03-23 13:51:02 -04:00
Deluan
c87b133071
Polishing
2016-03-23 12:37:03 -04:00
Deluan
d57f51c7ac
Removed unused code
2016-03-23 12:00:19 -04:00
Deluan
0e1618a6ac
Using PersistentIDs instead of "Database" IDs
2016-03-23 11:43:20 -04:00
Deluan
638f328330
fixed a NPD (Nil Pointer Dereference)
2016-03-23 11:26:27 -04:00
Deluan
c580a4199e
New NowPlaying and Skip detection implementation
2016-03-23 10:06:26 -04:00
Deluan
db992a9941
Small changes regarding StarredAt.
...
Making StarredAt more "precise", setting it to the time the change was detected.
getStarred.view now returns albums ordered by StarredAt.
loadRange method now take QueryOptions.Desc into account
2016-03-22 19:00:18 -04:00
Deluan
21b39d922c
More slices instead of pointers of slice
2016-03-20 13:33:59 -04:00
Deluan
3f0030738a
Indexes using slices instead of pointers of slice
2016-03-20 13:08:24 -04:00
Deluan
27b7b7ce08
More slices instead of pointers of slice
2016-03-19 23:03:50 -04:00
Deluan
04513d38f0
Fixed bug on reflect and slice
2016-03-18 21:07:57 -04:00
Deluan
508bf7152f
Removing purged ids from the search index
2016-03-18 19:50:21 -04:00
Deluan
3790aa45e4
Refactored PurgeInactive as a "generic" function.
...
Also delete indexes when removing records
2016-03-18 19:32:49 -04:00
Deluan
25d902c9d7
When ErroNotFound, return an new entity to avoid conversion from nil errors
2016-03-18 17:24:26 -04:00
Deluan
c90a50827a
Get() methods from all repositories now return a ErrNotFound when the id is nonexistent
2016-03-18 11:33:50 -04:00
Deluan
ee3e70c712
Register skipped songs!
2016-03-17 18:58:09 -04:00
Deluan
c4b660fce3
getNowPlaying.view working
2016-03-17 10:37:19 -04:00
Deluan
68c456e188
Halfway of getNowPlaying implementation
2016-03-17 10:08:47 -04:00
Deluan
cc89cb5bd1
Now Playing backend implemented
2016-03-16 22:30:34 -04:00
Deluan
9bfb61d994
Implemented nowplaying repo
2016-03-16 20:52:32 -04:00
Deluan
4748ce142f
Introduced NowPlayingRepository. Don't do anything for now
2016-03-16 20:27:48 -04:00
Deluan
b660a70688
Introduced engine.Scrobbler
...
Also refactored mocks into their original packages, to avoid cyclic references. Is there a better way to have mocks in GoLang tests?
2016-03-16 17:59:28 -04:00
Deluan
cad65f517c
Polishing
2016-03-15 13:17:51 -04:00
Deluan
12aedc0996
Using checksums to detect modified stats in the iTunes Library
2016-03-15 11:04:17 -04:00
Deluan
bb5d4c920d
Error when trying to index on an unsupported field type
2016-03-15 09:41:33 -04:00
Deluan
e36a4201db
implemented getStarred (just for albums, for now)
2016-03-14 11:35:48 -04:00
Deluan
14934dccf7
Supporting index annotations in domain structs
2016-03-14 10:32:22 -04:00
Deluan
df957814a0
Implemented artists indexing, with Gomate
2016-03-10 23:19:13 -05:00
Deluan
7161325716
Initial wiring for getPlaylists endpoint
2016-03-09 10:09:15 -05:00
Deluan
9bea04f330
Implemented getAlbumList with type=random
2016-03-08 21:54:32 -05:00
Deluan
60d4cb5d9f
Converted all collections from repositories to *collections
2016-03-08 20:33:09 -05:00
Deluan
8607e25c90
Moved properties to engine layer
2016-03-08 18:40:16 -05:00
Deluan
46e7627fd3
Optimized import, only updating changed data and purging old data
2016-03-08 14:19:07 -05:00
Deluan
d2701ea67c
Using sorted sets
2016-03-05 19:40:36 -05:00
Deluan
766fdbc60c
Big Importer/Scanner refactor
2016-03-04 16:42:09 -05:00
Deluan
7225807bad
Initial work on downsampling
...
The http connection is being closed before sending all data. May have something to do with the Range header
2016-03-04 13:33:09 -05:00
Deluan
9a246b5432
First version of getAlbumList.view working.
...
- It still misses almost all type options
- Introduced "parent" in Child subresponse, as it was breaking DSub
2016-03-04 09:09:16 -05:00
Deluan
87e012f3bf
Refactored paging/sorting options
2016-03-03 22:52:03 -05:00
Deluan
5ca9680059
Default sorts should be in the domain
2016-03-03 21:42:12 -05:00
Deluan
fc6d49d34c
Introduced types for the collections
2016-03-03 21:01:55 -05:00
Deluan
eae9f3168f
renamed base_repository to ledis_repository
2016-03-03 20:16:09 -05:00
Deluan
c9455e1955
getCoverArt.view working
2016-03-03 12:08:44 -05:00
Deluan
ad0a91fba5
Making sure the repositories implement their full interfaces
2016-03-03 01:28:48 -05:00
Deluan
012958cd08
go fmt
2016-03-03 00:46:23 -05:00
Deluan
ffd6304a23
Added DiscNumber field, used to sort tracks
2016-03-03 00:42:42 -05:00
Deluan
1f31de589a
Implementing sort by number on queries
2016-03-02 23:20:17 -05:00
Deluan
757e1992d7
Bare bones getMusicDirectory for albums!
2016-03-02 23:15:17 -05:00
Deluan
838d4bf38f
getMusicDirectory bare bones for artists working
2016-03-02 22:22:31 -05:00
Deluan
9577d9ae87
Started the implementation of getMusicDirectory. Probably will need to introduce a new 'service' layer...
2016-03-02 20:00:55 -05:00
Deluan
de94fe3ef2
Should not break on empty database
2016-03-02 17:46:16 -05:00
Deluan
4843ccb46c
go fmt
2016-03-02 13:18:39 -05:00
Deluan
300ed0d9a4
Introduced interfaces for all repositories, completely isolating the persistence layer from the repositories usage and specification
2016-03-02 09:43:00 -05:00
Deluan
272a499c7e
Refactoring to a cleaner architecture
2016-03-02 09:10:28 -05:00