1
0
mirror of https://github.com/mxpv/podsync.git synced 2024-05-11 05:55:04 +00:00

Add database model for feeds

This commit is contained in:
Maksym Pavlenko
2017-11-03 15:41:26 -07:00
parent b8e97b9310
commit 90a5b6fee7
2 changed files with 59 additions and 1 deletions

View File

@@ -1,6 +1,9 @@
package model
import "time"
import (
"github.com/mxpv/podsync/pkg/api"
"time"
)
type Pledge struct {
PledgeID int64 `sql:",pk"`
@@ -12,3 +15,17 @@ type Pledge struct {
OutstandingPaymentAmountCents int
IsPaused bool
}
type Feed struct {
FeedID int64 `sql:",pk"`
HashID string // Short human readable feed id for users
UserID string // Patreon user id
ItemID string
LinkType api.LinkType // Either group, channel or user
Provider api.Provider // Youtube or Vimeo
PageSize int // The number of episodes to return
Format api.Format
Quality api.Quality
FeatureLevel int
LastAccess time.Time // Available features
}

View File

@@ -1,5 +1,7 @@
BEGIN;
-- Pledges
CREATE TABLE IF NOT EXISTS pledges (
pledge_id BIGSERIAL PRIMARY KEY,
patron_id BIGINT NOT NULL UNIQUE,
@@ -13,4 +15,43 @@ CREATE TABLE IF NOT EXISTS pledges (
CREATE INDEX patron_id_idx ON pledges(patron_id);
-- Feeds
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'provider') THEN
CREATE TYPE provider_type AS ENUM ('youtube', 'vimeo');
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'link_type') THEN
CREATE TYPE direction AS ENUM ('channel', 'playlist', 'user', 'group');
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'quality') THEN
CREATE TYPE sms_status AS ENUM ('low', 'high');
END IF;
IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'format') THEN
CREATE TYPE sms_status AS ENUM ('video', 'audio');
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,
item_id VARCHAR(32) NOT NULL CHECK (item_id <> ''),
link_type link_type NOT NULL,
provider provider NOT NULL,
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,
last_access TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX feeds_hash_id_idx ON feeds(hash_id);
CREATE INDEX feeds_user_id_idx ON feeds(user_id);
COMMIT;