in web/web/src/lib/store/metalakes/index.js [572:676]
tree: getState().metalakes.metalakeTree
})
)
}
dispatch(setExpandedNodes([`{{${metalake}}}`, `{{${metalake}}}{{${catalog}}}{{${type}}}`]))
return { schemas, page, init }
}
)
export const getSchemaDetails = createAsyncThunk(
'appMetalakes/getSchemaDetails',
async ({ metalake, catalog, schema }) => {
const [err, res] = await to(getSchemaDetailsApi({ metalake, catalog, schema }))
if (err || !res) {
throw new Error(err)
}
const { schema: resSchema } = res
return resSchema
}
)
export const createSchema = createAsyncThunk(
'appMetalakes/createSchema',
async ({ data, metalake, catalog, type }, { dispatch }) => {
dispatch(setTableLoading(true))
const [err, res] = await to(createSchemaApi({ data, metalake, catalog }))
dispatch(setTableLoading(false))
if (err || !res) {
return { err: true }
}
const { schema: schemaItem } = res
const schemaData = {
...schemaItem,
node: 'schema',
id: `{{${metalake}}}{{${catalog}}}{{${type}}}{{${schemaItem.name}}}`,
key: `{{${metalake}}}{{${catalog}}}{{${type}}}{{${schemaItem.name}}}`,
path: `?${new URLSearchParams({ metalake, catalog, type, schema: schemaItem.name }).toString()}`,
name: schemaItem.name,
title: schemaItem.name,
tables: [],
children: []
}
dispatch(fetchSchemas({ metalake, catalog, type, init: true }))
return schemaData
}
)
export const updateSchema = createAsyncThunk(
'appMetalakes/updateSchema',
async ({ metalake, catalog, type, schema, data }, { dispatch }) => {
const [err, res] = await to(updateSchemaApi({ metalake, catalog, schema, data }))
if (err || !res) {
return { err: true }
}
dispatch(fetchSchemas({ metalake, catalog, type, init: true }))
return res.schema
}
)
export const deleteSchema = createAsyncThunk(
'appMetalakes/deleteSchema',
async ({ metalake, catalog, type, schema }, { dispatch }) => {
dispatch(setTableLoading(true))
const [err, res] = await to(deleteSchemaApi({ metalake, catalog, schema }))
dispatch(setTableLoading(false))
if (err || !res) {
throw new Error(err)
}
dispatch(fetchSchemas({ metalake, catalog, type, page: 'catalogs', init: true }))
return res
}
)
export const fetchTables = createAsyncThunk(
'appMetalakes/fetchTables',
async ({ init, page, metalake, catalog, schema }, { getState, dispatch }) => {
if (init) {
dispatch(setTableLoading(true))
}
const [err, res] = await to(getTablesApi({ metalake, catalog, schema }))
dispatch(setTableLoading(false))
if (init && (err || !res)) {
dispatch(resetTableData())
throw new Error(err)
}
const { identifiers = [] } = res
const tables = identifiers.map(table => {
return {