from __future__ import division, absolute_import, print_function, unicode_literals

get_item = """
SELECT      kodi_id, kodi_fileid, kodi_pathid, parent_id, media_type,
            jellyfin_type, media_folder, jellyfin_parent_id
FROM        jellyfin
WHERE       jellyfin_id = ?
"""
get_item_obj = ["{Id}"]
get_item_series_obj = ["{SeriesId}"]
get_item_song_obj = ["{SongAlbumId}"]
get_item_id_by_parent = """
SELECT      jellyfin_id, kodi_id
FROM        jellyfin
WHERE       parent_id = ?
AND         media_type = ?
"""
get_item_id_by_parent_boxset_obj = ["{SetId}", "movie"]
get_item_by_parent = """
SELECT      jellyfin_id, kodi_id, kodi_fileid
FROM        jellyfin
WHERE       parent_id = ?
AND         media_type = ?
"""
get_item_by_media_folder = """
SELECT      jellyfin_id, jellyfin_type
FROM        jellyfin
WHERE       media_folder = ?
"""
get_item_by_parent_movie_obj = ["{KodiId}", "movie"]
get_item_by_parent_tvshow_obj = ["{ParentId}", "tvshow"]
get_item_by_parent_season_obj = ["{ParentId}", "season"]
get_item_by_parent_episode_obj = ["{ParentId}", "episode"]
get_item_by_parent_album_obj = ["{ParentId}", "album"]
get_item_by_parent_song_obj = ["{ParentId}", "song"]
get_item_by_wild = """
SELECT      kodi_id, media_type
FROM        jellyfin
WHERE       jellyfin_id LIKE ?
"""
get_item_by_wild_obj = ["{Id}"]
get_item_by_kodi = """
SELECT      jellyfin_id, parent_id, media_folder, jellyfin_type, checksum
FROM        jellyfin
WHERE       kodi_id = ?
AND         media_type = ?
"""
get_checksum = """
SELECT      jellyfin_id, checksum
FROM        jellyfin
WHERE       jellyfin_type = ?
"""
get_view_name = """
SELECT      view_name
FROM        view
WHERE       view_id = ?
"""
get_media_by_id = """
SELECT      jellyfin_type
FROM        jellyfin
WHERE       jellyfin_id = ?
"""
get_media_by_parent_id = """
SELECT      jellyfin_id, jellyfin_type, kodi_id, kodi_fileid
FROM        jellyfin
WHERE       jellyfin_parent_id = ?
"""
get_view = """
SELECT      *
FROM        view
WHERE       view_id = ?
"""
get_views = """
SELECT      *
FROM        view
"""
get_views_by_media = """
SELECT      *
FROM        view
WHERE       media_type = ?
"""
get_items_by_media = """
SELECT      jellyfin_id
FROM        jellyfin
WHERE       media_type = ?
"""
get_version = """
SELECT      idVersion
FROM        version
"""

add_reference = """
INSERT OR REPLACE INTO      jellyfin(jellyfin_id, kodi_id, kodi_fileid, kodi_pathid, jellyfin_type,
                            media_type, parent_id, checksum, media_folder, jellyfin_parent_id)
VALUES                      (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
"""
add_reference_movie_obj = [
    "{Id}",
    "{MovieId}",
    "{FileId}",
    "{PathId}",
    "Movie",
    "movie",
    None,
    "{Checksum}",
    "{LibraryId}",
    "{JellyfinParentId}",
]
add_reference_boxset_obj = [
    "{Id}",
    "{SetId}",
    None,
    None,
    "BoxSet",
    "set",
    None,
    "{Checksum}",
    None,
    None,
]
add_reference_tvshow_obj = [
    "{Id}",
    "{ShowId}",
    None,
    "{PathId}",
    "Series",
    "tvshow",
    None,
    "{Checksum}",
    "{LibraryId}",
    "{JellyfinParentId}",
]
add_reference_season_obj = [
    "{Id}",
    "{SeasonId}",
    None,
    None,
    "Season",
    "season",
    "{ShowId}",
    None,
    None,
    None,
]
add_reference_pool_obj = [
    "{SeriesId}",
    "{ShowId}",
    None,
    "{PathId}",
    "Series",
    "tvshow",
    None,
    "{Checksum}",
    "{LibraryId}",
    None,
]
add_reference_episode_obj = [
    "{Id}",
    "{EpisodeId}",
    "{FileId}",
    "{PathId}",
    "Episode",
    "episode",
    "{SeasonId}",
    "{Checksum}",
    None,
    "{JellyfinParentId}",
]
add_reference_mvideo_obj = [
    "{Id}",
    "{MvideoId}",
    "{FileId}",
    "{PathId}",
    "MusicVideo",
    "musicvideo",
    None,
    "{Checksum}",
    "{LibraryId}",
    "{JellyfinParentId}",
]
add_reference_artist_obj = [
    "{Id}",
    "{ArtistId}",
    None,
    None,
    "{ArtistType}",
    "artist",
    None,
    "{Checksum}",
    "{LibraryId}",
    "{JellyfinParentId}",
]
add_reference_album_obj = [
    "{Id}",
    "{AlbumId}",
    None,
    None,
    "MusicAlbum",
    "album",
    None,
    "{Checksum}",
    "{LibraryId}",
    "{JellyfinParentId}",
]
add_reference_song_obj = [
    "{Id}",
    "{SongId}",
    None,
    "{PathId}",
    "Audio",
    "song",
    "{AlbumId}",
    "{Checksum}",
    "{LibraryId}",
    "{JellyfinParentId}",
]
add_view = """
INSERT OR REPLACE INTO      view(view_id, view_name, media_type)
VALUES                      (?, ?, ?)
"""
add_version = """
INSERT OR REPLACE INTO      version(idVersion)
VALUES                      (?)
"""

update_reference = """
UPDATE      jellyfin
SET         checksum = ?
WHERE       jellyfin_id = ?
"""
update_reference_obj = ["{Checksum}", "{Id}"]
update_parent = """
UPDATE      jellyfin
SET         parent_id = ?
WHERE       jellyfin_id = ?
"""
update_parent_movie_obj = ["{SetId}", "{Id}"]
update_parent_episode_obj = ["{SeasonId}", "{Id}"]
update_parent_album_obj = ["{ArtistId}", "{AlbumId}"]


delete_item = """
DELETE FROM     jellyfin
WHERE           jellyfin_id = ?
"""
delete_item_obj = ["{Id}"]
delete_item_by_parent = """
DELETE FROM     jellyfin
WHERE           parent_id = ?
AND             media_type = ?
"""
delete_item_by_parent_tvshow_obj = ["{ParentId}", "tvshow"]
delete_item_by_parent_season_obj = ["{ParentId}", "season"]
delete_item_by_parent_episode_obj = ["{ParentId}", "episode"]
delete_item_by_parent_song_obj = ["{ParentId}", "song"]
delete_item_by_parent_artist_obj = ["{ParentId}", "artist"]
delete_item_by_parent_album_obj = ["{KodiId}", "album"]
delete_item_by_kodi = """
DELETE FROM     jellyfin
WHERE           kodi_id = ?
AND             media_type = ?
"""
delete_item_by_wild = """
DELETE FROM     jellyfin
WHERE           jellyfin_id LIKE ?
"""
delete_view = """
DELETE FROM     view
WHERE           view_id = ?
"""
delete_parent_boxset_obj = [None, "{Movie}"]
delete_media_by_parent_id = """
DELETE FROM     jellyfin
WHERE           jellyfin_parent_id = ?
"""
delete_version = """
DELETE FROM     version
"""

get_episode_kodi_parent_path_id = """
SELECT          sh.kodi_pathid
FROM            jellyfin e
JOIN            jellyfin s
ON              e.parent_id = s.kodi_id
JOIN            jellyfin sh
ON              s.parent_id = sh.kodi_id
WHERE           e.media_type = ?
AND             s.media_type = ?
AND             sh.media_type = ?
AND             e.jellyfin_id = ?;
"""
get_episode_kodi_parent_path_id_obj = ["episode", "season", "tvshow", "{Id}"]