Fix scrobble tracks schema
Remove the primary key, and just set a unique index on scrobbled time and title, which allows skipping duplicates.
This commit is contained in:
@@ -20,7 +20,8 @@ defmodule LastFm.Import do
|
|||||||
# HACK: if two tracks happen to have the exact same scrobbled_at_uts,
|
# HACK: if two tracks happen to have the exact same scrobbled_at_uts,
|
||||||
# we move it by a sec.
|
# we move it by a sec.
|
||||||
MusicLibrary.Repo.insert_all(LastFm.Track, track_params,
|
MusicLibrary.Repo.insert_all(LastFm.Track, track_params,
|
||||||
on_conflict: [inc: [scrobbled_at_uts: -1]]
|
on_conflict: :nothing,
|
||||||
|
conflict_target: [:scrobbled_at_uts, :title]
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ defmodule MusicLibrary.Repo.Migrations.CreateScrobbledTracks do
|
|||||||
|
|
||||||
def change do
|
def change do
|
||||||
create table(:scrobbled_tracks, primary_key: false) do
|
create table(:scrobbled_tracks, primary_key: false) do
|
||||||
add :scrobbled_at_uts, :integer, primary_key: true
|
add :scrobbled_at_uts, :integer
|
||||||
add :musicbrainz_id, :string
|
add :musicbrainz_id, :string
|
||||||
add :title, :string
|
add :title, :string
|
||||||
add :cover_url, :string
|
add :cover_url, :string
|
||||||
@@ -12,5 +12,7 @@ defmodule MusicLibrary.Repo.Migrations.CreateScrobbledTracks do
|
|||||||
add :album, :map
|
add :album, :map
|
||||||
add :last_fm_data, :map
|
add :last_fm_data, :map
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create index(:scrobbled_tracks, [:scrobbled_at_uts, :title], unique: true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user