CREATE TABLE IF NOT EXISTS users (
    id UUID PRIMARY KEY,
    user_name VARCHAR(255) NOT NULL,
    user_mail VARCHAR(255) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    session_token VARCHAR(255),
    session_expiry TIMESTAMP
);

CREATE TABLE IF NOT EXISTS albums (
    id UUID PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    artist VARCHAR(255) NOT NULL,
    release_date DATE,
    album_art_url VARCHAR(255)
);

CREATE TABLE IF NOT EXISTS artists (
    id UUID PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    genre VARCHAR(255),
    bio TEXT,
    artist_image_url VARCHAR(255)
);

CREATE TABLE IF NOT EXISTS user_albums (
    user_id UUID,
    album_id UUID,
    date_added TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    album_owned BOOLEAN NOT NULL DEFAULT FALSE,
    album_want BOOLEAN NOT NULL DEFAULT FALSE,
    is_vinyl BOOLEAN NOT NULL DEFAULT FALSE,
    is_cd BOOLEAN NOT NULL DEFAULT FALSE,
    PRIMARY KEY (user_id, album_id),
    FOREIGN KEY (user_id) REFERENCES Users(id) ON DELETE CASCADE,
    FOREIGN KEY (album_id) REFERENCES Albums(id) ON DELETE CASCADE
);