in web/web/src/lib/store/metalakes/index.js [1094:1219]
tree: getState().metalakes.metalakeTree
})
)
}
dispatch(
setExpandedNodes([
`{{${metalake}}}`,
`{{${metalake}}}{{${catalog}}}{{${'messaging'}}}`,
`{{${metalake}}}{{${catalog}}}{{${'messaging'}}}{{${schema}}}`
])
)
return { topics, page, init }
}
)
export const getTopicDetails = createAsyncThunk(
'appMetalakes/getTopicDetails',
async ({ init, metalake, catalog, schema, topic }, { getState, dispatch }) => {
dispatch(resetTableData())
if (init) {
dispatch(setTableLoading(true))
}
const [err, res] = await to(getTopicDetailsApi({ metalake, catalog, schema, topic }))
dispatch(setTableLoading(false))
if (err || !res) {
dispatch(resetTableData())
throw new Error(err)
}
const { topic: resTopic } = res
dispatch(
setExpandedNodes([
`{{${metalake}}}`,
`{{${metalake}}}{{${catalog}}}{{${'messaging'}}}`,
`{{${metalake}}}{{${catalog}}}{{${'messaging'}}}{{${schema}}}`
])
)
return resTopic
}
)
export const createTopic = createAsyncThunk(
'appMetalakes/createTopic',
async ({ data, metalake, catalog, type, schema }, { dispatch }) => {
dispatch(setTableLoading(true))
const [err, res] = await to(createTopicApi({ data, metalake, catalog, schema }))
dispatch(setTableLoading(false))
if (err || !res) {
return { err: true }
}
const { topic: topicItem } = res
const topicData = {
...topicItem,
node: 'topic',
id: `{{${metalake}}}{{${catalog}}}{{${type}}}{{${schema}}}{{${topicItem.name}}}`,
key: `{{${metalake}}}{{${catalog}}}{{${type}}}{{${schema}}}{{${topicItem.name}}}`,
path: `?${new URLSearchParams({ metalake, catalog, type, schema, topic: topicItem.name }).toString()}`,
name: topicItem.name,
title: topicItem.name,
tables: [],
children: []
}
dispatch(fetchTopics({ metalake, catalog, schema, type, init: true }))
return topicData
}
)
export const updateTopic = createAsyncThunk(
'appMetalakes/updateTopic',
async ({ metalake, catalog, type, schema, topic, data }, { dispatch }) => {
const [err, res] = await to(updateTopicApi({ metalake, catalog, schema, topic, data }))
if (err || !res) {
return { err: true }
}
dispatch(fetchTopics({ metalake, catalog, type, schema, init: true }))
return res.topic
}
)
export const deleteTopic = createAsyncThunk(
'appMetalakes/deleteTopic',
async ({ metalake, catalog, type, schema, topic }, { dispatch }) => {
dispatch(setTableLoading(true))
const [err, res] = await to(deleteTopicApi({ metalake, catalog, schema, topic }))
dispatch(setTableLoading(false))
if (err || !res) {
throw new Error(err)
}
dispatch(fetchTopics({ metalake, catalog, type, schema, page: 'topics', init: true }))
return res
}
)
export const fetchModels = createAsyncThunk(
'appMetalakes/fetchModels',
async ({ init, page, metalake, catalog, schema }, { getState, dispatch }) => {
if (init) {
dispatch(setTableLoading(true))
}
const [err, res] = await to(getModelsApi({ metalake, catalog, schema }))
dispatch(setTableLoading(false))
if (init && (err || !res)) {
dispatch(resetTableData())
throw new Error(err)
}
const { identifiers = [] } = res
const models = identifiers.map(model => {
return {