Commit Graph

411 Commits

Author SHA1 Message Date
ejurgensen
f61dfa0529 [db] db_pl_delete_bypath() must also delete disabled playlists
Otherwise we end up with a bunch of disabled playlists in the db.
2020-03-29 00:33:44 +01:00
whatdoineed2do/Ray
286525a85c [db] inc playcount using filter 2020-03-23 13:39:59 +00:00
Christian Meffert
1bf094ed81
Merge pull request #906 from chme/playlist_folder2
JSON API - Support for Playlist Folders
2020-03-08 07:31:09 +01:00
ejurgensen
64c6007aad [db] Fix memleak from unexpected return value, closes issue #909
On success the function was returning SQLITE_OK = 100, not 0, which made
json_reply_library think that the operation failed.

Credit @whatdoineed2do
2020-02-25 21:58:18 +01:00
chme
36ebf7d06c [jsonapi] Add support for playlist folders 2020-02-24 21:27:53 +01:00
ejurgensen
5736217315 [db] Change prototype of db_admin_getxxx() functions
Makes it possible for caller to distinguish between "not set" and "set to 0".
2020-02-23 20:30:35 +01:00
ejurgensen
00de0a3f76 [db] Fixup commit #1edfadc 2020-02-23 20:25:22 +01:00
whatdoineed2do/Ray
78194807db [db] add S_RELEASEDATE and idx 2020-02-23 20:25:22 +01:00
ejurgensen
b40e691e6e [db] Fix memleak of mfi->url
Credit @whatdoineed2do
2020-02-16 21:16:33 +01:00
ejurgensen
f4cb0fb79d [db] Error checking for alloc failure 2020-02-08 16:10:33 +01:00
ejurgensen
e9d1a2475e [db] Fix memleak on error from prev commit 2020-02-08 15:17:34 +01:00
ejurgensen
541a1a6701 [db] Orphan nested playlists if parent is deleted/cleared
Also align db_pl_delete_bypath with db_pl_delete by making it a wrapper.
2020-02-08 13:41:26 +01:00
ejurgensen
5295d787ad [scan] Change library_playlist_save return + fix Spotify
* fix Spotify invalid mem access
* fix clearing of Spotify files
2020-02-08 10:55:15 +01:00
ejurgensen
77a8de3bea [scan] Fix db_pl_add() so it always returns correct id 2020-02-08 10:55:15 +01:00
ejurgensen
c5988665b0 [db] Expose db_pl_fetch_byid() 2020-02-08 10:55:15 +01:00
ejurgensen
08e89ffd4f [db] Use prepared statements for playlists (add/update) 2020-02-08 10:55:15 +01:00
ejurgensen
b83023356b [db] Fix for time_added incorrectly updated (issue #852) 2019-12-04 20:57:21 +01:00
ejurgensen
6f3c315dfc [db] Add missing declarations of media_kind column in commit 40c7522 (fixes issue #836) 2019-11-03 00:16:20 +01:00
chme
7e6b8f740d [db] Add missing mapping of queue version into queue item on fetch 2019-10-20 08:38:40 +02:00
whatdoineed2do
a5987addd4 [db,jsonapi] case insensitive directory/file listing (#784)
* [db,jsonapi] case insensitive directory/file listing

* [jsonapi] file listing of playlist uses same VPATH ordering as per directory and files

* [db,jsonapi] sorting via existing S_VPATH

* [db] replace LOWER with COLLATE NOCASE
2019-08-21 22:54:34 +02:00
whatdoineed2do/Ray
b126a2fbc0 [db] add 'channels' to file/queue tbl 2019-06-12 16:52:02 +01:00
whatdoineed2do/Ray
c796db251d [db] schema v20.01 support codec type/bitrate/samplerate in queue tbl 2019-06-12 16:50:52 +01:00
ejurgensen
4f5966c9ff [db] Speed up Q_PL query used by e.g. '/databases/1/containers' request
The previous solution would use subqueries to count the number of items and
streams in each playlist, which means that response time gets pretty slow if
there are many playlists.

This commit also includes a number of lesser db code changes.
2019-05-30 21:19:40 +02:00
ejurgensen
b3bfb0a5f6 [db] Move calculation of artist/album id's from sqlite to code
The purpose of this is to support library backends making their own
calculation of these id's, which is relevant if they have more information
available than just album_artist and album.

This also removes a bunch of sqlite extension code plus some triggers, which
in itself is probably an improvement.
2019-05-17 23:03:05 +02:00
whatdoineed2do/Ray
7e02eb510d [db] add songartistid to queue tbl 2019-02-12 09:21:39 +00:00
chme
0ded6d63bf [db/jsonapi] New admin value for Last-Modified in JSON API header
This adds a new timestamp value "db_modified" into the admin db table.
In addition to the existing "db_update" admin value, this value is also
updated if rating, play-/skip-count or seek changes for a
media_info_file (files db table).

This should improve the caching behavior in clients of the JSON API
(especially the player web interface) in refreshing its data if some of
this values changes.
2019-01-31 09:42:53 +01:00
chme
7d0e48eb0e [db] Add support for resetting play- and skip-count 2019-01-31 09:42:53 +01:00
ejurgensen
c70f96fdec [db] Fix integer overflow in bind_mfi (ref issue #683)
Also drop DB_TYPE_CHAR since it's not really being used.
2019-01-30 23:34:00 +01:00
chme
937d1e3f5f [db] Add "group" attribute to query_params and allow grouping files 2019-01-28 22:40:25 +01:00
ejurgensen
9929832b5f [db] Don't zero play_count, skip_count, seek, time_played, time_skipped on update
If a file gets updated/rescanned we generally don't want to reset the above
values. This commit adds DB_FLAG_NO_ZERO, which marks a field so that
db_file_update() will only update it if the new value is non-zero (i.e. the
caller probably has a "better" value).
2018-12-31 15:55:49 +01:00
ejurgensen
734b4e9851 [db] Transfer some library tag fixup to the db's generic fixup
Transfer setting defaults for media_kind and item_kind. Also sets
default media_kind for queue_items.
2018-12-31 15:55:49 +01:00
ejurgensen
c3eb95d201 [db] Change use of compilation_artist, so that album_artist has preference
This change means that we will use album_artist even if compilation_artist
is configured, thus compilation_artist will only be used to override artist.
2018-12-31 15:55:49 +01:00
ejurgensen
9fc2065ada [db] Use album_artist if we have no artist metadata 2018-12-31 15:55:49 +01:00
ejurgensen
8043ca1291 [db] Drop upgrade support for pre-v17 db versions
Also drop the old way of recreating the files table, it is now replaced by
db_table_upgrade().
2018-12-31 15:55:49 +01:00
ejurgensen
a4c254e6e7 [db] Recreate v20 files table, so that new constraints take effect if upgrading
The constraints on songalbumid and songartistid where changed with v20, so we
need to make sure they take effect when upgrading.

This commit tries to do the table recreation like sqlite recommends and without
manually crafted copy queries that are probably prone to errors.

Since we are recreating anyway, this commit also reorders the columns slightly.

It also includes auto-drop/recreation of triggers (should really have been its
own commit) during upgrade, like is already done with indices.
2018-12-31 15:55:49 +01:00
ejurgensen
1de8f39264 [db] Generic fixup + align fixing up between mfi, pli and queue_item
The idea here is to make sure the fixing up of tags is done in a consistent
manner. For strings, this means stuff like trimming and empty strings -> null
are applied the same unless there are special exception rules set. It also
means that defaults are applied the same across structs, e.g. "Unknown artist"
for both mfi->artist and queue_item->artist.

The change is also necessary because we want to remove trimming from the sql
query and instead implement it ourselves.
2018-12-31 15:55:49 +01:00
ejurgensen
fc5a66f86d [misc] New utility functions: trim, atrim and safe_snprintf_cat 2018-12-31 15:55:49 +01:00
ejurgensen
d3121f4ec7 [db] Use prepared statements for file insert, update and ping
Get rid of the SQL query strings, since they are prone to errors and are
probably also slower that using prepared statements.
2018-12-31 15:55:49 +01:00
chme
2ffb94c9d1 [db] Fix scan-build issue "Argument with 'nonnull' attribute passed
null"
2018-12-29 16:34:56 +01:00
chme
070379edef [db] Fetch directory id by path; use const for path and virtual_path 2018-12-18 08:28:19 +01:00
chme
dc020cc3ac [db/filescanner/spotify] Set directory path 2018-12-18 08:28:19 +01:00
chme
42cbd721fd [db] Minor version upgrade: new column "path" in directories table 2018-12-18 08:28:19 +01:00
whatdoineed2do
488f52b04f [db] schema v19.11 support composer in queue tbl 2018-11-30 17:22:21 +01:00
chme
041a87427c [spotify] Set artwork url in queue items for spotify tracks
Fixes missing artwork for spotify tracks that are not in the user
library.
2018-11-28 20:31:50 +01:00
chme
a8e8dc1999 [library/db/filescanner/spotify] Reshuffle after adding non library
items to the queue
2018-11-11 07:01:22 +01:00
chme
05141480e2 [player/db] Increment queue version if shuffle mode is turned off
This fixes showing the wrong queue in the player web interface after
turing shuffle mode off.
2018-11-11 07:01:22 +01:00
chme
8d8663e93d [db/queue] Support adding non-library items at a given position to the
queue
2018-10-25 19:36:43 +02:00
ejurgensen
b54c9ff1c6 [db] Fix count error in db_build_query_browse() if no items match query 2018-09-23 01:37:40 +02:00
ejurgensen
a003c419c3 [db] Add missing casts of time_skipped (fixes #593)
The print mask for some reason uses int64, so time_skipped was too short
2018-09-19 08:12:40 +02:00
ejurgensen
2a9d3f7474
Merge pull request #591 from chme/queue_add_pos
[db] Add support to add items to the queue at a specified position
2018-09-16 13:13:13 -07:00