Home / Function/ PoliciesDataProvider() — supabase Function Reference

PoliciesDataProvider() — supabase Function Reference

Architecture documentation for the PoliciesDataProvider() function in PoliciesDataContext.tsx from the supabase codebase.

Entity Profile

Relationship Graph

Source Code

apps/studio/components/interfaces/Auth/Policies/PoliciesDataContext.tsx lines 33–82

export const PoliciesDataProvider = ({
  children,
  policies,
  isPoliciesLoading,
  isPoliciesError,
  policiesError,
  exposedSchemas,
}: PropsWithChildren<PoliciesDataProviderProps>) => {
  const policiesByTable = useMemo(() => {
    const map = new Map<TableKey, PostgresPolicy[]>()

    for (const policy of policies) {
      const key = `${policy.schema}.${policy.table}` satisfies TableKey
      const existing = map.get(key)
      if (existing) {
        existing.push(policy)
      } else {
        map.set(key, [policy])
      }
    }

    for (const list of map.values()) {
      list.sort((a, b) => a.name.localeCompare(b.name))
    }

    return map
  }, [policies])

  const getPoliciesForTable = useCallback(
    (schema: string, table: string) => policiesByTable.get(`${schema}.${table}`) ?? [],
    [policiesByTable]
  )

  const exposedSchemasSet = useMemo(() => new Set(exposedSchemas), [exposedSchemas])

  const contextValue = useMemo(
    () => ({
      getPoliciesForTable,
      isPoliciesLoading,
      isPoliciesError,
      policiesError,
      exposedSchemas: exposedSchemasSet,
    }),
    [getPoliciesForTable, isPoliciesLoading, isPoliciesError, policiesError, exposedSchemasSet]
  )

  return (
    <PoliciesDataContext.Provider value={contextValue}>{children}</PoliciesDataContext.Provider>
  )
}

Subdomains

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free