import { SqlUiFactory } from 'nocodb-sdk' import type { ProjectType, TableType } from 'nocodb-sdk' import { useNuxtApp, useState } from '#app' import { USER_PROJECT_ROLES } from '~/lib/constants' export default () => { const projectRoles = useState>(USER_PROJECT_ROLES, () => ({})) const { $api } = useNuxtApp() const project = useState('project') const tables = useState('tables') const loadProjectRoles = async () => { projectRoles.value = {} if (project.value.id) { const user = await $api.auth.me({ project_id: project.value.id }) projectRoles.value = user.roles } } const loadTables = async () => { if (project.value.id) { const tablesResponse = await $api.dbTable.list(project.value.id) if (tablesResponse.list) tables.value = tablesResponse.list } } const loadProject = async (projectId: string) => { project.value = await $api.project.read(projectId) await loadProjectRoles() } const isMysql = computed(() => ['mysql', 'mysql2'].includes(project.value?.bases?.[0]?.type || '')) const isPg = computed(() => project.value?.bases?.[0]?.type === 'pg') const sqlUi = computed(() => SqlUiFactory.create({ client: project.value?.bases?.[0]?.type || '' })) return { project, tables, loadProject, loadTables, isMysql, isPg, sqlUi } }