Skip to content

Instantly share code, notes, and snippets.

@ToxicMushroom
Created April 25, 2022 12:12
Show Gist options
  • Save ToxicMushroom/cba95198e1dbc7f645e3a19530e57ed6 to your computer and use it in GitHub Desktop.
Save ToxicMushroom/cba95198e1dbc7f645e3a19530e57ed6 to your computer and use it in GitHub Desktop.
playlist query
```kt
fun getMelijnTracksInPlaylist(playlist: PlaylistData, requester: PartialUser): List<Track> {
val sortableTracks = mutableListOf<Triple<UUID, LocalDateTime, Track>>()
scopedTransaction {
PlaylistTrack.join(me.melijn.bot.database.model.Track, JoinType.INNER) {
me.melijn.bot.database.model.Track.trackType.eq(TrackType.FETCHED)
.and(PlaylistTrack.trackId.eq(me.melijn.bot.database.model.Track.trackId))
.and(PlaylistTrack.playlistId.eq(playlist.playlistId))
}.join(me.melijn.bot.database.model.FetchedTrack, JoinType.INNER) {
me.melijn.bot.database.model.Track.trackId.eq(me.melijn.bot.database.model.FetchedTrack.trackId)
}.selectAll().forEach {
sortableTracks.add(
Triple(
it[PlaylistTrack.trackId], it[PlaylistTrack.addedTime], FetchedTrack(
it[me.melijn.bot.database.model.FetchedTrack.trackBase64],
it[me.melijn.bot.database.model.Track.title],
it[me.melijn.bot.database.model.FetchedTrack.author],
it[me.melijn.bot.database.model.Track.url],
it[me.melijn.bot.database.model.FetchedTrack.identifier],
it[me.melijn.bot.database.model.Track.isStream],
TrackData.fromNow(requester, it[me.melijn.bot.database.model.FetchedTrack.identifier]),
it[me.melijn.bot.database.model.Track.length],
it[me.melijn.bot.database.model.FetchedTrack.trackSource],
it[me.melijn.bot.database.model.FetchedTrack.trackInfoVersion].toByte(),
)
)
)
}
PlaylistTrack.join(me.melijn.bot.database.model.Track, JoinType.INNER) {
me.melijn.bot.database.model.Track.trackType.eq(TrackType.SPOTIFY)
.and(PlaylistTrack.trackId.eq(me.melijn.bot.database.model.Track.trackId))
.and(PlaylistTrack.playlistId.eq(playlist.playlistId))
}.join(me.melijn.bot.database.model.SpotifyTrack, JoinType.INNER) {
me.melijn.bot.database.model.Track.trackId.eq(me.melijn.bot.database.model.SpotifyTrack.trackId)
}.selectAll().forEach {
sortableTracks.add(
Triple(
it[me.melijn.bot.database.model.Track.trackId], it[PlaylistTrack.addedTime], SpotifyTrack(
it[me.melijn.bot.database.model.Track.title],
it[me.melijn.bot.database.model.SpotifyTrack.author],
it[me.melijn.bot.database.model.Track.url],
it[me.melijn.bot.database.model.SpotifyTrack.identifier],
it[me.melijn.bot.database.model.Track.isStream],
TrackData.fromNow(requester, it[me.melijn.bot.database.model.SpotifyTrack.identifier]),
it[me.melijn.bot.database.model.Track.length]
)
)
)
}
}
return sortableTracks.sortedBy { it.first }.sortedBy { it.second }.map { it.third }
}```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment