MCPcopy Create free account
hub / github.com/outerbase/studio / SchemaProvider

Function SchemaProvider

src/context/schema-provider.tsx:66–170  ·  view source on GitHub ↗
({ children }: Readonly<PropsWithChildren>)

Source from the content-addressed store, hash-verified

64}
65
66export function SchemaProvider({ children }: Readonly<PropsWithChildren>) {
67 const { updateTableList, updateTableSchema } = useAutoComplete();
68 const [error, setError] = useState<string>();
69 const [loading, setLoading] = useState(true);
70 const { databaseDriver, extensions } = useStudioContext();
71
72 const [schema, setSchema] = useState<DatabaseSchemas>({});
73 const [currentSchema, setCurrentSchema] = useState<DatabaseSchemaItem[]>([]);
74 const [currentSchemaName, setCurrentSchemaName] = useState(
75 () => databaseDriver.getFlags().defaultSchema
76 );
77
78 const fetchSchema = useCallback(
79 (refresh?: boolean) => {
80 if (refresh) {
81 setLoading(true);
82 }
83
84 const getSchema = async () => {
85 const schemaResult = await databaseDriver.schemas();
86 let selectedSchema = null;
87
88 // If databasse driver support get current schema,
89 // We will use it to override the default schema
90 if (databaseDriver.getFlags().supportUseStatement) {
91 selectedSchema = await databaseDriver.getCurrentSchema();
92 }
93
94 return { schemaResult, selectedSchema };
95 };
96
97 getSchema()
98 .then((result) => {
99 setSchema(result.schemaResult);
100
101 if (result.selectedSchema) {
102 setCurrentSchemaName(result.selectedSchema);
103 }
104
105 setError(undefined);
106 setLoading(false);
107 })
108 .catch((e) => {
109 setError(e.message);
110 setLoading(false);
111 });
112 },
113 [databaseDriver, setError]
114 );
115
116 useEffect(() => {
117 if (schema[currentSchemaName]) {
118 setCurrentSchema(schema[currentSchemaName]);
119 }
120 }, [currentSchemaName, schema, setCurrentSchema]);
121
122 /**
123 * Triggered when re-fetching the database schema.

Callers

nothing calls this directly

Calls 6

useAutoCompleteFunction · 0.90
useStudioContextFunction · 0.90
getSchemaFunction · 0.85
generateAutoCompleteFunction · 0.85
getFlagsMethod · 0.45

Tested by

no test coverage detected