class

Analyzer::Specification::Supabase

Inherits Analyzer::Specification::SchemaApiCommon < Analyzer::Specification::SpecificationEngine < Analyzer < FileHelper < Reference < Object

Supabase serves PostgREST at /rest/v1/, exposing one resource per table or view in an exposed schema.

Two things make this differ from the other CRUD analyzers:

  • There is no /rest/v1/<table>/<id> path. PostgREST addresses rows with a filter (?id=eq.1), so every verb lands on the collection URL and the column names are valid query keys.
  • Only exposed schemas are reachable. Supabase migrations routinely create tables in auth, storage and extensions, none of which PostgREST serves.

Constants

DEFAULT_EXPOSED_SCHEMAS = {"public"}

PostgREST's default exposed schema. Supabase adds graphql_public, which carries no user tables.

INTERNAL_SCHEMAS = {"auth", "storage", "extensions", "graphql", "graphql_public", "realtime", "vault", "net", "cron", "pgsodium", "pgbouncer", "supabase_functions", "supabase_migrations", "information_schema", "pg_catalog"}

Internal schemas that appear in migrations but are never served.

MAX_FILTER_PARAMS = 25
REST_PREFIX = "/rest/v1"
TAG_SOURCE = "supabase_analyzer"

Class methods

tech_name
Source

Instance methods

analyze
Source
tech

Instance-side view of the same declaration. The per-file rescues live on this base class, which has no way to name the analyzer that is running inside them, so a skipped file could not be attributed to a tech. Deriving it from analyzer_for keeps the name written exactly once.

Source