from yoyo import step __depends__ = {'20240210_00_gto81-add-table-for-tracking-forced-reimports'} steps = [ step(""" CREATE TABLE public.discord_channels ( channel_id text NOT NULL, server_id text NOT NULL, name text NOT NULL, parent_channel_id text NULL, topic text NULL, theme_color text NULL, is_nsfw bool NOT NULL, position int NOT NULL DEFAULT 0, icon_emoji text null, type int NOT NULL DEFAULT 0, CONSTRAINT discord_channels_pkey PRIMARY KEY (channel_id) ); CREATE INDEX discord_channels_server_id_idx ON public.discord_channels USING btree (server_id); CREATE INDEX discord_channels_parent_channel_id_idx ON public.discord_channels USING btree (parent_channel_id); """), step(""" CREATE TABLE public.discord_posts_revisions ( revision_id serial4 NOT NULL, id varchar(255) NOT NULL, author jsonb NOT NULL, "server" varchar(255) NOT NULL, channel varchar(255) NOT NULL, "content" text NOT NULL DEFAULT ''::text, added timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, published timestamp NULL, edited timestamp NULL, embeds _jsonb NOT NULL, mentions _jsonb NOT NULL, attachments _jsonb NOT NULL, CONSTRAINT discord_posts_revisions_pkey PRIMARY KEY (revision_id) ); CREATE INDEX discord_posts_revisions_id_idx ON public.discord_posts_revisions USING btree (id); """), step(""" INSERT INTO public.discord_channels (channel_id, server_id, "name", is_nsfw, "position", "type") SELECT DISTINCT channel AS channel_id, "server", channel AS "name", false AS is_nsfw, 0 AS "position", 0 AS "type" FROM public.discord_posts ON CONFLICT DO NOTHING; UPDATE public.discord_channels AS dc SET "name" = l."name" FROM public.lookup AS l WHERE l.id = dc.channel_id AND l.service = 'discord-channel'; DELETE FROM public.lookup WHERE service = 'discord-channel'; UPDATE public.lookup AS l SET updated = COALESCE(( SELECT MAX(added) FROM public.discord_posts AS d WHERE d."server" = l.id ), updated) WHERE l.service = 'discord'; """), ]