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,storageandextensions, 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
SourceInstance methods
analyze
Sourcetech
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.