2018-11-24 11:58:08 -08:00
|
|
|
package storage
|
|
|
|
|
|
|
|
//noinspection SpellCheckingInspection
|
|
|
|
const pgsql = `
|
2017-10-26 14:36:52 -07:00
|
|
|
BEGIN;
|
|
|
|
|
2017-11-03 15:41:26 -07:00
|
|
|
-- Pledges
|
|
|
|
|
2017-10-26 14:36:52 -07:00
|
|
|
CREATE TABLE IF NOT EXISTS pledges (
|
|
|
|
pledge_id BIGSERIAL PRIMARY KEY,
|
2017-11-02 17:13:01 -07:00
|
|
|
patron_id BIGINT NOT NULL UNIQUE,
|
2017-10-26 14:36:52 -07:00
|
|
|
created_at TIMESTAMPTZ NOT NULL,
|
|
|
|
declined_since TIMESTAMPTZ NULL,
|
|
|
|
amount_cents INT NOT NULL,
|
|
|
|
total_historical_amount_cents INT,
|
|
|
|
outstanding_payment_amount_cents INT,
|
|
|
|
is_paused BOOLEAN
|
|
|
|
);
|
|
|
|
|
2017-11-03 16:10:12 -07:00
|
|
|
CREATE INDEX IF NOT EXISTS patron_id_idx ON pledges(patron_id);
|
2017-10-26 14:36:52 -07:00
|
|
|
|
2017-11-03 15:41:26 -07:00
|
|
|
-- Feeds
|
|
|
|
|
|
|
|
DO $$
|
|
|
|
BEGIN
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'provider') THEN
|
2017-11-03 16:14:03 -07:00
|
|
|
CREATE TYPE provider AS ENUM ('youtube', 'vimeo');
|
2017-11-03 15:41:26 -07:00
|
|
|
END IF;
|
|
|
|
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'link_type') THEN
|
2017-11-03 16:14:03 -07:00
|
|
|
CREATE TYPE link_type AS ENUM ('channel', 'playlist', 'user', 'group');
|
2017-11-03 15:41:26 -07:00
|
|
|
END IF;
|
|
|
|
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'quality') THEN
|
2017-11-03 16:14:03 -07:00
|
|
|
CREATE TYPE quality AS ENUM ('low', 'high');
|
2017-11-03 15:41:26 -07:00
|
|
|
END IF;
|
|
|
|
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'format') THEN
|
2017-11-03 16:14:03 -07:00
|
|
|
CREATE TYPE format AS ENUM ('video', 'audio');
|
2017-11-03 15:41:26 -07:00
|
|
|
END IF;
|
|
|
|
END
|
|
|
|
$$;
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS feeds (
|
|
|
|
feed_id BIGSERIAL PRIMARY KEY,
|
|
|
|
hash_id VARCHAR(12) NOT NULL UNIQUE,
|
|
|
|
user_id VARCHAR(32) NULL,
|
2017-11-03 20:19:32 -07:00
|
|
|
item_id VARCHAR(64) NOT NULL CHECK (item_id <> ''),
|
2017-11-03 15:41:26 -07:00
|
|
|
provider provider NOT NULL,
|
2017-11-03 19:16:15 -07:00
|
|
|
link_type link_type NOT NULL,
|
2017-11-03 15:41:26 -07:00
|
|
|
page_size INT NOT NULL DEFAULT 50,
|
|
|
|
format format NOT NULL DEFAULT 'video',
|
|
|
|
quality quality NOT NULL DEFAULT 'high',
|
|
|
|
feature_level INT NOT NULL DEFAULT 0,
|
2017-11-03 19:16:15 -07:00
|
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
2017-11-03 15:41:26 -07:00
|
|
|
last_access TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
|
|
);
|
|
|
|
|
2017-11-03 16:10:12 -07:00
|
|
|
CREATE INDEX IF NOT EXISTS feeds_hash_id_idx ON feeds(hash_id);
|
|
|
|
CREATE INDEX IF NOT EXISTS feeds_user_id_idx ON feeds(user_id);
|
2017-11-03 15:41:26 -07:00
|
|
|
|
2018-11-24 11:58:08 -08:00
|
|
|
COMMIT;
|
|
|
|
END;
|
|
|
|
`
|