42 lines
1.4 KiB
SQL
42 lines
1.4 KiB
SQL
-- +goose Up
|
|
-- +goose StatementBegin
|
|
CREATE TABLE images(
|
|
id INTEGER PRIMARY KEY,
|
|
subreddit VARCHAR(255) NOT NULL COLLATE NOCASE,
|
|
device VARCHAR(250) NOT NULL COLLATE NOCASE,
|
|
post_title VARCHAR(255) NOT NULL,
|
|
post_name VARCHAR(255) NOT NULL,
|
|
post_url VARCHAR(255) NOT NULL,
|
|
post_created BIGINT NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
post_author VARCHAR(50) NOT NULL,
|
|
post_author_url VARCHAR(255) NOT NULL,
|
|
image_relative_path VARCHAR(255) NOT NULL,
|
|
image_original_url VARCHAR(255) NOT NULL,
|
|
image_height INTEGER NOT NULL DEFAULT 0,
|
|
image_width INTEGER NOT NULL DEFAULT 0,
|
|
image_size BIGINT NOT NULL DEFAULT 0,
|
|
thumbnail_relative_path VARCHAR(255) NOT NULL DEFAULT '',
|
|
nsfw INTEGER NOT NULL DEFAULT 0,
|
|
created_at BIGINT DEFAULT 0 NOT NULL,
|
|
updated_at BIGINT DEFAULT 0 NOT NULL,
|
|
CONSTRAINT fk_image_subreddit
|
|
FOREIGN KEY (subreddit)
|
|
REFERENCES subreddits(name)
|
|
ON DELETE CASCADE,
|
|
CONSTRAINT fk_image_devices_slug
|
|
FOREIGN KEY (device)
|
|
REFERENCES devices(slug)
|
|
ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE INDEX idx_subreddit_images ON images(subreddit);
|
|
CREATE INDEX idx_nsfw_images ON images(nsfw);
|
|
CREATE INDEX idx_images_created_at_nsfw ON images(created_at DESC, nsfw);
|
|
CREATE UNIQUE INDEX idx_unique_images_per_device ON images(device, post_name);
|
|
-- +goose StatementEnd
|
|
|
|
-- +goose Down
|
|
-- +goose StatementBegin
|
|
DROP TABLE IF EXISTS images;
|
|
-- +goose StatementEnd
|