Correct Data Source Setup for Filtering Requests by User Actions

I’m working on a feature where users can hide specific requests, and I’m trying to ensure my database design supports scalability and extensibility. Below are my current tables:


Requests Table

Column Name Data Type Description
id INT (Primary) Unique identifier for the request.
request TEXT The content of the search request.
created_at DATETIME Timestamp of when the request was created.

Users Table

Column Name Data Type Description
id INT (Primary) Unique identifier for the user.
name VARCHAR(255) Name of the user.
email VARCHAR(255) Email of the user.

UserRequestActions Table

Column Name Data Type Description
id INT (Primary) Unique identifier for the record.
user_id INT (Foreign) ID of the user performing the action.
request_id INT (Foreign) ID of the request on which the action is performed.
action ENUM The type of action (e.g., ‘hide’, ‘decline’).
metadata JSON Optional details related to the action.
created_at DATETIME Timestamp of when the action was performed.

I want to query all requests where the id is not in the UserRequestActions table for the current user, specifically where the action is hide.

Here’s my current query:


it is working but not sure if it correct for bubble