Custom Action Calling a Supabase Function - Fails with a Postgres Exception PGRST202

Resolved

I am struggling to figure out how to get a (single row returning) Supabase function to run within a custom action.

During debugging, and for simplicity here, I've dialed back the test considerably to hone in on just the issue at hand.

I have a working (tested in Supabase SQL query window) Supabase function. For the time being, it's just a simple query that returns a single row from one of my tables. Ultimately there will be a bunch of logic that goes into this function to get to the single row returned. This is why I need a Supabase function vs just using the built in backend Supabase "query a table or view" functionality.

My Custom Action compiles successfully and basically looks like this:

Future<UsersRow> testCustomAction(String userId) async {
  print('starting testCustomAction');
  print(userId);
  final client = SupaFlow.client;
  final response =
      await client.rpc('getUserDetail', params: {'userId': userId});

  if (response.error != null) {
    throw Exception('Failed to call stored procedure: ${response.error}');
  } else {
    // Assuming your stored procedure returns a single row
    print(response);
    return response.data as UsersRow;
  }
}

I have this wired this to a Page Load action, and am using Authenticated User as the input parameter.

The custom Action gets called. I see the first two prints in the browser inspector window, and the authenticated userId is displaying correctly here. But then I get the following error that I have not been able to find a way past:

"PostgrestException(message: Could not find the function public.testCustomAction(userId) in the schema cache, code: PGRST202, details: Searched for the function public.testCustomAction with parameter userId or with a single unnamed json/jsonb parameter, but no matches were found in the schema cache., hint: Perhaps you meant to call the function public.testCustomAction(userid))"

I haven't wired any of the response data to anything at this point (except for specifying an Action Return Variable in the page load action).

From everything I've researched, I've seen a couple limited examples, but nothing that has helped get me past this issue. I'm hoping there's someone out there who has successfully done what I am trying to do, or knows more than I do about this (which is likely most people ;)) and is seeing something I'm not.

Thanks in advance!

16 replies