mirror of
https://github.com/Dvorinka/SpotifyRecAlg.git
synced 2026-06-04 04:23:02 +00:00
64 lines
2.4 KiB
SQL
64 lines
2.4 KiB
SQL
-- name: UpsertTrack :exec
|
|
insert into tracks (
|
|
id, title, artist, album, genres, release_date, duration_ms, popularity,
|
|
explicit, features, external, commercial_boost, quality_penalty, discovery_allowed
|
|
) values (
|
|
$1, $2, $3, $4, $5::jsonb, $6, $7, $8,
|
|
$9, $10::jsonb, $11::jsonb, $12, $13, $14
|
|
)
|
|
on conflict (id) do update set
|
|
title = excluded.title,
|
|
artist = excluded.artist,
|
|
album = excluded.album,
|
|
genres = excluded.genres,
|
|
release_date = excluded.release_date,
|
|
duration_ms = excluded.duration_ms,
|
|
popularity = excluded.popularity,
|
|
explicit = excluded.explicit,
|
|
features = excluded.features,
|
|
external = excluded.external,
|
|
commercial_boost = excluded.commercial_boost,
|
|
quality_penalty = excluded.quality_penalty,
|
|
discovery_allowed = excluded.discovery_allowed,
|
|
updated_at = now();
|
|
|
|
-- name: ListTracks :many
|
|
select id, title, artist, album, genres, release_date, duration_ms, popularity,
|
|
explicit, features, external, created_at, updated_at, commercial_boost, quality_penalty, discovery_allowed
|
|
from tracks
|
|
order by id;
|
|
|
|
-- name: GetTracksByIDs :many
|
|
select id, title, artist, album, genres, release_date, duration_ms, popularity,
|
|
explicit, features, external, created_at, updated_at, commercial_boost, quality_penalty, discovery_allowed
|
|
from tracks
|
|
where id = any($1::text[])
|
|
order by id;
|
|
|
|
-- name: RecordInteraction :exec
|
|
insert into interactions (user_id, track_id, type, weight, occurred_at, context, completed_ms)
|
|
values ($1, $2, $3, $4, $5, $6::jsonb, $7);
|
|
|
|
-- name: ListRecentInteractions :many
|
|
select user_id, track_id, type, weight, occurred_at, context, completed_ms
|
|
from interactions
|
|
where occurred_at >= now() - interval '365 days'
|
|
order by occurred_at desc
|
|
limit 250000;
|
|
|
|
-- name: GetControls :one
|
|
select user_id, allow_explicit, excluded_tracks, excluded_artists, excluded_genres, postponed_tracks
|
|
from user_controls
|
|
where user_id = $1;
|
|
|
|
-- name: UpsertControls :exec
|
|
insert into user_controls (user_id, allow_explicit, excluded_tracks, excluded_artists, excluded_genres, postponed_tracks)
|
|
values ($1, $2, $3::jsonb, $4::jsonb, $5::jsonb, $6::jsonb)
|
|
on conflict (user_id) do update set
|
|
allow_explicit = excluded.allow_explicit,
|
|
excluded_tracks = excluded.excluded_tracks,
|
|
excluded_artists = excluded.excluded_artists,
|
|
excluded_genres = excluded.excluded_genres,
|
|
postponed_tracks = excluded.postponed_tracks,
|
|
updated_at = now();
|