--
-- PostgreSQL database dump
--

-- Dumped from database version 16.9 (Debian 16.9-1.pgdg120+1)
-- Dumped by pg_dump version 16.9 (Debian 16.9-1.pgdg120+1)

SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_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;

DROP SCHEMA IF EXISTS public;
--
-- Name: public; Type: SCHEMA; Schema: -; Owner: postgres
--

CREATE SCHEMA public;


ALTER SCHEMA public OWNER TO postgres;

--
-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: postgres
--

COMMENT ON SCHEMA public IS 'standard public schema';


--
-- Name: privacy; Type: TYPE; Schema: public; Owner: invidious
--

CREATE TYPE public.privacy AS ENUM (
    'Public',
    'Unlisted',
    'Private'
);


ALTER TYPE public.privacy OWNER TO invidious;

SET default_tablespace = '';

SET default_table_access_method = heap;

--
-- Name: annotations; Type: TABLE; Schema: public; Owner: invidious
--

CREATE TABLE public.annotations (
    id text NOT NULL,
    annotations xml
);


ALTER TABLE public.annotations OWNER TO invidious;

--
-- Name: channel_videos; Type: TABLE; Schema: public; Owner: invidious
--

CREATE TABLE public.channel_videos (
    id text NOT NULL,
    title text,
    published timestamp with time zone,
    updated timestamp with time zone,
    ucid text,
    author text,
    length_seconds integer,
    live_now boolean,
    premiere_timestamp timestamp with time zone,
    views bigint
);


ALTER TABLE public.channel_videos OWNER TO invidious;

--
-- Name: channels; Type: TABLE; Schema: public; Owner: invidious
--

CREATE TABLE public.channels (
    id text NOT NULL,
    author text,
    updated timestamp with time zone,
    deleted boolean,
    subscribed timestamp with time zone
);


ALTER TABLE public.channels OWNER TO invidious;

--
-- Name: nonces; Type: TABLE; Schema: public; Owner: invidious
--

CREATE TABLE public.nonces (
    nonce text,
    expire timestamp with time zone
);


ALTER TABLE public.nonces OWNER TO invidious;

--
-- Name: playlist_videos; Type: TABLE; Schema: public; Owner: invidious
--

CREATE TABLE public.playlist_videos (
    title text,
    id text,
    author text,
    ucid text,
    length_seconds integer,
    published timestamp with time zone,
    plid text NOT NULL,
    index bigint NOT NULL,
    live_now boolean
);


ALTER TABLE public.playlist_videos OWNER TO invidious;

--
-- Name: playlists; Type: TABLE; Schema: public; Owner: invidious
--

CREATE TABLE public.playlists (
    title text,
    id text NOT NULL,
    author text,
    description text,
    video_count integer,
    created timestamp with time zone,
    updated timestamp with time zone,
    privacy public.privacy,
    index bigint[]
);


ALTER TABLE public.playlists OWNER TO invidious;

--
-- Name: session_ids; Type: TABLE; Schema: public; Owner: invidious
--

CREATE TABLE public.session_ids (
    id text NOT NULL,
    email text,
    issued timestamp with time zone
);


ALTER TABLE public.session_ids OWNER TO invidious;

--
-- Name: users; Type: TABLE; Schema: public; Owner: invidious
--

CREATE TABLE public.users (
    updated timestamp with time zone,
    notifications text[],
    subscriptions text[],
    email text NOT NULL,
    preferences text,
    password text,
    token text,
    watched text[],
    feed_needs_update boolean
);


ALTER TABLE public.users OWNER TO invidious;

--
-- Name: videos; Type: TABLE; Schema: public; Owner: invidious
--

CREATE UNLOGGED TABLE public.videos (
    id text NOT NULL,
    info text,
    updated timestamp with time zone
);


ALTER TABLE public.videos OWNER TO invidious;

--
-- Name: annotations annotations_id_key; Type: CONSTRAINT; Schema: public; Owner: invidious
--

ALTER TABLE ONLY public.annotations
    ADD CONSTRAINT annotations_id_key UNIQUE (id);


--
-- Name: channel_videos channel_videos_id_key; Type: CONSTRAINT; Schema: public; Owner: invidious
--

ALTER TABLE ONLY public.channel_videos
    ADD CONSTRAINT channel_videos_id_key UNIQUE (id);


--
-- Name: channels channels_id_key; Type: CONSTRAINT; Schema: public; Owner: invidious
--

ALTER TABLE ONLY public.channels
    ADD CONSTRAINT channels_id_key UNIQUE (id);


--
-- Name: nonces nonces_id_key; Type: CONSTRAINT; Schema: public; Owner: invidious
--

ALTER TABLE ONLY public.nonces
    ADD CONSTRAINT nonces_id_key UNIQUE (nonce);


--
-- Name: playlist_videos playlist_videos_pkey; Type: CONSTRAINT; Schema: public; Owner: invidious
--

ALTER TABLE ONLY public.playlist_videos
    ADD CONSTRAINT playlist_videos_pkey PRIMARY KEY (index, plid);


--
-- Name: playlists playlists_pkey; Type: CONSTRAINT; Schema: public; Owner: invidious
--

ALTER TABLE ONLY public.playlists
    ADD CONSTRAINT playlists_pkey PRIMARY KEY (id);


--
-- Name: session_ids session_ids_pkey; Type: CONSTRAINT; Schema: public; Owner: invidious
--

ALTER TABLE ONLY public.session_ids
    ADD CONSTRAINT session_ids_pkey PRIMARY KEY (id);


--
-- Name: users users_email_key; Type: CONSTRAINT; Schema: public; Owner: invidious
--

ALTER TABLE ONLY public.users
    ADD CONSTRAINT users_email_key UNIQUE (email);


--
-- Name: videos videos_pkey; Type: CONSTRAINT; Schema: public; Owner: invidious
--

ALTER TABLE ONLY public.videos
    ADD CONSTRAINT videos_pkey PRIMARY KEY (id);


--
-- Name: channel_videos_ucid_published_idx; Type: INDEX; Schema: public; Owner: invidious
--

CREATE INDEX channel_videos_ucid_published_idx ON public.channel_videos USING btree (ucid, published);


--
-- Name: channels_id_idx; Type: INDEX; Schema: public; Owner: invidious
--

CREATE INDEX channels_id_idx ON public.channels USING btree (id);


--
-- Name: email_unique_idx; Type: INDEX; Schema: public; Owner: invidious
--

CREATE UNIQUE INDEX email_unique_idx ON public.users USING btree (lower(email));


--
-- Name: id_idx; Type: INDEX; Schema: public; Owner: invidious
--

CREATE UNIQUE INDEX id_idx ON public.videos USING btree (id);


--
-- Name: nonces_nonce_idx; Type: INDEX; Schema: public; Owner: invidious
--

CREATE INDEX nonces_nonce_idx ON public.nonces USING btree (nonce);


--
-- Name: session_ids_id_idx; Type: INDEX; Schema: public; Owner: invidious
--

CREATE INDEX session_ids_id_idx ON public.session_ids USING btree (id);


--
-- Name: playlist_videos playlist_videos_plid_fkey; Type: FK CONSTRAINT; Schema: public; Owner: invidious
--

ALTER TABLE ONLY public.playlist_videos
    ADD CONSTRAINT playlist_videos_plid_fkey FOREIGN KEY (plid) REFERENCES public.playlists(id);


--
-- Name: SCHEMA public; Type: ACL; Schema: -; Owner: postgres
--

REVOKE USAGE ON SCHEMA public FROM PUBLIC;
GRANT ALL ON SCHEMA public TO PUBLIC;


--
-- PostgreSQL database dump complete
--

