--
-- PostgreSQL database dump
--

\restrict gtmnhnnhvGPbISEXatQ92tRbfGW4Ltf9Lo0RLFqx6gbMlpR4nJHxMxY5ogWUEfv

-- Dumped from database version 18.4 (Ubuntu 18.4-1.pgdg25.10+1)
-- Dumped by pg_dump version 18.4 (Ubuntu 18.4-1.pgdg25.10+1)

SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET transaction_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;

--
-- Name: activitylog; Type: SCHEMA; Schema: -; Owner: jellyfin
--

CREATE SCHEMA activitylog;


ALTER SCHEMA activitylog OWNER TO jellyfin;

--
-- Name: authentication; Type: SCHEMA; Schema: -; Owner: jellyfin
--

CREATE SCHEMA authentication;


ALTER SCHEMA authentication OWNER TO jellyfin;

--
-- Name: displaypreferences; Type: SCHEMA; Schema: -; Owner: jellyfin
--

CREATE SCHEMA displaypreferences;


ALTER SCHEMA displaypreferences OWNER TO jellyfin;

--
-- Name: library; Type: SCHEMA; Schema: -; Owner: jellyfin
--

CREATE SCHEMA library;


ALTER SCHEMA library OWNER TO jellyfin;

--
-- Name: pg_repack; Type: EXTENSION; Schema: -; Owner: -
--

CREATE EXTENSION IF NOT EXISTS pg_repack WITH SCHEMA public;


--
-- Name: EXTENSION pg_repack; Type: COMMENT; Schema: -; Owner: 
--

COMMENT ON EXTENSION pg_repack IS 'Reorganize tables in PostgreSQL databases with minimal locks';


--
-- Name: users; Type: SCHEMA; Schema: -; Owner: jellyfin
--

CREATE SCHEMA users;


ALTER SCHEMA users OWNER TO jellyfin;

--
-- Name: pg_stat_statements; Type: EXTENSION; Schema: -; Owner: -
--

CREATE EXTENSION IF NOT EXISTS pg_stat_statements WITH SCHEMA public;


--
-- Name: EXTENSION pg_stat_statements; Type: COMMENT; Schema: -; Owner: 
--

COMMENT ON EXTENSION pg_stat_statements IS 'track planning and execution statistics of all SQL statements executed';


SET default_tablespace = '';

SET default_table_access_method = heap;

--
-- Name: activity_logs; Type: TABLE; Schema: activitylog; Owner: jellyfin
--

CREATE TABLE activitylog.activity_logs (
    id integer CONSTRAINT "ActivityLogs_Id_not_null" NOT NULL,
    name character varying(512) CONSTRAINT "ActivityLogs_Name_not_null" NOT NULL,
    overview character varying(512),
    short_overview character varying(512),
    type character varying(256) CONSTRAINT "ActivityLogs_Type_not_null" NOT NULL,
    user_id uuid CONSTRAINT "ActivityLogs_UserId_not_null" NOT NULL,
    item_id character varying(256),
    date_created timestamp with time zone CONSTRAINT "ActivityLogs_DateCreated_not_null" NOT NULL,
    log_severity integer CONSTRAINT "ActivityLogs_LogSeverity_not_null" NOT NULL,
    row_version bigint CONSTRAINT "ActivityLogs_RowVersion_not_null" NOT NULL
);


ALTER TABLE activitylog.activity_logs OWNER TO jellyfin;

--
-- Name: ActivityLogs_Id_seq; Type: SEQUENCE; Schema: activitylog; Owner: jellyfin
--

ALTER TABLE activitylog.activity_logs ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
    SEQUENCE NAME activitylog."ActivityLogs_Id_seq"
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1
);


--
-- Name: api_keys; Type: TABLE; Schema: authentication; Owner: jellyfin
--

CREATE TABLE authentication.api_keys (
    id integer CONSTRAINT "ApiKeys_Id_not_null" NOT NULL,
    date_created timestamp with time zone CONSTRAINT "ApiKeys_DateCreated_not_null" NOT NULL,
    date_last_activity timestamp with time zone CONSTRAINT "ApiKeys_DateLastActivity_not_null" NOT NULL,
    name character varying(64) CONSTRAINT "ApiKeys_Name_not_null" NOT NULL,
    access_token text CONSTRAINT "ApiKeys_AccessToken_not_null" NOT NULL
);


ALTER TABLE authentication.api_keys OWNER TO jellyfin;

--
-- Name: ApiKeys_Id_seq; Type: SEQUENCE; Schema: authentication; Owner: jellyfin
--

ALTER TABLE authentication.api_keys ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
    SEQUENCE NAME authentication."ApiKeys_Id_seq"
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1
);


--
-- Name: device_options; Type: TABLE; Schema: authentication; Owner: jellyfin
--

CREATE TABLE authentication.device_options (
    id integer CONSTRAINT "DeviceOptions_Id_not_null" NOT NULL,
    device_id text CONSTRAINT "DeviceOptions_DeviceId_not_null" NOT NULL,
    custom_name text
);


ALTER TABLE authentication.device_options OWNER TO jellyfin;

--
-- Name: DeviceOptions_Id_seq; Type: SEQUENCE; Schema: authentication; Owner: jellyfin
--

ALTER TABLE authentication.device_options ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
    SEQUENCE NAME authentication."DeviceOptions_Id_seq"
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1
);


--
-- Name: devices; Type: TABLE; Schema: authentication; Owner: jellyfin
--

CREATE TABLE authentication.devices (
    id integer CONSTRAINT "Devices_Id_not_null" NOT NULL,
    user_id uuid CONSTRAINT "Devices_UserId_not_null" NOT NULL,
    access_token text CONSTRAINT "Devices_AccessToken_not_null" NOT NULL,
    app_name character varying(64) CONSTRAINT "Devices_AppName_not_null" NOT NULL,
    app_version character varying(32) CONSTRAINT "Devices_AppVersion_not_null" NOT NULL,
    device_name character varying(64) CONSTRAINT "Devices_DeviceName_not_null" NOT NULL,
    device_id character varying(256) CONSTRAINT "Devices_DeviceId_not_null" NOT NULL,
    is_active boolean CONSTRAINT "Devices_IsActive_not_null" NOT NULL,
    date_created timestamp with time zone CONSTRAINT "Devices_DateCreated_not_null" NOT NULL,
    date_modified timestamp with time zone CONSTRAINT "Devices_DateModified_not_null" NOT NULL,
    date_last_activity timestamp with time zone CONSTRAINT "Devices_DateLastActivity_not_null" NOT NULL
);


ALTER TABLE authentication.devices OWNER TO jellyfin;

--
-- Name: Devices_Id_seq; Type: SEQUENCE; Schema: authentication; Owner: jellyfin
--

ALTER TABLE authentication.devices ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
    SEQUENCE NAME authentication."Devices_Id_seq"
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1
);


--
-- Name: custom_item_display_preferences; Type: TABLE; Schema: displaypreferences; Owner: jellyfin
--

CREATE TABLE displaypreferences.custom_item_display_preferences (
    id integer CONSTRAINT "CustomItemDisplayPreferences_Id_not_null" NOT NULL,
    user_id uuid CONSTRAINT "CustomItemDisplayPreferences_UserId_not_null" NOT NULL,
    item_id uuid CONSTRAINT "CustomItemDisplayPreferences_ItemId_not_null" NOT NULL,
    client character varying(32) CONSTRAINT "CustomItemDisplayPreferences_Client_not_null" NOT NULL,
    key text CONSTRAINT "CustomItemDisplayPreferences_Key_not_null" NOT NULL,
    value text
);


ALTER TABLE displaypreferences.custom_item_display_preferences OWNER TO jellyfin;

--
-- Name: CustomItemDisplayPreferences_Id_seq; Type: SEQUENCE; Schema: displaypreferences; Owner: jellyfin
--

ALTER TABLE displaypreferences.custom_item_display_preferences ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
    SEQUENCE NAME displaypreferences."CustomItemDisplayPreferences_Id_seq"
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1
);


--
-- Name: display_preferences; Type: TABLE; Schema: displaypreferences; Owner: jellyfin
--

CREATE TABLE displaypreferences.display_preferences (
    id integer CONSTRAINT "DisplayPreferences_Id_not_null" NOT NULL,
    user_id uuid CONSTRAINT "DisplayPreferences_UserId_not_null" NOT NULL,
    item_id uuid CONSTRAINT "DisplayPreferences_ItemId_not_null" NOT NULL,
    client character varying(32) CONSTRAINT "DisplayPreferences_Client_not_null" NOT NULL,
    show_sidebar boolean CONSTRAINT "DisplayPreferences_ShowSidebar_not_null" NOT NULL,
    show_backdrop boolean CONSTRAINT "DisplayPreferences_ShowBackdrop_not_null" NOT NULL,
    scroll_direction integer CONSTRAINT "DisplayPreferences_ScrollDirection_not_null" NOT NULL,
    index_by integer,
    skip_forward_length integer CONSTRAINT "DisplayPreferences_SkipForwardLength_not_null" NOT NULL,
    skip_backward_length integer CONSTRAINT "DisplayPreferences_SkipBackwardLength_not_null" NOT NULL,
    chromecast_version integer CONSTRAINT "DisplayPreferences_ChromecastVersion_not_null" NOT NULL,
    enable_next_video_info_overlay boolean CONSTRAINT "DisplayPreferences_EnableNextVideoInfoOverlay_not_null" NOT NULL,
    dashboard_theme character varying(32),
    tv_home character varying(32)
);


ALTER TABLE displaypreferences.display_preferences OWNER TO jellyfin;

--
-- Name: DisplayPreferences_Id_seq; Type: SEQUENCE; Schema: displaypreferences; Owner: jellyfin
--

ALTER TABLE displaypreferences.display_preferences ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
    SEQUENCE NAME displaypreferences."DisplayPreferences_Id_seq"
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1
);


--
-- Name: home_sections; Type: TABLE; Schema: displaypreferences; Owner: jellyfin
--

CREATE TABLE displaypreferences.home_sections (
    id integer CONSTRAINT "HomeSection_Id_not_null" NOT NULL,
    display_preferences_id integer CONSTRAINT "HomeSection_DisplayPreferencesId_not_null" NOT NULL,
    "order" integer CONSTRAINT "HomeSection_Order_not_null" NOT NULL,
    type integer CONSTRAINT "HomeSection_Type_not_null" NOT NULL
);


ALTER TABLE displaypreferences.home_sections OWNER TO jellyfin;

--
-- Name: HomeSection_Id_seq; Type: SEQUENCE; Schema: displaypreferences; Owner: jellyfin
--

ALTER TABLE displaypreferences.home_sections ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
    SEQUENCE NAME displaypreferences."HomeSection_Id_seq"
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1
);


--
-- Name: item_display_preferences; Type: TABLE; Schema: displaypreferences; Owner: jellyfin
--

CREATE TABLE displaypreferences.item_display_preferences (
    id integer CONSTRAINT "ItemDisplayPreferences_Id_not_null" NOT NULL,
    user_id uuid CONSTRAINT "ItemDisplayPreferences_UserId_not_null" NOT NULL,
    item_id uuid CONSTRAINT "ItemDisplayPreferences_ItemId_not_null" NOT NULL,
    client character varying(32) CONSTRAINT "ItemDisplayPreferences_Client_not_null" NOT NULL,
    view_type integer CONSTRAINT "ItemDisplayPreferences_ViewType_not_null" NOT NULL,
    remember_indexing boolean CONSTRAINT "ItemDisplayPreferences_RememberIndexing_not_null" NOT NULL,
    index_by integer,
    remember_sorting boolean CONSTRAINT "ItemDisplayPreferences_RememberSorting_not_null" NOT NULL,
    sort_by character varying(64) CONSTRAINT "ItemDisplayPreferences_SortBy_not_null" NOT NULL,
    sort_order integer CONSTRAINT "ItemDisplayPreferences_SortOrder_not_null" NOT NULL
);


ALTER TABLE displaypreferences.item_display_preferences OWNER TO jellyfin;

--
-- Name: ItemDisplayPreferences_Id_seq; Type: SEQUENCE; Schema: displaypreferences; Owner: jellyfin
--

ALTER TABLE displaypreferences.item_display_preferences ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
    SEQUENCE NAME displaypreferences."ItemDisplayPreferences_Id_seq"
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1
);


--
-- Name: image_infos; Type: TABLE; Schema: library; Owner: jellyfin
--

CREATE TABLE library.image_infos (
    id integer CONSTRAINT "ImageInfos_Id_not_null" NOT NULL,
    user_id uuid,
    path character varying(512) CONSTRAINT "ImageInfos_Path_not_null" NOT NULL,
    last_modified timestamp with time zone CONSTRAINT "ImageInfos_LastModified_not_null" NOT NULL
);


ALTER TABLE library.image_infos OWNER TO jellyfin;

--
-- Name: ImageInfos_Id_seq; Type: SEQUENCE; Schema: library; Owner: jellyfin
--

ALTER TABLE library.image_infos ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
    SEQUENCE NAME library."ImageInfos_Id_seq"
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1
);


--
-- Name: ancestor_ids; Type: TABLE; Schema: library; Owner: jellyfin
--

CREATE TABLE library.ancestor_ids (
    parent_item_id uuid CONSTRAINT "AncestorIds_ParentItemId_not_null" NOT NULL,
    item_id uuid CONSTRAINT "AncestorIds_ItemId_not_null" NOT NULL
);


ALTER TABLE library.ancestor_ids OWNER TO jellyfin;

--
-- Name: attachment_stream_infos; Type: TABLE; Schema: library; Owner: jellyfin
--

CREATE TABLE library.attachment_stream_infos (
    item_id uuid CONSTRAINT "AttachmentStreamInfos_ItemId_not_null" NOT NULL,
    index integer CONSTRAINT "AttachmentStreamInfos_Index_not_null" NOT NULL,
    codec text,
    codec_tag text,
    comment text,
    filename text,
    mime_type text
);


ALTER TABLE library.attachment_stream_infos OWNER TO jellyfin;

--
-- Name: audio_stream_details; Type: TABLE; Schema: library; Owner: postgres
--

CREATE TABLE library.audio_stream_details (
    item_id uuid CONSTRAINT "AudioStreamDetails_ItemId_not_null" NOT NULL,
    stream_index integer CONSTRAINT "AudioStreamDetails_StreamIndex_not_null" NOT NULL,
    channel_layout text,
    channels integer,
    sample_rate integer,
    is_hearing_impaired boolean
);


ALTER TABLE library.audio_stream_details OWNER TO postgres;

--
-- Name: base_item_audio_extras; Type: TABLE; Schema: library; Owner: postgres
--

CREATE TABLE library.base_item_audio_extras (
    item_id uuid CONSTRAINT "BaseItemAudioExtras_ItemId_not_null" NOT NULL,
    album text,
    artists text,
    album_artists text,
    lufs real,
    normalization_gain real
);


ALTER TABLE library.base_item_audio_extras OWNER TO postgres;

--
-- Name: base_item_image_infos; Type: TABLE; Schema: library; Owner: jellyfin
--

CREATE TABLE library.base_item_image_infos (
    id uuid CONSTRAINT "BaseItemImageInfos_Id_not_null" NOT NULL,
    path text CONSTRAINT "BaseItemImageInfos_Path_not_null" NOT NULL,
    date_modified timestamp with time zone,
    image_type integer CONSTRAINT "BaseItemImageInfos_ImageType_not_null" NOT NULL,
    width integer CONSTRAINT "BaseItemImageInfos_Width_not_null" NOT NULL,
    height integer CONSTRAINT "BaseItemImageInfos_Height_not_null" NOT NULL,
    blurhash bytea,
    item_id uuid CONSTRAINT "BaseItemImageInfos_ItemId_not_null" NOT NULL
);


ALTER TABLE library.base_item_image_infos OWNER TO jellyfin;

--
-- Name: base_item_live_tv_extras; Type: TABLE; Schema: library; Owner: postgres
--

CREATE TABLE library.base_item_live_tv_extras (
    item_id uuid CONSTRAINT "BaseItemLiveTvExtras_ItemId_not_null" NOT NULL,
    start_date timestamp with time zone,
    end_date timestamp with time zone,
    episode_title text,
    show_id text,
    external_series_id text,
    external_service_id text,
    audio integer
);


ALTER TABLE library.base_item_live_tv_extras OWNER TO postgres;

--
-- Name: base_item_metadata_fields; Type: TABLE; Schema: library; Owner: jellyfin
--

CREATE TABLE library.base_item_metadata_fields (
    id integer CONSTRAINT "BaseItemMetadataFields_Id_not_null" NOT NULL,
    item_id uuid CONSTRAINT "BaseItemMetadataFields_ItemId_not_null" NOT NULL
);


ALTER TABLE library.base_item_metadata_fields OWNER TO jellyfin;

--
-- Name: base_item_providers; Type: TABLE; Schema: library; Owner: jellyfin
--

CREATE TABLE library.base_item_providers (
    item_id uuid CONSTRAINT "BaseItemProviders_ItemId_not_null" NOT NULL,
    provider_id text CONSTRAINT "BaseItemProviders_ProviderId_not_null" NOT NULL,
    provider_value text CONSTRAINT "BaseItemProviders_ProviderValue_not_null" NOT NULL
);


ALTER TABLE library.base_item_providers OWNER TO jellyfin;

--
-- Name: base_item_trailer_types; Type: TABLE; Schema: library; Owner: jellyfin
--

CREATE TABLE library.base_item_trailer_types (
    id integer CONSTRAINT "BaseItemTrailerTypes_Id_not_null" NOT NULL,
    item_id uuid CONSTRAINT "BaseItemTrailerTypes_ItemId_not_null" NOT NULL
);


ALTER TABLE library.base_item_trailer_types OWNER TO jellyfin;

--
-- Name: base_item_tv_extras; Type: TABLE; Schema: library; Owner: postgres
--

CREATE TABLE library.base_item_tv_extras (
    item_id uuid CONSTRAINT "BaseItemTvExtras_ItemId_not_null" NOT NULL,
    series_id uuid,
    season_id uuid,
    series_name text,
    season_name text,
    series_presentation_unique_key text
);


ALTER TABLE library.base_item_tv_extras OWNER TO postgres;

--
-- Name: base_items; Type: TABLE; Schema: library; Owner: jellyfin
--

CREATE TABLE library.base_items (
    id uuid CONSTRAINT "BaseItems_Id_not_null" NOT NULL,
    type text CONSTRAINT "BaseItems_Type_not_null" NOT NULL,
    data text,
    path text,
    channel_id uuid,
    is_movie boolean CONSTRAINT "BaseItems_IsMovie_not_null" NOT NULL,
    community_rating real,
    custom_rating text,
    index_number integer,
    is_locked boolean CONSTRAINT "BaseItems_IsLocked_not_null" NOT NULL,
    name text,
    official_rating text,
    media_type text,
    overview text,
    parent_index_number integer,
    premiere_date timestamp with time zone,
    production_year integer,
    genres text,
    sort_name text,
    forced_sort_name text,
    run_time_ticks bigint,
    date_created timestamp with time zone,
    date_modified timestamp with time zone,
    is_series boolean CONSTRAINT "BaseItems_IsSeries_not_null" NOT NULL,
    is_repeat boolean CONSTRAINT "BaseItems_IsRepeat_not_null" NOT NULL,
    preferred_metadata_language text,
    preferred_metadata_country_code text,
    date_last_refreshed timestamp with time zone,
    date_last_saved timestamp with time zone,
    is_in_mixed_folder boolean CONSTRAINT "BaseItems_IsInMixedFolder_not_null" NOT NULL,
    studios text,
    tags text,
    is_folder boolean CONSTRAINT "BaseItems_IsFolder_not_null" NOT NULL,
    inherited_parental_rating_value integer,
    inherited_parental_rating_sub_value integer,
    unrated_type text,
    critic_rating real,
    clean_name text,
    presentation_unique_key text,
    original_title text,
    primary_version_id text,
    date_last_media_added timestamp with time zone,
    is_virtual_item boolean CONSTRAINT "BaseItems_IsVirtualItem_not_null" NOT NULL,
    tagline text,
    production_locations text,
    extra_ids text,
    total_bitrate integer,
    extra_type integer,
    external_id text,
    owner_id text,
    width integer,
    height integer,
    size bigint,
    parent_id uuid,
    top_parent_id uuid
);


ALTER TABLE library.base_items OWNER TO jellyfin;

--
-- Name: base_items_v; Type: VIEW; Schema: library; Owner: postgres
--

CREATE VIEW library.base_items_v AS
 SELECT b.id,
    b.type,
    b.data,
    b.path,
    b.channel_id,
    b.is_movie,
    b.community_rating,
    b.custom_rating,
    b.index_number,
    b.is_locked,
    b.name,
    b.official_rating,
    b.media_type,
    b.overview,
    b.parent_index_number,
    b.premiere_date,
    b.production_year,
    b.genres,
    b.sort_name,
    b.forced_sort_name,
    b.run_time_ticks,
    b.date_created,
    b.date_modified,
    b.is_series,
    b.is_repeat,
    b.preferred_metadata_language,
    b.preferred_metadata_country_code,
    b.date_last_refreshed,
    b.date_last_saved,
    b.is_in_mixed_folder,
    b.studios,
    b.tags,
    b.is_folder,
    b.inherited_parental_rating_value,
    b.inherited_parental_rating_sub_value,
    b.unrated_type,
    b.critic_rating,
    b.clean_name,
    b.presentation_unique_key,
    b.original_title,
    b.primary_version_id,
    b.date_last_media_added,
    b.is_virtual_item,
    b.tagline,
    b.production_locations,
    b.extra_ids,
    b.total_bitrate,
    b.extra_type,
    b.external_id,
    b.owner_id,
    b.width,
    b.height,
    b.size,
    b.parent_id,
    b.top_parent_id,
    tv.series_id,
    tv.season_id,
    tv.series_name,
    tv.season_name,
    tv.series_presentation_unique_key,
    ltv.start_date,
    ltv.end_date,
    ltv.episode_title,
    ltv.show_id,
    ltv.external_series_id,
    ltv.external_service_id,
    ltv.audio,
    au.album,
    au.artists,
    au.album_artists,
    au.lufs,
    au.normalization_gain
   FROM (((library.base_items b
     LEFT JOIN library.base_item_tv_extras tv ON ((tv.item_id = b.id)))
     LEFT JOIN library.base_item_live_tv_extras ltv ON ((ltv.item_id = b.id)))
     LEFT JOIN library.base_item_audio_extras au ON ((au.item_id = b.id)));


ALTER VIEW library.base_items_v OWNER TO postgres;

--
-- Name: chapters; Type: TABLE; Schema: library; Owner: jellyfin
--

CREATE TABLE library.chapters (
    item_id uuid CONSTRAINT "Chapters_ItemId_not_null" NOT NULL,
    chapter_index integer CONSTRAINT "Chapters_ChapterIndex_not_null" NOT NULL,
    start_position_ticks bigint CONSTRAINT "Chapters_StartPositionTicks_not_null" NOT NULL,
    name text,
    image_path text,
    image_date_modified timestamp with time zone
);


ALTER TABLE library.chapters OWNER TO jellyfin;

--
-- Name: people_base_item_map; Type: TABLE; Schema: library; Owner: jellyfin
--

CREATE TABLE library.people_base_item_map (
    role text CONSTRAINT "PeopleBaseItemMap_Role_not_null" NOT NULL,
    item_id uuid CONSTRAINT "PeopleBaseItemMap_ItemId_not_null" NOT NULL,
    people_id uuid CONSTRAINT "PeopleBaseItemMap_PeopleId_not_null" NOT NULL,
    sort_order integer,
    list_order integer
);


ALTER TABLE library.people_base_item_map OWNER TO jellyfin;

--
-- Name: peoples; Type: TABLE; Schema: library; Owner: jellyfin
--

CREATE TABLE library.peoples (
    id uuid CONSTRAINT "Peoples_Id_not_null" NOT NULL,
    name text CONSTRAINT "Peoples_Name_not_null" NOT NULL,
    person_type text
);


ALTER TABLE library.peoples OWNER TO jellyfin;

--
-- Name: item_people_v; Type: VIEW; Schema: library; Owner: postgres
--

CREATE VIEW library.item_people_v AS
 SELECT b.id AS item_id,
    b.type AS item_type,
    b.name AS item_name,
    tv.series_name,
    b.production_year,
    pe.id AS person_id,
    pe.name AS person_name,
    pe.person_type,
    pm.role,
    pm.sort_order,
    pm.list_order
   FROM (((library.people_base_item_map pm
     JOIN library.base_items b ON ((pm.item_id = b.id)))
     JOIN library.peoples pe ON ((pm.people_id = pe.id)))
     LEFT JOIN library.base_item_tv_extras tv ON ((tv.item_id = b.id)))
  WHERE (b.is_virtual_item = false);


ALTER VIEW library.item_people_v OWNER TO postgres;

--
-- Name: item_providers_v; Type: VIEW; Schema: library; Owner: postgres
--

CREATE VIEW library.item_providers_v AS
 SELECT b.id AS item_id,
    b.type,
    b.name,
    b.original_title,
    b.production_year,
    tv.series_name,
    b.index_number AS episode_number,
    b.parent_index_number AS season_number,
    max(
        CASE
            WHEN (p.provider_id = 'Imdb'::text) THEN p.provider_value
            ELSE NULL::text
        END) AS imdb_id,
    max(
        CASE
            WHEN (p.provider_id = 'Tmdb'::text) THEN p.provider_value
            ELSE NULL::text
        END) AS tmdb_id,
    max(
        CASE
            WHEN (p.provider_id = 'Tvdb'::text) THEN p.provider_value
            ELSE NULL::text
        END) AS tvdb_id,
    max(
        CASE
            WHEN (p.provider_id = 'TvRage'::text) THEN p.provider_value
            ELSE NULL::text
        END) AS tv_rage_id,
    max(
        CASE
            WHEN (p.provider_id = 'MusicBrainzAlbum'::text) THEN p.provider_value
            ELSE NULL::text
        END) AS music_brainz_album_id,
    max(
        CASE
            WHEN (p.provider_id = 'MusicBrainzArtist'::text) THEN p.provider_value
            ELSE NULL::text
        END) AS music_brainz_artist_id,
        CASE
            WHEN (count(
            CASE
                WHEN (p.provider_id <> ALL (ARRAY['Imdb'::text, 'Tmdb'::text, 'Tvdb'::text, 'TvRage'::text, 'MusicBrainzAlbum'::text, 'MusicBrainzArtist'::text])) THEN 1
                ELSE NULL::integer
            END) > 0) THEN (jsonb_object_agg(p.provider_id, p.provider_value) FILTER (WHERE (p.provider_id <> ALL (ARRAY['Imdb'::text, 'Tmdb'::text, 'Tvdb'::text, 'TvRage'::text, 'MusicBrainzAlbum'::text, 'MusicBrainzArtist'::text]))))::text
            ELSE NULL::text
        END AS other_providers
   FROM ((library.base_items b
     LEFT JOIN library.base_item_providers p ON ((b.id = p.item_id)))
     LEFT JOIN library.base_item_tv_extras tv ON ((b.id = tv.item_id)))
  WHERE (b.is_virtual_item = false)
  GROUP BY b.id, b.type, b.name, b.original_title, b.production_year, tv.series_name, b.index_number, b.parent_index_number;


ALTER VIEW library.item_providers_v OWNER TO postgres;

--
-- Name: item_values; Type: TABLE; Schema: library; Owner: jellyfin
--

CREATE TABLE library.item_values (
    item_value_id uuid CONSTRAINT "ItemValues_ItemValueId_not_null" NOT NULL,
    type integer CONSTRAINT "ItemValues_Type_not_null" NOT NULL,
    value text CONSTRAINT "ItemValues_Value_not_null" NOT NULL,
    clean_value text CONSTRAINT "ItemValues_CleanValue_not_null" NOT NULL
);


ALTER TABLE library.item_values OWNER TO jellyfin;

--
-- Name: item_values_map; Type: TABLE; Schema: library; Owner: jellyfin
--

CREATE TABLE library.item_values_map (
    item_id uuid CONSTRAINT "ItemValuesMap_ItemId_not_null" NOT NULL,
    item_value_id uuid CONSTRAINT "ItemValuesMap_ItemValueId_not_null" NOT NULL
);


ALTER TABLE library.item_values_map OWNER TO jellyfin;

--
-- Name: keyframe_data; Type: TABLE; Schema: library; Owner: jellyfin
--

CREATE TABLE library.keyframe_data (
    item_id uuid CONSTRAINT "KeyframeData_ItemId_not_null" NOT NULL,
    total_duration bigint CONSTRAINT "KeyframeData_TotalDuration_not_null" NOT NULL,
    keyframe_ticks bigint[]
);


ALTER TABLE library.keyframe_data OWNER TO jellyfin;

--
-- Name: library_options; Type: TABLE; Schema: library; Owner: postgres
--

CREATE TABLE library.library_options (
    library_path text CONSTRAINT "LibraryOptions_LibraryPath_not_null" NOT NULL,
    options_json jsonb CONSTRAINT "LibraryOptions_OptionsJson_not_null" NOT NULL,
    version integer DEFAULT 1 CONSTRAINT "LibraryOptions_Version_not_null" NOT NULL,
    date_created timestamp with time zone DEFAULT now() CONSTRAINT "LibraryOptions_DateCreated_not_null" NOT NULL,
    date_modified timestamp with time zone DEFAULT now() CONSTRAINT "LibraryOptions_DateModified_not_null" NOT NULL
);


ALTER TABLE library.library_options OWNER TO postgres;

--
-- Name: media_stream_infos; Type: TABLE; Schema: library; Owner: jellyfin
--

CREATE TABLE library.media_stream_infos (
    item_id uuid CONSTRAINT "MediaStreamInfos_ItemId_not_null" NOT NULL,
    stream_index integer CONSTRAINT "MediaStreamInfos_StreamIndex_not_null" NOT NULL,
    stream_type integer CONSTRAINT "MediaStreamInfos_StreamType_not_null" NOT NULL,
    codec text,
    language text,
    profile text,
    path text,
    bit_rate integer,
    is_default boolean CONSTRAINT "MediaStreamInfos_IsDefault_not_null" NOT NULL,
    is_forced boolean CONSTRAINT "MediaStreamInfos_IsForced_not_null" NOT NULL,
    is_external boolean CONSTRAINT "MediaStreamInfos_IsExternal_not_null" NOT NULL,
    level real,
    codec_tag text,
    comment text,
    is_avc boolean,
    title text,
    time_base text,
    codec_time_base text
);


ALTER TABLE library.media_stream_infos OWNER TO jellyfin;

--
-- Name: video_stream_details; Type: TABLE; Schema: library; Owner: postgres
--

CREATE TABLE library.video_stream_details (
    item_id uuid CONSTRAINT "VideoStreamDetails_ItemId_not_null" NOT NULL,
    stream_index integer CONSTRAINT "VideoStreamDetails_StreamIndex_not_null" NOT NULL,
    aspect_ratio text,
    is_interlaced boolean,
    height integer,
    width integer,
    average_frame_rate real,
    real_frame_rate real,
    pixel_format text,
    bit_depth integer,
    is_anamorphic boolean,
    ref_frames integer,
    nal_length_size text,
    color_primaries text,
    color_space text,
    color_transfer text,
    dv_version_major integer,
    dv_version_minor integer,
    dv_profile integer,
    dv_level integer,
    rpu_present_flag integer,
    el_present_flag integer,
    bl_present_flag integer,
    dv_bl_signal_compatibility_id integer,
    rotation integer,
    key_frames text,
    [REDACTED] boolean
);


ALTER TABLE library.video_stream_details OWNER TO postgres;

--
-- Name: library_summary_v; Type: VIEW; Schema: library; Owner: postgres
--

CREATE VIEW library.library_summary_v AS
 WITH primary_video AS (
         SELECT DISTINCT ON (m.item_id) m.item_id,
            vd.height,
            vd.dv_profile,
            vd.hdr10_plus_present_flag,
            vd.color_transfer
           FROM (library.media_stream_infos m
             JOIN library.video_stream_details vd ON (((vd.item_id = m.item_id) AND (vd.stream_index = m.stream_index))))
          WHERE (m.stream_type = 1)
          ORDER BY m.item_id, m.stream_index
        )
 SELECT b.type,
    count(*) AS item_count,
    count(*) FILTER (WHERE (b.production_year IS NOT NULL)) AS with_year,
    min(b.production_year) AS oldest_year,
    max(b.production_year) AS newest_year,
    round((avg(b.community_rating))::numeric, 2) AS avg_community_rating,
    sum(b.run_time_ticks) AS total_run_time_ticks,
    round((COALESCE(sum(b.run_time_ticks), (0)::numeric) / 600000000.0), 1) AS total_runtime_hours,
    sum(b.size) AS total_size_bytes,
    round((COALESCE(sum(b.size), (0)::numeric) / (1024.0 ^ (3)::numeric)), 2) AS total_size_gb,
    count(*) FILTER (WHERE (pv.height >= 2160)) AS count4_k,
    count(*) FILTER (WHERE ((pv.height >= 1080) AND (pv.height <= 2159))) AS count1080p,
    count(*) FILTER (WHERE ((pv.height >= 720) AND (pv.height <= 1079))) AS count720p,
    count(*) FILTER (WHERE ((pv.height < 720) AND (pv.height IS NOT NULL))) AS count_sd,
    count(*) FILTER (WHERE (pv.dv_profile IS NOT NULL)) AS count_dolby_vision,
    count(*) FILTER (WHERE (pv.hdr10_plus_present_flag = true)) AS count_hdr10_plus,
    count(*) FILTER (WHERE ((pv.color_transfer = 'smpte2084'::text) AND (pv.dv_profile IS NULL) AND (pv.hdr10_plus_present_flag IS NOT TRUE))) AS count_hdr10
   FROM (library.base_items b
     LEFT JOIN primary_video pv ON ((pv.item_id = b.id)))
  WHERE ((b.is_virtual_item = false) AND (b.is_folder = false))
  GROUP BY b.type
  ORDER BY (count(*)) DESC;


ALTER VIEW library.library_summary_v OWNER TO postgres;

--
-- Name: media_segments; Type: TABLE; Schema: library; Owner: jellyfin
--

CREATE TABLE library.media_segments (
    id uuid CONSTRAINT "MediaSegments_Id_not_null" NOT NULL,
    item_id uuid CONSTRAINT "MediaSegments_ItemId_not_null" NOT NULL,
    type integer CONSTRAINT "MediaSegments_Type_not_null" NOT NULL,
    end_ticks bigint CONSTRAINT "MediaSegments_EndTicks_not_null" NOT NULL,
    start_ticks bigint CONSTRAINT "MediaSegments_StartTicks_not_null" NOT NULL,
    segment_provider_id text CONSTRAINT "MediaSegments_SegmentProviderId_not_null" NOT NULL
);


ALTER TABLE library.media_segments OWNER TO jellyfin;

--
-- Name: media_stream_infos_v; Type: VIEW; Schema: library; Owner: postgres
--

CREATE VIEW library.media_stream_infos_v AS
 SELECT m.item_id,
    m.stream_index,
    m.stream_type,
    m.codec,
    m.language,
    m.profile,
    m.path,
    m.bit_rate,
    m.is_default,
    m.is_forced,
    m.is_external,
    m.level,
    m.codec_tag,
    m.comment,
    m.is_avc,
    m.title,
    m.time_base,
    m.codec_time_base,
    a.channel_layout,
    a.channels,
    a.sample_rate,
    a.is_hearing_impaired,
    v.aspect_ratio,
    v.is_interlaced,
    v.height,
    v.width,
    v.average_frame_rate,
    v.real_frame_rate,
    v.pixel_format,
    v.bit_depth,
    v.is_anamorphic,
    v.ref_frames,
    v.nal_length_size,
    v.color_primaries,
    v.color_space,
    v.color_transfer,
    v.dv_version_major,
    v.dv_version_minor,
    v.dv_profile,
    v.dv_level,
    v.rpu_present_flag,
    v.el_present_flag,
    v.bl_present_flag,
    v.dv_bl_signal_compatibility_id,
    v.rotation,
    v.key_frames,
    v.[REDACTED]
   FROM ((library.media_stream_infos m
     LEFT JOIN library.audio_stream_details a ON (((m.item_id = a.item_id) AND (m.stream_index = a.stream_index))))
     LEFT JOIN library.video_stream_details v ON (((m.item_id = v.item_id) AND (m.stream_index = v.stream_index))));


ALTER VIEW library.media_stream_infos_v OWNER TO postgres;

--
-- Name: trickplay_infos; Type: TABLE; Schema: library; Owner: jellyfin
--

CREATE TABLE library.trickplay_infos (
    item_id uuid CONSTRAINT "TrickplayInfos_ItemId_not_null" NOT NULL,
    width integer CONSTRAINT "TrickplayInfos_Width_not_null" NOT NULL,
    height integer CONSTRAINT "TrickplayInfos_Height_not_null" NOT NULL,
    tile_width integer CONSTRAINT "TrickplayInfos_TileWidth_not_null" NOT NULL,
    tile_height integer CONSTRAINT "TrickplayInfos_TileHeight_not_null" NOT NULL,
    thumbnail_count integer CONSTRAINT "TrickplayInfos_ThumbnailCount_not_null" NOT NULL,
    "interval" integer CONSTRAINT "TrickplayInfos_Interval_not_null" NOT NULL,
    bandwidth integer CONSTRAINT "TrickplayInfos_Bandwidth_not_null" NOT NULL
);


ALTER TABLE library.trickplay_infos OWNER TO jellyfin;

--
-- Name: user_data; Type: TABLE; Schema: library; Owner: jellyfin
--

CREATE TABLE library.user_data (
    custom_data_key text CONSTRAINT "UserData_CustomDataKey_not_null" NOT NULL,
    item_id uuid CONSTRAINT "UserData_ItemId_not_null" NOT NULL,
    user_id uuid CONSTRAINT "UserData_UserId_not_null" NOT NULL,
    rating double precision,
    playback_position_ticks bigint CONSTRAINT "UserData_PlaybackPositionTicks_not_null" NOT NULL,
    play_count integer CONSTRAINT "UserData_PlayCount_not_null" NOT NULL,
    is_favorite boolean CONSTRAINT "UserData_IsFavorite_not_null" NOT NULL,
    last_played_date timestamp with time zone,
    played boolean CONSTRAINT "UserData_Played_not_null" NOT NULL,
    audio_stream_index integer,
    subtitle_stream_index integer,
    likes boolean,
    retention_date timestamp with time zone,
    row_version bigint DEFAULT 0 NOT NULL
);


ALTER TABLE library.user_data OWNER TO jellyfin;

--
-- Name: users; Type: TABLE; Schema: users; Owner: jellyfin
--

CREATE TABLE users.users (
    id uuid CONSTRAINT "Users_Id_not_null" NOT NULL,
    username character varying(255) CONSTRAINT "Users_Username_not_null" NOT NULL,
    password character varying(65535),
    must_update_password boolean CONSTRAINT "Users_MustUpdatePassword_not_null" NOT NULL,
    audio_language_preference character varying(255),
    authentication_provider_id character varying(255) CONSTRAINT "Users_AuthenticationProviderId_not_null" NOT NULL,
    password_reset_provider_id character varying(255) CONSTRAINT "Users_PasswordResetProviderId_not_null" NOT NULL,
    invalid_login_attempt_count integer CONSTRAINT "Users_InvalidLoginAttemptCount_not_null" NOT NULL,
    last_activity_date timestamp with time zone,
    last_login_date timestamp with time zone,
    login_attempts_before_lockout integer,
    max_active_sessions integer CONSTRAINT "Users_MaxActiveSessions_not_null" NOT NULL,
    subtitle_mode integer CONSTRAINT "Users_SubtitleMode_not_null" NOT NULL,
    play_default_audio_track boolean CONSTRAINT "Users_PlayDefaultAudioTrack_not_null" NOT NULL,
    subtitle_language_preference character varying(255),
    display_missing_episodes boolean CONSTRAINT "Users_DisplayMissingEpisodes_not_null" NOT NULL,
    display_collections_view boolean CONSTRAINT "Users_DisplayCollectionsView_not_null" NOT NULL,
    enable_local_password boolean CONSTRAINT "Users_EnableLocalPassword_not_null" NOT NULL,
    hide_played_in_latest boolean CONSTRAINT "Users_HidePlayedInLatest_not_null" NOT NULL,
    remember_audio_selections boolean CONSTRAINT "Users_RememberAudioSelections_not_null" NOT NULL,
    remember_subtitle_selections boolean CONSTRAINT "Users_RememberSubtitleSelections_not_null" NOT NULL,
    enable_next_episode_auto_play boolean CONSTRAINT "Users_EnableNextEpisodeAutoPlay_not_null" NOT NULL,
    enable_auto_login boolean CONSTRAINT "Users_EnableAutoLogin_not_null" NOT NULL,
    enable_user_preference_access boolean CONSTRAINT "Users_EnableUserPreferenceAccess_not_null" NOT NULL,
    max_parental_rating_score integer,
    max_parental_rating_sub_score integer,
    remote_client_bitrate_limit integer,
    internal_id bigint CONSTRAINT "Users_InternalId_not_null" NOT NULL,
    sync_play_access integer CONSTRAINT "Users_SyncPlayAccess_not_null" NOT NULL,
    cast_receiver_id character varying(32),
    row_version bigint CONSTRAINT "Users_RowVersion_not_null" NOT NULL
);


ALTER TABLE users.users OWNER TO jellyfin;

--
-- Name: user_playback_history_v; Type: VIEW; Schema: library; Owner: postgres
--

CREATE VIEW library.user_playback_history_v AS
 SELECT u.username,
    u.id AS user_id,
    b.name AS item_name,
    b.type AS item_type,
    tv.series_name,
    tv.season_name,
    b.index_number AS episode_number,
    b.parent_index_number AS season_number,
    b.production_year,
    b.run_time_ticks,
    ud.item_id,
    ud.played,
    ud.play_count,
    ud.last_played_date,
    ud.playback_position_ticks,
        CASE
            WHEN (b.run_time_ticks > 0) THEN round((((ud.playback_position_ticks)::numeric * (100)::numeric) / (b.run_time_ticks)::numeric), 1)
            ELSE NULL::numeric
        END AS progress_pct,
    ud.is_favorite,
    ud.rating,
    ud.audio_stream_index,
    ud.subtitle_stream_index
   FROM (((library.user_data ud
     JOIN library.base_items b ON ((ud.item_id = b.id)))
     JOIN users.users u ON ((ud.user_id = u.id)))
     LEFT JOIN library.base_item_tv_extras tv ON ((tv.item_id = b.id)))
  WHERE (ud.custom_data_key = ''::text);


ALTER VIEW library.user_playback_history_v OWNER TO postgres;

--
-- Name: video_items_v; Type: VIEW; Schema: library; Owner: postgres
--

CREATE VIEW library.video_items_v AS
 SELECT b.id AS item_id,
    b.type,
    b.name,
    b.original_title,
    b.production_year,
    b.official_rating,
    b.community_rating,
    b.run_time_ticks,
    b.path,
    b.date_created,
    b.date_modified,
    tv.series_name,
    tv.season_name,
    b.index_number AS episode_number,
    b.parent_index_number AS season_number,
    b.total_bitrate,
    b.size,
    m.codec AS video_codec,
    m.profile AS video_profile,
    vd.width,
    vd.height,
    vd.average_frame_rate,
    vd.bit_depth,
    vd.pixel_format,
    vd.color_space,
    vd.color_transfer,
    vd.color_primaries,
    vd.is_interlaced,
    vd.is_anamorphic,
    vd.aspect_ratio,
    (vd.dv_profile IS NOT NULL) AS is_dolby_vision,
    vd.hdr10_plus_present_flag AS is_hdr10_plus,
        CASE
            WHEN (vd.dv_profile IS NOT NULL) THEN 'Dolby Vision'::text
            WHEN (vd.hdr10_plus_present_flag = true) THEN 'HDR10+'::text
            WHEN (vd.color_transfer = 'smpte2084'::text) THEN 'HDR10'::text
            WHEN (vd.color_transfer = 'arib-std-b67'::text) THEN 'HLG'::text
            ELSE 'SDR'::text
        END AS hdr_format,
    ( SELECT count(*) AS count
           FROM library.media_stream_infos ms
          WHERE ((ms.item_id = b.id) AND (ms.stream_type = 0))) AS audio_track_count,
    ( SELECT count(*) AS count
           FROM library.media_stream_infos ms
          WHERE ((ms.item_id = b.id) AND (ms.stream_type = 2))) AS subtitle_track_count
   FROM (((library.base_items b
     JOIN LATERAL ( SELECT ms.stream_index,
            ms.codec,
            ms.profile
           FROM library.media_stream_infos ms
          WHERE ((ms.item_id = b.id) AND (ms.stream_type = 1))
          ORDER BY ms.stream_index
         LIMIT 1) m ON (true))
     JOIN library.video_stream_details vd ON (((vd.item_id = b.id) AND (vd.stream_index = m.stream_index))))
     LEFT JOIN library.base_item_tv_extras tv ON ((tv.item_id = b.id)))
  WHERE ((b.is_virtual_item = false) AND (b.is_folder = false));


ALTER VIEW library.video_items_v OWNER TO postgres;

--
-- Name: __EFMigrationsHistory; Type: TABLE; Schema: public; Owner: jellyfin
--

CREATE TABLE public."__EFMigrationsHistory" (
    migration_id character varying(150) CONSTRAINT "__EFMigrationsHistory_MigrationId_not_null" NOT NULL,
    product_version character varying(32) CONSTRAINT "__EFMigrationsHistory_ProductVersion_not_null" NOT NULL
);


ALTER TABLE public."__EFMigrationsHistory" OWNER TO jellyfin;

--
-- Name: __ef_migrations_history; Type: TABLE; Schema: public; Owner: jellyfin
--

CREATE TABLE public.__ef_migrations_history (
    migration_id character varying(150) NOT NULL,
    product_version character varying(32) NOT NULL
);


ALTER TABLE public.__ef_migrations_history OWNER TO jellyfin;

--
-- Name: __efmigrationshistory; Type: TABLE; Schema: public; Owner: postgres
--

CREATE TABLE public.__efmigrationshistory (
    migrationid character varying(150) NOT NULL,
    productversion character varying(32) NOT NULL
);


ALTER TABLE public.__efmigrationshistory OWNER TO postgres;

--
-- Name: bloat_tables; Type: TABLE; Schema: public; Owner: postgres
--

CREATE TABLE public.bloat_tables (
    count bigint
);


ALTER TABLE public.bloat_tables OWNER TO postgres;

--
-- Name: access_schedules; Type: TABLE; Schema: users; Owner: jellyfin
--

CREATE TABLE users.access_schedules (
    id integer CONSTRAINT "AccessSchedules_Id_not_null" NOT NULL,
    user_id uuid CONSTRAINT "AccessSchedules_UserId_not_null" NOT NULL,
    day_of_week integer CONSTRAINT "AccessSchedules_DayOfWeek_not_null" NOT NULL,
    start_hour double precision CONSTRAINT "AccessSchedules_StartHour_not_null" NOT NULL,
    end_hour double precision CONSTRAINT "AccessSchedules_EndHour_not_null" NOT NULL
);


ALTER TABLE users.access_schedules OWNER TO jellyfin;

--
-- Name: AccessSchedules_Id_seq; Type: SEQUENCE; Schema: users; Owner: jellyfin
--

ALTER TABLE users.access_schedules ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
    SEQUENCE NAME users."AccessSchedules_Id_seq"
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1
);


--
-- Name: permissions; Type: TABLE; Schema: users; Owner: jellyfin
--

CREATE TABLE users.permissions (
    id integer CONSTRAINT "Permissions_Id_not_null" NOT NULL,
    user_id uuid,
    kind integer CONSTRAINT "Permissions_Kind_not_null" NOT NULL,
    value boolean CONSTRAINT "Permissions_Value_not_null" NOT NULL,
    row_version bigint CONSTRAINT "Permissions_RowVersion_not_null" NOT NULL,
    permission_permissions_guid uuid
);


ALTER TABLE users.permissions OWNER TO jellyfin;

--
-- Name: Permissions_Id_seq; Type: SEQUENCE; Schema: users; Owner: jellyfin
--

ALTER TABLE users.permissions ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
    SEQUENCE NAME users."Permissions_Id_seq"
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1
);


--
-- Name: preferences; Type: TABLE; Schema: users; Owner: jellyfin
--

CREATE TABLE users.preferences (
    id integer CONSTRAINT "Preferences_Id_not_null" NOT NULL,
    user_id uuid,
    kind integer CONSTRAINT "Preferences_Kind_not_null" NOT NULL,
    value character varying(65535) CONSTRAINT "Preferences_Value_not_null" NOT NULL,
    row_version bigint CONSTRAINT "Preferences_RowVersion_not_null" NOT NULL,
    preference_preferences_guid uuid
);


ALTER TABLE users.preferences OWNER TO jellyfin;

--
-- Name: Preferences_Id_seq; Type: SEQUENCE; Schema: users; Owner: jellyfin
--

ALTER TABLE users.preferences ALTER COLUMN id ADD GENERATED BY DEFAULT AS IDENTITY (
    SEQUENCE NAME users."Preferences_Id_seq"
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1
);


--
-- Name: activity_logs PK_ActivityLogs; Type: CONSTRAINT; Schema: activitylog; Owner: jellyfin
--

ALTER TABLE ONLY activitylog.activity_logs
    ADD CONSTRAINT "PK_ActivityLogs" PRIMARY KEY (id);


--
-- Name: api_keys PK_ApiKeys; Type: CONSTRAINT; Schema: authentication; Owner: jellyfin
--

ALTER TABLE ONLY authentication.api_keys
    ADD CONSTRAINT "PK_ApiKeys" PRIMARY KEY (id);


--
-- Name: device_options PK_DeviceOptions; Type: CONSTRAINT; Schema: authentication; Owner: jellyfin
--

ALTER TABLE ONLY authentication.device_options
    ADD CONSTRAINT "PK_DeviceOptions" PRIMARY KEY (id);


--
-- Name: devices PK_Devices; Type: CONSTRAINT; Schema: authentication; Owner: jellyfin
--

ALTER TABLE ONLY authentication.devices
    ADD CONSTRAINT "PK_Devices" PRIMARY KEY (id);


--
-- Name: custom_item_display_preferences PK_CustomItemDisplayPreferences; Type: CONSTRAINT; Schema: displaypreferences; Owner: jellyfin
--

ALTER TABLE ONLY displaypreferences.custom_item_display_preferences
    ADD CONSTRAINT "PK_CustomItemDisplayPreferences" PRIMARY KEY (id);


--
-- Name: display_preferences PK_DisplayPreferences; Type: CONSTRAINT; Schema: displaypreferences; Owner: jellyfin
--

ALTER TABLE ONLY displaypreferences.display_preferences
    ADD CONSTRAINT "PK_DisplayPreferences" PRIMARY KEY (id);


--
-- Name: home_sections PK_HomeSection; Type: CONSTRAINT; Schema: displaypreferences; Owner: jellyfin
--

ALTER TABLE ONLY displaypreferences.home_sections
    ADD CONSTRAINT "PK_HomeSection" PRIMARY KEY (id);


--
-- Name: item_display_preferences PK_ItemDisplayPreferences; Type: CONSTRAINT; Schema: displaypreferences; Owner: jellyfin
--

ALTER TABLE ONLY displaypreferences.item_display_preferences
    ADD CONSTRAINT "PK_ItemDisplayPreferences" PRIMARY KEY (id);


--
-- Name: base_item_image_infos BaseItemImageInfos_pkey; Type: CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.base_item_image_infos
    ADD CONSTRAINT "BaseItemImageInfos_pkey" PRIMARY KEY (id);


--
-- Name: ancestor_ids PK_AncestorIds; Type: CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.ancestor_ids
    ADD CONSTRAINT "PK_AncestorIds" PRIMARY KEY (item_id, parent_item_id);


--
-- Name: attachment_stream_infos PK_AttachmentStreamInfos; Type: CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.attachment_stream_infos
    ADD CONSTRAINT "PK_AttachmentStreamInfos" PRIMARY KEY (item_id, index);


--
-- Name: audio_stream_details PK_AudioStreamDetails; Type: CONSTRAINT; Schema: library; Owner: postgres
--

ALTER TABLE ONLY library.audio_stream_details
    ADD CONSTRAINT "PK_AudioStreamDetails" PRIMARY KEY (item_id, stream_index);


--
-- Name: base_item_audio_extras PK_BaseItemAudioExtras; Type: CONSTRAINT; Schema: library; Owner: postgres
--

ALTER TABLE ONLY library.base_item_audio_extras
    ADD CONSTRAINT "PK_BaseItemAudioExtras" PRIMARY KEY (item_id);


--
-- Name: base_item_live_tv_extras PK_BaseItemLiveTvExtras; Type: CONSTRAINT; Schema: library; Owner: postgres
--

ALTER TABLE ONLY library.base_item_live_tv_extras
    ADD CONSTRAINT "PK_BaseItemLiveTvExtras" PRIMARY KEY (item_id);


--
-- Name: base_item_metadata_fields PK_BaseItemMetadataFields; Type: CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.base_item_metadata_fields
    ADD CONSTRAINT "PK_BaseItemMetadataFields" PRIMARY KEY (id, item_id);


--
-- Name: base_item_providers PK_BaseItemProviders; Type: CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.base_item_providers
    ADD CONSTRAINT "PK_BaseItemProviders" PRIMARY KEY (item_id, provider_id);


--
-- Name: base_item_trailer_types PK_BaseItemTrailerTypes; Type: CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.base_item_trailer_types
    ADD CONSTRAINT "PK_BaseItemTrailerTypes" PRIMARY KEY (id, item_id);


--
-- Name: base_item_tv_extras PK_BaseItemTvExtras; Type: CONSTRAINT; Schema: library; Owner: postgres
--

ALTER TABLE ONLY library.base_item_tv_extras
    ADD CONSTRAINT "PK_BaseItemTvExtras" PRIMARY KEY (item_id);


--
-- Name: base_items PK_BaseItems; Type: CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.base_items
    ADD CONSTRAINT "PK_BaseItems" PRIMARY KEY (id);


--
-- Name: chapters PK_Chapters; Type: CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.chapters
    ADD CONSTRAINT "PK_Chapters" PRIMARY KEY (item_id, chapter_index);


--
-- Name: image_infos PK_ImageInfos; Type: CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.image_infos
    ADD CONSTRAINT "PK_ImageInfos" PRIMARY KEY (id);


--
-- Name: item_values PK_ItemValues; Type: CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.item_values
    ADD CONSTRAINT "PK_ItemValues" PRIMARY KEY (item_value_id);


--
-- Name: keyframe_data PK_KeyframeData; Type: CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.keyframe_data
    ADD CONSTRAINT "PK_KeyframeData" PRIMARY KEY (item_id);


--
-- Name: library_options PK_LibraryOptions; Type: CONSTRAINT; Schema: library; Owner: postgres
--

ALTER TABLE ONLY library.library_options
    ADD CONSTRAINT "PK_LibraryOptions" PRIMARY KEY (library_path);


--
-- Name: media_segments PK_MediaSegments; Type: CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.media_segments
    ADD CONSTRAINT "PK_MediaSegments" PRIMARY KEY (id);


--
-- Name: media_stream_infos PK_MediaStreamInfos; Type: CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.media_stream_infos
    ADD CONSTRAINT "PK_MediaStreamInfos" PRIMARY KEY (item_id, stream_index);


--
-- Name: peoples PK_Peoples; Type: CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.peoples
    ADD CONSTRAINT "PK_Peoples" PRIMARY KEY (id);


--
-- Name: trickplay_infos PK_TrickplayInfos; Type: CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.trickplay_infos
    ADD CONSTRAINT "PK_TrickplayInfos" PRIMARY KEY (item_id, width);


--
-- Name: user_data PK_UserData; Type: CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.user_data
    ADD CONSTRAINT "PK_UserData" PRIMARY KEY (item_id, user_id, custom_data_key);


--
-- Name: video_stream_details PK_VideoStreamDetails; Type: CONSTRAINT; Schema: library; Owner: postgres
--

ALTER TABLE ONLY library.video_stream_details
    ADD CONSTRAINT "PK_VideoStreamDetails" PRIMARY KEY (item_id, stream_index);


--
-- Name: item_values_map pk_itemvaluesmap; Type: CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.item_values_map
    ADD CONSTRAINT pk_itemvaluesmap PRIMARY KEY (item_value_id, item_id);


--
-- Name: people_base_item_map [REDACTED] Type: CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.people_base_item_map
    ADD CONSTRAINT [REDACTED]PRIMARY KEY (item_id, people_id, role);


--
-- Name: __EFMigrationsHistory PK___EFMigrationsHistory; Type: CONSTRAINT; Schema: public; Owner: jellyfin
--

ALTER TABLE ONLY public."__EFMigrationsHistory"
    ADD CONSTRAINT "PK___EFMigrationsHistory" PRIMARY KEY (migration_id);


--
-- Name: __ef_migrations_history [REDACTED] Type: CONSTRAINT; Schema: public; Owner: jellyfin
--

ALTER TABLE ONLY public.__ef_migrations_history
    ADD CONSTRAINT [REDACTED]PRIMARY KEY (migration_id);


--
-- Name: access_schedules PK_AccessSchedules; Type: CONSTRAINT; Schema: users; Owner: jellyfin
--

ALTER TABLE ONLY users.access_schedules
    ADD CONSTRAINT "PK_AccessSchedules" PRIMARY KEY (id);


--
-- Name: permissions PK_Permissions; Type: CONSTRAINT; Schema: users; Owner: jellyfin
--

ALTER TABLE ONLY users.permissions
    ADD CONSTRAINT "PK_Permissions" PRIMARY KEY (id);


--
-- Name: preferences PK_Preferences; Type: CONSTRAINT; Schema: users; Owner: jellyfin
--

ALTER TABLE ONLY users.preferences
    ADD CONSTRAINT "PK_Preferences" PRIMARY KEY (id);


--
-- Name: users PK_Users; Type: CONSTRAINT; Schema: users; Owner: jellyfin
--

ALTER TABLE ONLY users.users
    ADD CONSTRAINT "PK_Users" PRIMARY KEY (id);


--
-- Name: IX_ActivityLogs_DateCreated; Type: INDEX; Schema: activitylog; Owner: jellyfin
--

CREATE INDEX "IX_ActivityLogs_DateCreated" ON activitylog.activity_logs USING btree (date_created);


--
-- Name: idx_activitylogs_userid_datecreated; Type: INDEX; Schema: activitylog; Owner: jellyfin
--

CREATE INDEX idx_activitylogs_userid_datecreated ON activitylog.activity_logs USING btree (user_id, date_created DESC) WHERE (user_id IS NOT NULL);


--
-- Name: ix_activitylogs_datecreated; Type: INDEX; Schema: activitylog; Owner: jellyfin
--

CREATE INDEX ix_activitylogs_datecreated ON activitylog.activity_logs USING btree (date_created);


--
-- Name: IX_ApiKeys_AccessToken; Type: INDEX; Schema: authentication; Owner: jellyfin
--

CREATE UNIQUE INDEX "IX_ApiKeys_AccessToken" ON authentication.api_keys USING btree (access_token);


--
-- Name: IX_DeviceOptions_DeviceId; Type: INDEX; Schema: authentication; Owner: jellyfin
--

CREATE UNIQUE INDEX "IX_DeviceOptions_DeviceId" ON authentication.device_options USING btree (device_id);


--
-- Name: IX_Devices_AccessToken_DateLastActivity; Type: INDEX; Schema: authentication; Owner: jellyfin
--

CREATE INDEX "IX_Devices_AccessToken_DateLastActivity" ON authentication.devices USING btree (access_token, date_last_activity);


--
-- Name: IX_Devices_DeviceId; Type: INDEX; Schema: authentication; Owner: jellyfin
--

CREATE INDEX "IX_Devices_DeviceId" ON authentication.devices USING btree (device_id);


--
-- Name: IX_Devices_DeviceId_DateLastActivity; Type: INDEX; Schema: authentication; Owner: jellyfin
--

CREATE INDEX "IX_Devices_DeviceId_DateLastActivity" ON authentication.devices USING btree (device_id, date_last_activity);


--
-- Name: IX_Devices_UserId_DeviceId; Type: INDEX; Schema: authentication; Owner: jellyfin
--

CREATE INDEX "IX_Devices_UserId_DeviceId" ON authentication.devices USING btree (user_id, device_id);


--
-- Name: ix_apikeys_accesstoken; Type: INDEX; Schema: authentication; Owner: jellyfin
--

CREATE UNIQUE INDEX ix_apikeys_accesstoken ON authentication.api_keys USING btree (access_token);


--
-- Name: ix_deviceoptions_deviceid; Type: INDEX; Schema: authentication; Owner: jellyfin
--

CREATE UNIQUE INDEX ix_deviceoptions_deviceid ON authentication.device_options USING btree (device_id);


--
-- Name: ix_devices_accesstoken_datelastactivity; Type: INDEX; Schema: authentication; Owner: jellyfin
--

CREATE INDEX ix_devices_accesstoken_datelastactivity ON authentication.devices USING btree (access_token, date_last_activity);


--
-- Name: ix_devices_deviceid; Type: INDEX; Schema: authentication; Owner: jellyfin
--

CREATE INDEX ix_devices_deviceid ON authentication.devices USING btree (device_id);


--
-- Name: ix_devices_deviceid_datelastactivity; Type: INDEX; Schema: authentication; Owner: jellyfin
--

CREATE INDEX ix_devices_deviceid_datelastactivity ON authentication.devices USING btree (device_id, date_last_activity);


--
-- Name: ix_devices_userid_deviceid; Type: INDEX; Schema: authentication; Owner: jellyfin
--

CREATE INDEX ix_devices_userid_deviceid ON authentication.devices USING btree (user_id, device_id);


--
-- Name: IX_CustomItemDisplayPreferences_UserId_ItemId_Client_Key; Type: INDEX; Schema: displaypreferences; Owner: jellyfin
--

CREATE UNIQUE INDEX "IX_CustomItemDisplayPreferences_UserId_ItemId_Client_Key" ON displaypreferences.custom_item_display_preferences USING btree (user_id, item_id, client, key);


--
-- Name: IX_DisplayPreferences_UserId_ItemId_Client; Type: INDEX; Schema: displaypreferences; Owner: jellyfin
--

CREATE UNIQUE INDEX "IX_DisplayPreferences_UserId_ItemId_Client" ON displaypreferences.display_preferences USING btree (user_id, item_id, client);


--
-- Name: IX_HomeSection_DisplayPreferencesId; Type: INDEX; Schema: displaypreferences; Owner: jellyfin
--

CREATE INDEX "IX_HomeSection_DisplayPreferencesId" ON displaypreferences.home_sections USING btree (display_preferences_id);


--
-- Name: IX_ItemDisplayPreferences_UserId; Type: INDEX; Schema: displaypreferences; Owner: jellyfin
--

CREATE INDEX "IX_ItemDisplayPreferences_UserId" ON displaypreferences.item_display_preferences USING btree (user_id);


--
-- Name: ix_displaypreferences_userid_itemid_client; Type: INDEX; Schema: displaypreferences; Owner: jellyfin
--

CREATE UNIQUE INDEX ix_displaypreferences_userid_itemid_client ON displaypreferences.display_preferences USING btree (user_id, item_id, client);


--
-- Name: ix_homesection_displaypreferencesid; Type: INDEX; Schema: displaypreferences; Owner: jellyfin
--

CREATE INDEX ix_homesection_displaypreferencesid ON displaypreferences.home_sections USING btree (display_preferences_id);


--
-- Name: ix_itemdisplaypreferences_userid; Type: INDEX; Schema: displaypreferences; Owner: jellyfin
--

CREATE INDEX ix_itemdisplaypreferences_userid ON displaypreferences.item_display_preferences USING btree (user_id);


--
-- Name: IX_BaseItemImageInfos_ItemId; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX "IX_BaseItemImageInfos_ItemId" ON library.base_item_image_infos USING btree (item_id);


--
-- Name: IX_BaseItemLiveTvExtras_EndDate; Type: INDEX; Schema: library; Owner: postgres
--

CREATE INDEX "IX_BaseItemLiveTvExtras_EndDate" ON library.base_item_live_tv_extras USING btree (end_date);


--
-- Name: IX_BaseItemLiveTvExtras_StartDate; Type: INDEX; Schema: library; Owner: postgres
--

CREATE INDEX "IX_BaseItemLiveTvExtras_StartDate" ON library.base_item_live_tv_extras USING btree (start_date);


--
-- Name: IX_BaseItemMetadataFields_ItemId; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX "IX_BaseItemMetadataFields_ItemId" ON library.base_item_metadata_fields USING btree (item_id);


--
-- Name: IX_BaseItemTrailerTypes_ItemId; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX "IX_BaseItemTrailerTypes_ItemId" ON library.base_item_trailer_types USING btree (item_id);


--
-- Name: IX_BaseItemTvExtras_SeriesId; Type: INDEX; Schema: library; Owner: postgres
--

CREATE INDEX "IX_BaseItemTvExtras_SeriesId" ON library.base_item_tv_extras USING btree (series_id);


--
-- Name: IX_BaseItemTvExtras_SeriesPresentationUniqueKey; Type: INDEX; Schema: library; Owner: postgres
--

CREATE INDEX "IX_BaseItemTvExtras_SeriesPresentationUniqueKey" ON library.base_item_tv_extras USING btree (series_presentation_unique_key);


--
-- Name: IX_BaseItems_Id_Type_IsFolder_IsVirtualItem; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX "IX_BaseItems_Id_Type_IsFolder_IsVirtualItem" ON library.base_items USING btree (id, type, is_folder, is_virtual_item);


--
-- Name: IX_BaseItems_ParentId; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX "IX_BaseItems_ParentId" ON library.base_items USING btree (parent_id);


--
-- Name: IX_BaseItems_Type_TopParentId_Id; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX "IX_BaseItems_Type_TopParentId_Id" ON library.base_items USING btree (type, top_parent_id, id);


--
-- Name: IX_ImageInfos_UserId; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE UNIQUE INDEX "IX_ImageInfos_UserId" ON library.image_infos USING btree (user_id);


--
-- Name: IX_ItemValues_Type_CleanValue; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX "IX_ItemValues_Type_CleanValue" ON library.item_values USING btree (type, clean_value);


--
-- Name: IX_ItemValues_Type_Value; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE UNIQUE INDEX "IX_ItemValues_Type_Value" ON library.item_values USING btree (type, value);


--
-- Name: IX_LibraryOptions_DateModified; Type: INDEX; Schema: library; Owner: postgres
--

CREATE INDEX "IX_LibraryOptions_DateModified" ON library.library_options USING btree (date_modified DESC);


--
-- Name: IX_UserData_ItemId_UserId_IsFavorite; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX "IX_UserData_ItemId_UserId_IsFavorite" ON library.user_data USING btree (item_id, user_id, is_favorite);


--
-- Name: IX_UserData_ItemId_UserId_LastPlayedDate; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX "IX_UserData_ItemId_UserId_LastPlayedDate" ON library.user_data USING btree (item_id, user_id, last_played_date);


--
-- Name: IX_UserData_ItemId_UserId_PlaybackPositionTicks; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX "IX_UserData_ItemId_UserId_PlaybackPositionTicks" ON library.user_data USING btree (item_id, user_id, playback_position_ticks);


--
-- Name: IX_UserData_ItemId_UserId_Played; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX "IX_UserData_ItemId_UserId_Played" ON library.user_data USING btree (item_id, user_id, played);


--
-- Name: baseitemproviders_providerid_idx; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX baseitemproviders_providerid_idx ON library.base_item_providers USING btree (provider_id, item_id);


--
-- Name: baseitemproviders_providervalue_idx; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX baseitemproviders_providervalue_idx ON library.base_item_providers USING btree (provider_value, provider_id);


--
-- Name: baseitems_communityrating_idx; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX baseitems_communityrating_idx ON library.base_items USING btree (community_rating DESC);


--
-- Name: baseitems_datecreated_idx; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX baseitems_datecreated_idx ON library.base_items USING btree (date_created DESC);


--
-- Name: baseitems_datemodified_idx; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX baseitems_datemodified_idx ON library.base_items USING btree (date_modified DESC);


--
-- Name: baseitems_parentid_idx; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX baseitems_parentid_idx ON library.base_items USING btree (parent_id, type);


--
-- Name: baseitems_premieredate_idx; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX baseitems_premieredate_idx ON library.base_items USING btree (premiere_date DESC);


--
-- Name: baseitems_productionyear_idx; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX baseitems_productionyear_idx ON library.base_items USING btree (production_year DESC);


--
-- Name: baseitems_sortname_idx; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX baseitems_sortname_idx ON library.base_items USING btree (sort_name);


--
-- Name: baseitems_topparentid_idx; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX baseitems_topparentid_idx ON library.base_items USING btree (top_parent_id, type);


--
-- Name: idx_base_item_audio_extras_item_id; Type: INDEX; Schema: library; Owner: postgres
--

CREATE INDEX idx_base_item_audio_extras_item_id ON library.base_item_audio_extras USING btree (item_id);


--
-- Name: idx_base_item_image_infos_item_id; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX idx_base_item_image_infos_item_id ON library.base_item_image_infos USING btree (item_id);


--
-- Name: idx_base_item_live_tv_extras_item_id; Type: INDEX; Schema: library; Owner: postgres
--

CREATE INDEX idx_base_item_live_tv_extras_item_id ON library.base_item_live_tv_extras USING btree (item_id);


--
-- Name: idx_base_item_metadata_fields_item_id; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX idx_base_item_metadata_fields_item_id ON library.base_item_metadata_fields USING btree (item_id);


--
-- Name: idx_base_item_providers_item_id; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX idx_base_item_providers_item_id ON library.base_item_providers USING btree (item_id);


--
-- Name: idx_base_item_trailer_types_item_id; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX idx_base_item_trailer_types_item_id ON library.base_item_trailer_types USING btree (item_id);


--
-- Name: idx_base_item_tv_extras_item_id; Type: INDEX; Schema: library; Owner: postgres
--

CREATE INDEX idx_base_item_tv_extras_item_id ON library.base_item_tv_extras USING btree (item_id);


--
-- Name: idx_baseitems_datecreated_filtered; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX idx_baseitems_datecreated_filtered ON library.base_items USING btree (date_created DESC, type, is_virtual_item) WHERE ((date_created IS NOT NULL) AND (is_virtual_item = false));


--
-- Name: idx_baseitems_presentationuniquekey_episodes; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX idx_baseitems_presentationuniquekey_episodes ON library.base_items USING btree (presentation_unique_key, top_parent_id, is_virtual_item) WHERE ((type = 'MediaBrowser.Controller.Entities.TV.Episode'::text) AND (presentation_unique_key IS NOT NULL));


--
-- Name: idx_baseitems_topparentid_isfolder; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX idx_baseitems_topparentid_isfolder ON library.base_items USING btree (top_parent_id, is_folder, is_virtual_item) WHERE (top_parent_id IS NOT NULL);


--
-- Name: idx_baseitems_type_isvirtualitem_topparentid; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX idx_baseitems_type_isvirtualitem_topparentid ON library.base_items USING btree (type, is_virtual_item, top_parent_id) WHERE (is_virtual_item = false);


--
-- Name: idx_image_infos_user_id; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX idx_image_infos_user_id ON library.image_infos USING btree (user_id);


--
-- Name: idx_itemvalues_cleanvalue; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX idx_itemvalues_cleanvalue ON library.item_values USING btree (clean_value) WHERE (clean_value IS NOT NULL);


--
-- Name: idx_itemvalues_id_cleanvalue; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX idx_itemvalues_id_cleanvalue ON library.item_values USING btree (item_value_id, clean_value);


--
-- Name: idx_itemvalues_type_value_expr; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX idx_itemvalues_type_value_expr ON library.item_values USING btree ((((type)::text || value)));


--
-- Name: idx_itemvalues_value; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX idx_itemvalues_value ON library.item_values USING btree (value) WHERE (value IS NOT NULL);


--
-- Name: idx_itemvaluesmap_itemvalueid_itemid; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX idx_itemvaluesmap_itemvalueid_itemid ON library.item_values_map USING btree (item_value_id, item_id);


--
-- Name: idx_user_data_item_id; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX idx_user_data_item_id ON library.user_data USING btree (item_id);


--
-- Name: ix_ancestorids_parentitemid; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_ancestorids_parentitemid ON library.ancestor_ids USING btree (parent_item_id);


--
-- Name: ix_base_item_audio_extras_item_id; Type: INDEX; Schema: library; Owner: postgres
--

CREATE INDEX ix_base_item_audio_extras_item_id ON library.base_item_audio_extras USING btree (item_id);


--
-- Name: ix_base_item_image_infos_item_id; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_base_item_image_infos_item_id ON library.base_item_image_infos USING btree (item_id);


--
-- Name: ix_base_item_live_tv_extras_item_id; Type: INDEX; Schema: library; Owner: postgres
--

CREATE INDEX ix_base_item_live_tv_extras_item_id ON library.base_item_live_tv_extras USING btree (item_id);


--
-- Name: ix_base_item_tv_extras_item_id; Type: INDEX; Schema: library; Owner: postgres
--

CREATE INDEX ix_base_item_tv_extras_item_id ON library.base_item_tv_extras USING btree (item_id);


--
-- Name: ix_baseitemimageinfos_itemid; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_baseitemimageinfos_itemid ON library.base_item_image_infos USING btree (item_id);


--
-- Name: ix_baseitemmetadatafields_itemid; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_baseitemmetadatafields_itemid ON library.base_item_metadata_fields USING btree (item_id);


--
-- Name: ix_baseitemproviders_providerid_providervalue_itemid; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_baseitemproviders_providerid_providervalue_itemid ON library.base_item_providers USING btree (provider_id, provider_value, item_id);


--
-- Name: ix_baseitems_id_type_isfolder_isvirtualitem; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_baseitems_id_type_isfolder_isvirtualitem ON library.base_items USING btree (id, type, is_folder, is_virtual_item);


--
-- Name: ix_baseitems_path; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_baseitems_path ON library.base_items USING btree (path);


--
-- Name: ix_baseitems_presentationuniquekey; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_baseitems_presentationuniquekey ON library.base_items USING btree (presentation_unique_key);


--
-- Name: ix_baseitems_topparentid_id; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_baseitems_topparentid_id ON library.base_items USING btree (top_parent_id, id);


--
-- Name: ix_baseitems_type_topparentid_id; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_baseitems_type_topparentid_id ON library.base_items USING btree (type, top_parent_id, id);


--
-- Name: ix_baseitems_type_topparentid_presentationuniquekey; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_baseitems_type_topparentid_presentationuniquekey ON library.base_items USING btree (type, top_parent_id, presentation_unique_key);


--
-- Name: ix_baseitemtrailertypes_itemid; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_baseitemtrailertypes_itemid ON library.base_item_trailer_types USING btree (item_id);


--
-- Name: ix_imageinfos_userid; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE UNIQUE INDEX ix_imageinfos_userid ON library.image_infos USING btree (user_id);


--
-- Name: ix_itemvalues_type_cleanvalue; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_itemvalues_type_cleanvalue ON library.item_values USING btree (type, clean_value);


--
-- Name: ix_itemvalues_type_value; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE UNIQUE INDEX ix_itemvalues_type_value ON library.item_values USING btree (type, value);


--
-- Name: ix_itemvaluesmap_itemid; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_itemvaluesmap_itemid ON library.item_values_map USING btree (item_id);


--
-- Name: ix_mediastreaminfos_streamindex; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_mediastreaminfos_streamindex ON library.media_stream_infos USING btree (stream_index);


--
-- Name: ix_mediastreaminfos_streamindex_streamtype; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_mediastreaminfos_streamindex_streamtype ON library.media_stream_infos USING btree (stream_index, stream_type);


--
-- Name: ix_mediastreaminfos_streamindex_streamtype_language; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_mediastreaminfos_streamindex_streamtype_language ON library.media_stream_infos USING btree (stream_index, stream_type, language);


--
-- Name: ix_mediastreaminfos_streamtype; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_mediastreaminfos_streamtype ON library.media_stream_infos USING btree (stream_type);


--
-- Name: ix_peoplebaseitemmap_itemid_listorder; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_peoplebaseitemmap_itemid_listorder ON library.people_base_item_map USING btree (item_id, list_order);


--
-- Name: ix_peoplebaseitemmap_itemid_sortorder; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_peoplebaseitemmap_itemid_sortorder ON library.people_base_item_map USING btree (item_id, sort_order);


--
-- Name: ix_peoplebaseitemmap_peopleid; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_peoplebaseitemmap_peopleid ON library.people_base_item_map USING btree (people_id);


--
-- Name: ix_peoples_name; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_peoples_name ON library.peoples USING btree (name);


--
-- Name: ix_userdata_itemid_userid_isfavorite; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_userdata_itemid_userid_isfavorite ON library.user_data USING btree (item_id, user_id, is_favorite);


--
-- Name: ix_userdata_itemid_userid_lastplayeddate; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_userdata_itemid_userid_lastplayeddate ON library.user_data USING btree (item_id, user_id, last_played_date);


--
-- Name: ix_userdata_itemid_userid_playbackpositionticks; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_userdata_itemid_userid_playbackpositionticks ON library.user_data USING btree (item_id, user_id, playback_position_ticks);


--
-- Name: ix_userdata_itemid_userid_played; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_userdata_itemid_userid_played ON library.user_data USING btree (item_id, user_id, played);


--
-- Name: ix_userdata_userid; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX ix_userdata_userid ON library.user_data USING btree (user_id);


--
-- Name: mediastreaminfos_codec_idx; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX mediastreaminfos_codec_idx ON library.media_stream_infos USING btree (codec);


--
-- Name: mediastreaminfos_itemid_idx; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX mediastreaminfos_itemid_idx ON library.media_stream_infos USING btree (item_id, stream_type);


--
-- Name: peoplebaseitemmap_itemid_idx; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX peoplebaseitemmap_itemid_idx ON library.people_base_item_map USING btree (item_id, people_id);


--
-- Name: peoplebaseitemmap_peopleid_idx; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX peoplebaseitemmap_peopleid_idx ON library.people_base_item_map USING btree (people_id, item_id);


--
-- Name: userdata_lastplayeddate_idx; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX userdata_lastplayeddate_idx ON library.user_data USING btree (last_played_date DESC);


--
-- Name: userdata_userid_isfavorite_idx; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX userdata_userid_isfavorite_idx ON library.user_data USING btree (user_id, is_favorite);


--
-- Name: userdata_userid_played_idx; Type: INDEX; Schema: library; Owner: jellyfin
--

CREATE INDEX userdata_userid_played_idx ON library.user_data USING btree (user_id, played);


--
-- Name: IX_AccessSchedules_UserId; Type: INDEX; Schema: users; Owner: jellyfin
--

CREATE INDEX "IX_AccessSchedules_UserId" ON users.access_schedules USING btree (user_id);


--
-- Name: IX_Permissions_UserId_Kind; Type: INDEX; Schema: users; Owner: jellyfin
--

CREATE UNIQUE INDEX "IX_Permissions_UserId_Kind" ON users.permissions USING btree (user_id, kind) WHERE (user_id IS NOT NULL);


--
-- Name: IX_Preferences_UserId_Kind; Type: INDEX; Schema: users; Owner: jellyfin
--

CREATE UNIQUE INDEX "IX_Preferences_UserId_Kind" ON users.preferences USING btree (user_id, kind) WHERE (user_id IS NOT NULL);


--
-- Name: IX_Users_Username; Type: INDEX; Schema: users; Owner: jellyfin
--

CREATE UNIQUE INDEX "IX_Users_Username" ON users.users USING btree (username);


--
-- Name: idx_access_schedules_user_id; Type: INDEX; Schema: users; Owner: jellyfin
--

CREATE INDEX idx_access_schedules_user_id ON users.access_schedules USING btree (user_id);


--
-- Name: idx_permissions_user_id; Type: INDEX; Schema: users; Owner: jellyfin
--

CREATE INDEX idx_permissions_user_id ON users.permissions USING btree (user_id);


--
-- Name: ix_accessschedules_userid; Type: INDEX; Schema: users; Owner: jellyfin
--

CREATE INDEX ix_accessschedules_userid ON users.access_schedules USING btree (user_id);


--
-- Name: ix_permissions_userid_kind; Type: INDEX; Schema: users; Owner: jellyfin
--

CREATE UNIQUE INDEX ix_permissions_userid_kind ON users.permissions USING btree (user_id, kind) WHERE (user_id IS NOT NULL);


--
-- Name: ix_preferences_userid_kind; Type: INDEX; Schema: users; Owner: jellyfin
--

CREATE UNIQUE INDEX ix_preferences_userid_kind ON users.preferences USING btree (user_id, kind) WHERE (user_id IS NOT NULL);


--
-- Name: ix_users_username; Type: INDEX; Schema: users; Owner: jellyfin
--

CREATE UNIQUE INDEX ix_users_username ON users.users USING btree (username);


--
-- Name: devices FK_Devices_Users_UserId; Type: FK CONSTRAINT; Schema: authentication; Owner: jellyfin
--

ALTER TABLE ONLY authentication.devices
    ADD CONSTRAINT "FK_Devices_Users_UserId" FOREIGN KEY (user_id) REFERENCES users.users(id) ON DELETE CASCADE;


--
-- Name: devices fk_devices_users_userid; Type: FK CONSTRAINT; Schema: authentication; Owner: jellyfin
--

ALTER TABLE ONLY authentication.devices
    ADD CONSTRAINT fk_devices_users_userid FOREIGN KEY (user_id) REFERENCES users.users(id) ON DELETE CASCADE;


--
-- Name: display_preferences FK_DisplayPreferences_Users_UserId; Type: FK CONSTRAINT; Schema: displaypreferences; Owner: jellyfin
--

ALTER TABLE ONLY displaypreferences.display_preferences
    ADD CONSTRAINT "FK_DisplayPreferences_Users_UserId" FOREIGN KEY (user_id) REFERENCES users.users(id) ON DELETE CASCADE;


--
-- Name: home_sections FK_HomeSection_DisplayPreferences_DisplayPreferencesId; Type: FK CONSTRAINT; Schema: displaypreferences; Owner: jellyfin
--

ALTER TABLE ONLY displaypreferences.home_sections
    ADD CONSTRAINT "FK_HomeSection_DisplayPreferences_DisplayPreferencesId" FOREIGN KEY (display_preferences_id) REFERENCES displaypreferences.display_preferences(id) ON DELETE CASCADE;


--
-- Name: item_display_preferences FK_ItemDisplayPreferences_Users_UserId; Type: FK CONSTRAINT; Schema: displaypreferences; Owner: jellyfin
--

ALTER TABLE ONLY displaypreferences.item_display_preferences
    ADD CONSTRAINT "FK_ItemDisplayPreferences_Users_UserId" FOREIGN KEY (user_id) REFERENCES users.users(id) ON DELETE CASCADE;


--
-- Name: display_preferences fk_displaypreferences_users_userid; Type: FK CONSTRAINT; Schema: displaypreferences; Owner: jellyfin
--

ALTER TABLE ONLY displaypreferences.display_preferences
    ADD CONSTRAINT fk_displaypreferences_users_userid FOREIGN KEY (user_id) REFERENCES users.users(id) ON DELETE CASCADE;


--
-- Name: home_sections fk_homesection_displaypreferences_displaypreferencesid; Type: FK CONSTRAINT; Schema: displaypreferences; Owner: jellyfin
--

ALTER TABLE ONLY displaypreferences.home_sections
    ADD CONSTRAINT fk_homesection_displaypreferences_displaypreferencesid FOREIGN KEY (display_preferences_id) REFERENCES displaypreferences.display_preferences(id) ON DELETE CASCADE;


--
-- Name: item_display_preferences fk_itemdisplaypreferences_users_userid; Type: FK CONSTRAINT; Schema: displaypreferences; Owner: jellyfin
--

ALTER TABLE ONLY displaypreferences.item_display_preferences
    ADD CONSTRAINT fk_itemdisplaypreferences_users_userid FOREIGN KEY (user_id) REFERENCES users.users(id) ON DELETE CASCADE;


--
-- Name: ancestor_ids FK_AncestorIds_BaseItems_ItemId; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.ancestor_ids
    ADD CONSTRAINT "FK_AncestorIds_BaseItems_ItemId" FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: ancestor_ids FK_AncestorIds_BaseItems_ParentItemId; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.ancestor_ids
    ADD CONSTRAINT "FK_AncestorIds_BaseItems_ParentItemId" FOREIGN KEY (parent_item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: attachment_stream_infos FK_AttachmentStreamInfos_BaseItems_ItemId; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.attachment_stream_infos
    ADD CONSTRAINT "FK_AttachmentStreamInfos_BaseItems_ItemId" FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: audio_stream_details FK_AudioStreamDetails_MediaStreamInfos_ItemId_StreamIndex; Type: FK CONSTRAINT; Schema: library; Owner: postgres
--

ALTER TABLE ONLY library.audio_stream_details
    ADD CONSTRAINT "FK_AudioStreamDetails_MediaStreamInfos_ItemId_StreamIndex" FOREIGN KEY (item_id, stream_index) REFERENCES library.media_stream_infos(item_id, stream_index) ON DELETE CASCADE;


--
-- Name: base_item_audio_extras FK_BaseItemAudioExtras_BaseItems_ItemId; Type: FK CONSTRAINT; Schema: library; Owner: postgres
--

ALTER TABLE ONLY library.base_item_audio_extras
    ADD CONSTRAINT "FK_BaseItemAudioExtras_BaseItems_ItemId" FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: base_item_image_infos FK_BaseItemImageInfos_BaseItems_ItemId; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.base_item_image_infos
    ADD CONSTRAINT "FK_BaseItemImageInfos_BaseItems_ItemId" FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: base_item_live_tv_extras FK_BaseItemLiveTvExtras_BaseItems_ItemId; Type: FK CONSTRAINT; Schema: library; Owner: postgres
--

ALTER TABLE ONLY library.base_item_live_tv_extras
    ADD CONSTRAINT "FK_BaseItemLiveTvExtras_BaseItems_ItemId" FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: base_item_metadata_fields FK_BaseItemMetadataFields_BaseItems_ItemId; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.base_item_metadata_fields
    ADD CONSTRAINT "FK_BaseItemMetadataFields_BaseItems_ItemId" FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: base_item_providers FK_BaseItemProviders_BaseItems_ItemId; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.base_item_providers
    ADD CONSTRAINT "FK_BaseItemProviders_BaseItems_ItemId" FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: base_item_trailer_types FK_BaseItemTrailerTypes_BaseItems_ItemId; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.base_item_trailer_types
    ADD CONSTRAINT "FK_BaseItemTrailerTypes_BaseItems_ItemId" FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: base_item_tv_extras FK_BaseItemTvExtras_BaseItems_ItemId; Type: FK CONSTRAINT; Schema: library; Owner: postgres
--

ALTER TABLE ONLY library.base_item_tv_extras
    ADD CONSTRAINT "FK_BaseItemTvExtras_BaseItems_ItemId" FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: base_items FK_BaseItems_BaseItems_ParentId; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.base_items
    ADD CONSTRAINT "FK_BaseItems_BaseItems_ParentId" FOREIGN KEY (parent_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: chapters FK_Chapters_BaseItems_ItemId; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.chapters
    ADD CONSTRAINT "FK_Chapters_BaseItems_ItemId" FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: image_infos FK_ImageInfos_Users_UserId; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.image_infos
    ADD CONSTRAINT "FK_ImageInfos_Users_UserId" FOREIGN KEY (user_id) REFERENCES users.users(id) ON DELETE CASCADE;


--
-- Name: item_values_map FK_ItemValuesMap_BaseItems_ItemId; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.item_values_map
    ADD CONSTRAINT "FK_ItemValuesMap_BaseItems_ItemId" FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: item_values_map FK_ItemValuesMap_ItemValues_ItemValueId; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.item_values_map
    ADD CONSTRAINT "FK_ItemValuesMap_ItemValues_ItemValueId" FOREIGN KEY (item_value_id) REFERENCES library.item_values(item_value_id) ON DELETE CASCADE;


--
-- Name: keyframe_data FK_KeyframeData_BaseItems_ItemId; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.keyframe_data
    ADD CONSTRAINT "FK_KeyframeData_BaseItems_ItemId" FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: media_stream_infos FK_MediaStreamInfos_BaseItems_ItemId; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.media_stream_infos
    ADD CONSTRAINT "FK_MediaStreamInfos_BaseItems_ItemId" FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: people_base_item_map FK_PeopleBaseItemMap_BaseItems_ItemId; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.people_base_item_map
    ADD CONSTRAINT "FK_PeopleBaseItemMap_BaseItems_ItemId" FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: people_base_item_map FK_PeopleBaseItemMap_Peoples_PeopleId; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.people_base_item_map
    ADD CONSTRAINT "FK_PeopleBaseItemMap_Peoples_PeopleId" FOREIGN KEY (people_id) REFERENCES library.peoples(id) ON DELETE CASCADE;


--
-- Name: user_data FK_UserData_BaseItems_ItemId; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.user_data
    ADD CONSTRAINT "FK_UserData_BaseItems_ItemId" FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: user_data FK_UserData_Users_UserId; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.user_data
    ADD CONSTRAINT "FK_UserData_Users_UserId" FOREIGN KEY (user_id) REFERENCES users.users(id) ON DELETE CASCADE;


--
-- Name: video_stream_details FK_VideoStreamDetails_MediaStreamInfos_ItemId_StreamIndex; Type: FK CONSTRAINT; Schema: library; Owner: postgres
--

ALTER TABLE ONLY library.video_stream_details
    ADD CONSTRAINT "FK_VideoStreamDetails_MediaStreamInfos_ItemId_StreamIndex" FOREIGN KEY (item_id, stream_index) REFERENCES library.media_stream_infos(item_id, stream_index) ON DELETE CASCADE;


--
-- Name: ancestor_ids fk_ancestorids_baseitems_itemid; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.ancestor_ids
    ADD CONSTRAINT fk_ancestorids_baseitems_itemid FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: ancestor_ids fk_ancestorids_baseitems_parentitemid; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.ancestor_ids
    ADD CONSTRAINT fk_ancestorids_baseitems_parentitemid FOREIGN KEY (parent_item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: attachment_stream_infos fk_attachmentstreaminfos_baseitems_itemid; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.attachment_stream_infos
    ADD CONSTRAINT fk_attachmentstreaminfos_baseitems_itemid FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: base_item_image_infos fk_baseitemimageinfos_baseitems_itemid; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.base_item_image_infos
    ADD CONSTRAINT fk_baseitemimageinfos_baseitems_itemid FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: base_item_metadata_fields fk_baseitemmetadatafields_baseitems_itemid; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.base_item_metadata_fields
    ADD CONSTRAINT fk_baseitemmetadatafields_baseitems_itemid FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: base_item_providers fk_baseitemproviders_baseitems_itemid; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.base_item_providers
    ADD CONSTRAINT fk_baseitemproviders_baseitems_itemid FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: base_item_trailer_types fk_baseitemtrailertypes_baseitems_itemid; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.base_item_trailer_types
    ADD CONSTRAINT fk_baseitemtrailertypes_baseitems_itemid FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: chapters fk_chapters_baseitems_itemid; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.chapters
    ADD CONSTRAINT fk_chapters_baseitems_itemid FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: image_infos fk_imageinfos_users_userid; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.image_infos
    ADD CONSTRAINT fk_imageinfos_users_userid FOREIGN KEY (user_id) REFERENCES users.users(id) ON DELETE CASCADE;


--
-- Name: item_values_map fk_itemvaluesmap_baseitems_itemid; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.item_values_map
    ADD CONSTRAINT fk_itemvaluesmap_baseitems_itemid FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: item_values_map fk_itemvaluesmap_itemvalues_itemvalueid; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.item_values_map
    ADD CONSTRAINT fk_itemvaluesmap_itemvalues_itemvalueid FOREIGN KEY (item_value_id) REFERENCES library.item_values(item_value_id) ON DELETE CASCADE;


--
-- Name: keyframe_data fk_keyframedata_baseitems_itemid; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.keyframe_data
    ADD CONSTRAINT fk_keyframedata_baseitems_itemid FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: media_stream_infos fk_mediastreaminfos_baseitems_itemid; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.media_stream_infos
    ADD CONSTRAINT fk_mediastreaminfos_baseitems_itemid FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: people_base_item_map fk_peoplebaseitemmap_baseitems_itemid; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.people_base_item_map
    ADD CONSTRAINT fk_peoplebaseitemmap_baseitems_itemid FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: people_base_item_map fk_peoplebaseitemmap_peoples_peopleid; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.people_base_item_map
    ADD CONSTRAINT fk_peoplebaseitemmap_peoples_peopleid FOREIGN KEY (people_id) REFERENCES library.peoples(id) ON DELETE CASCADE;


--
-- Name: user_data fk_userdata_baseitems_itemid; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.user_data
    ADD CONSTRAINT fk_userdata_baseitems_itemid FOREIGN KEY (item_id) REFERENCES library.base_items(id) ON DELETE CASCADE;


--
-- Name: user_data fk_userdata_users_userid; Type: FK CONSTRAINT; Schema: library; Owner: jellyfin
--

ALTER TABLE ONLY library.user_data
    ADD CONSTRAINT fk_userdata_users_userid FOREIGN KEY (user_id) REFERENCES users.users(id) ON DELETE CASCADE;


--
-- Name: access_schedules FK_AccessSchedules_Users_UserId; Type: FK CONSTRAINT; Schema: users; Owner: jellyfin
--

ALTER TABLE ONLY users.access_schedules
    ADD CONSTRAINT "FK_AccessSchedules_Users_UserId" FOREIGN KEY (user_id) REFERENCES users.users(id) ON DELETE CASCADE;


--
-- Name: permissions FK_Permissions_Users_UserId; Type: FK CONSTRAINT; Schema: users; Owner: jellyfin
--

ALTER TABLE ONLY users.permissions
    ADD CONSTRAINT "FK_Permissions_Users_UserId" FOREIGN KEY (user_id) REFERENCES users.users(id) ON DELETE CASCADE;


--
-- Name: preferences FK_Preferences_Users_UserId; Type: FK CONSTRAINT; Schema: users; Owner: jellyfin
--

ALTER TABLE ONLY users.preferences
    ADD CONSTRAINT "FK_Preferences_Users_UserId" FOREIGN KEY (user_id) REFERENCES users.users(id) ON DELETE CASCADE;


--
-- Name: access_schedules fk_accessschedules_users_userid; Type: FK CONSTRAINT; Schema: users; Owner: jellyfin
--

ALTER TABLE ONLY users.access_schedules
    ADD CONSTRAINT fk_accessschedules_users_userid FOREIGN KEY (user_id) REFERENCES users.users(id) ON DELETE CASCADE;


--
-- Name: permissions fk_permissions_users_userid; Type: FK CONSTRAINT; Schema: users; Owner: jellyfin
--

ALTER TABLE ONLY users.permissions
    ADD CONSTRAINT fk_permissions_users_userid FOREIGN KEY (user_id) REFERENCES users.users(id) ON DELETE CASCADE;


--
-- Name: preferences fk_preferences_users_userid; Type: FK CONSTRAINT; Schema: users; Owner: jellyfin
--

ALTER TABLE ONLY users.preferences
    ADD CONSTRAINT fk_preferences_users_userid FOREIGN KEY (user_id) REFERENCES users.users(id) ON DELETE CASCADE;


--
-- Name: TABLE pg_stat_statements; Type: ACL; Schema: public; Owner: wjones
--

GRANT SELECT ON TABLE public.pg_stat_statements TO jellyfin;


--
-- PostgreSQL database dump complete
--

\unrestrict gtmnhnnhvGPbISEXatQ92tRbfGW4Ltf9Lo0RLFqx6gbMlpR4nJHxMxY5ogWUEfv

