diff --git a/backend/ee-repo-ref.txt b/backend/ee-repo-ref.txt index e6df7f7752..99c1bc506d 100644 --- a/backend/ee-repo-ref.txt +++ b/backend/ee-repo-ref.txt @@ -1 +1 @@ -4c6cbb234019db102c44a91ada36c4a197721aa4 +cc8e28e80bb352269c576ff82b8e679d7a505444 diff --git a/frontend/src/lib/components/copilot/chat/DatatableCreationPolicy.svelte b/frontend/src/lib/components/copilot/chat/DatatableCreationPolicy.svelte index 65abb0e1c5..6c89e79525 100644 --- a/frontend/src/lib/components/copilot/chat/DatatableCreationPolicy.svelte +++ b/frontend/src/lib/components/copilot/chat/DatatableCreationPolicy.svelte @@ -6,7 +6,10 @@ const aiChatManager = getAiChatManager() import DefaultDatabaseSelector from '$lib/components/raw_apps/DefaultDatabaseSelector.svelte' import { workspaceStore } from '$lib/stores' - import { createDatatablesResource } from '$lib/components/raw_apps/datatableUtils.svelte' + import { + createDatatablesResource, + roleAfterDatatableChange + } from '$lib/components/raw_apps/datatableUtils.svelte' // Load available datatables from workspace using shared utility const datatables = createDatatablesResource(() => $workspaceStore) @@ -37,8 +40,10 @@ } function handleDefaultChange(datatable: string | undefined, schema: string | undefined) { - aiChatManager.datatableCreationPolicy.datatable = datatable - aiChatManager.datatableCreationPolicy.schema = schema + const policy = aiChatManager.datatableCreationPolicy + policy.role = roleAfterDatatableChange(policy.datatable, datatable, policy.role) + policy.datatable = datatable + policy.schema = schema } @@ -67,6 +72,7 @@ diff --git a/frontend/src/lib/components/raw_apps/DefaultDatabaseSelector.svelte b/frontend/src/lib/components/raw_apps/DefaultDatabaseSelector.svelte index 66e3ab0355..16ca39841f 100644 --- a/frontend/src/lib/components/raw_apps/DefaultDatabaseSelector.svelte +++ b/frontend/src/lib/components/raw_apps/DefaultDatabaseSelector.svelte @@ -4,8 +4,8 @@ import Select from '$lib/components/select/Select.svelte' import { workspaceStore } from '$lib/stores' import { + createDatatableAccessResource, createDatatablesResource, - createSchemasResource, toDatatableItems, toSchemaItems } from './datatableUtils.svelte' @@ -20,6 +20,9 @@ datatable: string | undefined /** Currently selected schema */ schema: string | undefined + /** The data table role the app's queries run as, if it names one. What a + * role may see is what the schema list has to be read as. */ + role?: string | undefined /** Callback when either value changes */ onChange?: (datatable: string | undefined, schema: string | undefined) => void /** Description text to show in the popover */ @@ -29,19 +32,21 @@ let { datatable, schema, + role = undefined, onChange, description = 'Set the default datatable and schema for new tables. This is where AI will create new tables when needed.' }: Props = $props() // Load available datatables and schemas using shared utilities const datatables = createDatatablesResource(() => opWs) - const schemas = createSchemasResource( + const access = createDatatableAccessResource( () => datatable, + () => role, () => opWs ) const datatableItems = $derived(toDatatableItems(datatables.current)) - const schemaItems = $derived(toSchemaItems(schemas.current)) + const schemaItems = $derived(toSchemaItems(access.current.schemas)) // Track datatable changes to reset schema let previousDatatable = $state(undefined) diff --git a/frontend/src/lib/components/raw_apps/RawAppDataTableList.svelte b/frontend/src/lib/components/raw_apps/RawAppDataTableList.svelte index b874f37d17..a985ae410b 100644 --- a/frontend/src/lib/components/raw_apps/RawAppDataTableList.svelte +++ b/frontend/src/lib/components/raw_apps/RawAppDataTableList.svelte @@ -16,6 +16,8 @@ defaultDatatable?: string | undefined /** Default schema for new tables */ defaultSchema?: string | undefined + /** The data table role the app's queries run as, if it names one. */ + defaultRole?: string | undefined onAdd?: () => void onRemove?: (index: number) => void onSelect?: (ref: DataTableRef, index: number) => void @@ -31,6 +33,7 @@ dataTableRefs = [], defaultDatatable = undefined, defaultSchema = undefined, + defaultRole = undefined, onAdd, onRemove, onSelect, @@ -95,6 +98,7 @@ {/if} diff --git a/frontend/src/lib/components/raw_apps/RawAppEditor.svelte b/frontend/src/lib/components/raw_apps/RawAppEditor.svelte index 2b8f3b464f..43242dcd0d 100644 --- a/frontend/src/lib/components/raw_apps/RawAppEditor.svelte +++ b/frontend/src/lib/components/raw_apps/RawAppEditor.svelte @@ -1,4 +1,5 @@