[db] Fix for time_added incorrectly updated (issue #852)

This commit is contained in:
ejurgensen 2019-12-03 18:24:39 +01:00
parent db060074a1
commit b83023356b

View File

@ -94,7 +94,6 @@ enum fixup_type {
DB_FIXUP_ALBUM_SORT, DB_FIXUP_ALBUM_SORT,
DB_FIXUP_ALBUM_ARTIST_SORT, DB_FIXUP_ALBUM_ARTIST_SORT,
DB_FIXUP_COMPOSER_SORT, DB_FIXUP_COMPOSER_SORT,
DB_FIXUP_TIME_ADDED,
DB_FIXUP_TIME_MODIFIED, DB_FIXUP_TIME_MODIFIED,
DB_FIXUP_SONGARTISTID, DB_FIXUP_SONGARTISTID,
DB_FIXUP_SONGALBUMID, DB_FIXUP_SONGALBUMID,
@ -190,7 +189,7 @@ static const struct col_type_map mfi_cols_map[] =
{ "item_kind", mfi_offsetof(item_kind), DB_TYPE_INT, DB_FIXUP_ITEM_KIND }, { "item_kind", mfi_offsetof(item_kind), DB_TYPE_INT, DB_FIXUP_ITEM_KIND },
{ "description", mfi_offsetof(description), DB_TYPE_STRING }, { "description", mfi_offsetof(description), DB_TYPE_STRING },
{ "db_timestamp", mfi_offsetof(db_timestamp), DB_TYPE_INT }, { "db_timestamp", mfi_offsetof(db_timestamp), DB_TYPE_INT },
{ "time_added", mfi_offsetof(time_added), DB_TYPE_INT, DB_FIXUP_TIME_ADDED }, { "time_added", mfi_offsetof(time_added), DB_TYPE_INT, DB_FIXUP_STANDARD, DB_FLAG_NO_ZERO },
{ "time_modified", mfi_offsetof(time_modified), DB_TYPE_INT, DB_FIXUP_TIME_MODIFIED }, { "time_modified", mfi_offsetof(time_modified), DB_TYPE_INT, DB_FIXUP_TIME_MODIFIED },
{ "time_played", mfi_offsetof(time_played), DB_TYPE_INT, DB_FIXUP_STANDARD, DB_FLAG_NO_ZERO }, { "time_played", mfi_offsetof(time_played), DB_TYPE_INT, DB_FIXUP_STANDARD, DB_FLAG_NO_ZERO },
{ "time_skipped", mfi_offsetof(time_skipped), DB_TYPE_INT, DB_FIXUP_STANDARD, DB_FLAG_NO_ZERO }, { "time_skipped", mfi_offsetof(time_skipped), DB_TYPE_INT, DB_FIXUP_STANDARD, DB_FLAG_NO_ZERO },
@ -962,11 +961,6 @@ fixup_defaults(char **tag, enum fixup_type fixup, struct fixup_ctx *ctx)
break; break;
case DB_FIXUP_TIME_ADDED:
if (ctx->mfi && ctx->mfi->time_added == 0)
ctx->mfi->time_added = ctx->mfi->db_timestamp;
break;
case DB_FIXUP_TIME_MODIFIED: case DB_FIXUP_TIME_MODIFIED:
if (ctx->mfi && ctx->mfi->time_modified == 0) if (ctx->mfi && ctx->mfi->time_modified == 0)
ctx->mfi->time_modified = ctx->mfi->db_timestamp; ctx->mfi->time_modified = ctx->mfi->db_timestamp;
@ -2993,6 +2987,10 @@ db_file_add(struct media_file_info *mfi)
mfi->db_timestamp = (uint64_t)time(NULL); mfi->db_timestamp = (uint64_t)time(NULL);
// We don't do this in fixup_tags_mfi() to avoid affecting db_file_update()
if (mfi->time_added == 0)
mfi->time_added = mfi->db_timestamp;
fixup_tags_mfi(mfi); fixup_tags_mfi(mfi);
ret = bind_mfi(db_statements.files_insert, mfi); ret = bind_mfi(db_statements.files_insert, mfi);