-- +goose Up
-- +goose StatementBegin
CREATE TABLE images(
    id INTEGER PRIMARY KEY,
    subreddit_id INTEGER NOT NULL,
    device_id INTEGER NOT NULL,
    title VARCHAR(255) NOT NULL,
    post_id VARCHAR(50) NOT NULL,
    post_url VARCHAR(255) NOT NULL,
    post_created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    post_name VARCHAR(255) NOT NULL,
    poster VARCHAR(50) NOT NULL,
    poster_url VARCHAR(255) NOT NULL,
    image_relative_path VARCHAR(255) NOT NULL,
    thumbnail_relative_path VARCHAR(255) NOT NULL DEFAULT '',
    image_original_url VARCHAR(255) NOT NULL,
    thumbnail_original_url VARCHAR(255) NOT NULL DEFAULT '',
    nsfw INTEGER NOT NULL DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    CONSTRAINT fk_subreddit_id
        FOREIGN KEY (subreddit_id)
        REFERENCES subreddits(id)
        ON DELETE CASCADE,
    CONSTRAINT fk_devices_id
        FOREIGN KEY (device_id)
        REFERENCES devices(id)
        ON DELETE CASCADE
);

CREATE TRIGGER update_images_timestamp AFTER UPDATE ON images FOR EACH ROW
BEGIN
    UPDATE images SET updated_at = CURRENT_TIMESTAMP WHERE id = old.id;
END;

CREATE INDEX idx_subreddit_id ON images(subreddit_id);
CREATE INDEX idx_nsfw ON images(nsfw);
-- +goose StatementEnd

-- +goose Down
-- +goose StatementBegin
DROP TABLE IF EXISTS images;
-- +goose StatementEnd
