So if you are curious to see the knex query as a better way to explain what I’m going for with the graphQL query here’s what I came up with. I guess the correct keyword(s) I was looking for is havingNotExists. Anyway I’m still curious to see if there’s a way to do this with the graphQL query as that’ll be helpful in the future.
P.S. I wrote this in a resolver under the me query to have access to the parent.id, alternatively you could get the current authenticated user’s id from ctx.state.user.id
const result = await strapi.db.connection('up_users')
.havingNotExists(function () {
this
.from('user_relations_from_user_links')
.where('user_relations_from_user_links.user_id', parent.id)
.join('user_relations', 'user_relations_from_user_links.user_relation_id', 'user_relations.id')
.whereIn('user_relations.relation_status', ['requested', 'blocked', 'ignored'])
.join('user_relations_to_user_links', 'user_relations.id', 'user_relations_to_user_links.user_relation_id')
.whereRaw('up_users.id = user_relations_to_user_links.user_id')
})