46 lines
1.6 KiB
Go
46 lines
1.6 KiB
Go
|
package storage
|
||
|
|
||
|
var pgMigration = []string{
|
||
|
`CREATE TYPE video_status AS ENUM ('new', 'ready')`,
|
||
|
`CREATE TABLE video (
|
||
|
id uuid PRIMARY KEY,
|
||
|
status video_status NOT NULL,
|
||
|
youtube_id VARCHAR(255) NOT NULL UNIQUE,
|
||
|
title VARCHAR(255) NOT NULL,
|
||
|
feed_id VARCHAR(255) NOT NULL,
|
||
|
description TEXT,
|
||
|
summary TEXT
|
||
|
)`,
|
||
|
`CREATE TYPE video_status_new AS ENUM ('new', 'has_metadata', 'has_summary', 'ready')`,
|
||
|
`ALTER TABLE video
|
||
|
ALTER COLUMN status TYPE video_status_new
|
||
|
USING video::text::video_status_new`,
|
||
|
`DROP TYPE video_status`,
|
||
|
`ALTER TYPE video_status_new RENAME TO video_status`,
|
||
|
`UPDATE video SET summary = '' WHERE summary IS NULL `,
|
||
|
`UPDATE video SET description = '' WHERE description IS NULL `,
|
||
|
`ALTER TABLE video
|
||
|
ALTER COLUMN summary SET DEFAULT '',
|
||
|
ALTER COLUMN summary SET NOT NULL,
|
||
|
ALTER COLUMN description SET DEFAULT '',
|
||
|
ALTER COLUMN description SET NOT NULL`,
|
||
|
`CREATE TYPE feed_status AS ENUM ('new', 'ready')`,
|
||
|
`CREATE TABLE feed (
|
||
|
id uuid PRIMARY KEY,
|
||
|
status feed_status NOT NULL,
|
||
|
youtube_channel_id VARCHAR(255) NOT NULL UNIQUE,
|
||
|
title VARCHAR(255) NOT NULL
|
||
|
)`,
|
||
|
`ALTER TABLE video
|
||
|
DROP COLUMN feed_id,
|
||
|
ADD COLUMN youtube_channel_id VARCHAR(255) NOT NULL REFERENCES feed(youtube_channel_id)`,
|
||
|
`ALTER TABLE video
|
||
|
ADD COLUMN duration VARCHAR(255),
|
||
|
ADD COLUMN published_at VARCHAR(255)`,
|
||
|
`ALTER TABLE video RENAME COLUMN duration TO youtube_duration`,
|
||
|
`ALTER TABLE video RENAME COLUMN published_at TO youtube_published_id`,
|
||
|
`ALTER TABLE video RENAME COLUMN title TO youtube_title`,
|
||
|
`ALTER TABLE video RENAME COLUMN description TO youtube_description`,
|
||
|
`ALTER TABLE video RENAME COLUMN youtube_published_id TO youtube_published_at`,
|
||
|
}
|