|
|
|
@ -2,6 +2,8 @@ import type { TableType } from 'nocodb-sdk'
|
|
|
|
|
import { UITypes } from 'nocodb-sdk' |
|
|
|
|
import { useNuxtApp } from '#app' |
|
|
|
|
import { useProject } from '#imports' |
|
|
|
|
import { useToast } from 'vue-toastification' |
|
|
|
|
import { extractSdkResponseErrorMsg } from '~/utils/errorUtils' |
|
|
|
|
|
|
|
|
|
export default (onTableCreate?: (tableMeta: TableType) => void) => { |
|
|
|
|
const table = reactive<{ title: string; table_name: string; columns: Record<string, boolean> }>({ |
|
|
|
@ -16,26 +18,33 @@ export default (onTableCreate?: (tableMeta: TableType) => void) => {
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
const { sqlUi, project, tables } = useProject() |
|
|
|
|
|
|
|
|
|
const toast = useToast() |
|
|
|
|
|
|
|
|
|
const { $api } = useNuxtApp() |
|
|
|
|
|
|
|
|
|
const createTable = async () => { |
|
|
|
|
if (!sqlUi?.value) return |
|
|
|
|
const columns = sqlUi?.value?.getNewTableColumns().filter((col) => { |
|
|
|
|
if (col.column_name === 'id' && table.columns.id_ag) { |
|
|
|
|
Object.assign(col, sqlUi?.value?.getDataTypeForUiType({ uidt: UITypes.ID }, 'AG')) |
|
|
|
|
col.dtxp = sqlUi?.value?.getDefaultLengthForDatatype(col.dt) |
|
|
|
|
col.dtxs = sqlUi?.value?.getDefaultScaleForDatatype(col.dt) |
|
|
|
|
return true |
|
|
|
|
} |
|
|
|
|
return !!table.columns[col.column_name] |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
const tableMeta = await $api.dbTable.create(project?.value?.id as string, { |
|
|
|
|
...table, |
|
|
|
|
columns, |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
onTableCreate?.(tableMeta) |
|
|
|
|
try { |
|
|
|
|
if (!sqlUi?.value) return |
|
|
|
|
const columns = sqlUi?.value?.getNewTableColumns().filter((col) => { |
|
|
|
|
if (col.column_name === 'id' && table.columns.id_ag) { |
|
|
|
|
Object.assign(col, sqlUi?.value?.getDataTypeForUiType({ uidt: UITypes.ID }, 'AG')) |
|
|
|
|
col.dtxp = sqlUi?.value?.getDefaultLengthForDatatype(col.dt) |
|
|
|
|
col.dtxs = sqlUi?.value?.getDefaultScaleForDatatype(col.dt) |
|
|
|
|
return true |
|
|
|
|
} |
|
|
|
|
return !!table.columns[col.column_name] |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
const tableMeta = await $api.dbTable.create(project?.value?.id as string, { |
|
|
|
|
...table, |
|
|
|
|
columns, |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
onTableCreate?.(tableMeta) |
|
|
|
|
} catch (e: any) { |
|
|
|
|
toast.error(await extractSdkResponseErrorMsg(e)) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
watch( |
|
|
|
|