DO $$
	<< migrate_cte >>
DECLARE
	column_exist boolean := FALSE;
BEGIN
	SELECT
		count(*) != 0 INTO column_exist
	FROM
		information_schema.columns
	WHERE
		table_name = 'channels'
		AND table_schema = current_schema()
		AND column_name = 'lastrootpostat';
	IF NOT column_exist THEN
		ALTER TABLE channels ADD COLUMN lastrootpostat bigint DEFAULT '0'::bigint;
		WITH q AS (
			SELECT
				Channels.Id channelid,
				COALESCE(MAX(Posts.CreateAt),
					0) AS lastrootpost
			FROM
				Channels
			LEFT JOIN Posts ON Channels.Id = Posts.ChannelId
		WHERE
			Posts.RootId = ''
		GROUP BY
			Channels.Id
)
UPDATE
	Channels
SET
	LastRootPostAt = q.lastrootpost
FROM
	q
WHERE
	q.channelid = Channels.Id;
END IF;
END migrate_cte
$$;
