useAddDefinitions() — supabase Function Reference
Architecture documentation for the useAddDefinitions() function in useAddDefinitions.ts from the supabase codebase.
Entity Profile
Dependency Diagram
graph TD 6e70287d_d054_7c10_51ee_cb612a583cb3["useAddDefinitions()"] 5429b87d_ef53_7e21_26c6_6b167a463ebc["SQLEditor()"] 5429b87d_ef53_7e21_26c6_6b167a463ebc -->|calls| 6e70287d_d054_7c10_51ee_cb612a583cb3 style 6e70287d_d054_7c10_51ee_cb612a583cb3 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
apps/studio/components/interfaces/SQLEditor/useAddDefinitions.ts lines 17–112
export const useAddDefinitions = (id: string, monaco: Monaco | null) => {
const { data: project } = useSelectedProjectQuery()
const snapV2 = useSqlEditorV2StateSnapshot()
const [intellisenseEnabled] = useLocalStorageQuery(
LOCAL_STORAGE_KEYS.SQL_EDITOR_INTELLISENSE,
true
)
const { data: keywords, isSuccess: isKeywordsSuccess } = useKeywordsQuery(
{
projectRef: project?.ref,
connectionString: project?.connectionString,
},
{ enabled: intellisenseEnabled }
)
const { data: functions, isSuccess: isFunctionsSuccess } = useDatabaseFunctionsQuery(
{
projectRef: project?.ref,
connectionString: project?.connectionString,
},
{ enabled: intellisenseEnabled }
)
const { data: schemas, isSuccess: isSchemasSuccess } = useSchemasQuery(
{
projectRef: project?.ref,
connectionString: project?.connectionString,
},
{ enabled: intellisenseEnabled }
)
const { data: tableColumns, isSuccess: isTableColumnsSuccess } = useTableColumnsQuery(
{
projectRef: project?.ref,
connectionString: project?.connectionString,
},
{ enabled: intellisenseEnabled }
)
const pgInfoRef = useRef<any>(null)
const isPgInfoReady =
intellisenseEnabled &&
isTableColumnsSuccess &&
isSchemasSuccess &&
isKeywordsSuccess &&
isFunctionsSuccess
if (isPgInfoReady) {
if (pgInfoRef.current === null) {
pgInfoRef.current = {}
}
pgInfoRef.current.tableColumns = tableColumns
pgInfoRef.current.schemas = schemas
pgInfoRef.current.keywords = keywords
pgInfoRef.current.functions = functions
}
// Enable pgsql format
useEffect(() => {
if (monaco) {
const formatProvider = monaco.languages.registerDocumentFormattingEditProvider('pgsql', {
async provideDocumentFormattingEdits(model) {
const value = model.getValue()
const formatted = formatSql(value)
if (id) snapV2.setSql({ id, sql: formatted })
return [{ range: model.getFullModelRange(), text: formatted }]
},
})
return () => formatProvider.dispose()
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [monaco])
// Register auto completion item provider for pgsql
useEffect(() => {
let completeProvider: IDisposable | null = null
let signatureHelpProvider: IDisposable | null = null
if (isPgInfoReady) {
if (monaco && isPgInfoReady) {
completeProvider = monaco.languages.registerCompletionItemProvider(
'pgsql',
getPgsqlCompletionProvider(monaco, pgInfoRef)
)
signatureHelpProvider = monaco.languages.registerSignatureHelpProvider(
'pgsql',
getPgsqlSignatureHelpProvider(monaco, pgInfoRef)
)
}
}
return () => {
completeProvider?.dispose()
signatureHelpProvider?.dispose()
}
}, [isPgInfoReady, monaco])
}
Domain
Subdomains
Called By
Source
Frequently Asked Questions
What does useAddDefinitions() do?
useAddDefinitions() is a function in the supabase codebase.
What calls useAddDefinitions()?
useAddDefinitions() is called by 1 function(s): SQLEditor.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free