@@ -18,15 +18,29 @@ definePageMeta({
1818})
1919
2020const cursor = inject <Ref <Database > | undefined >(' __TABLITE:CURSOR' , undefined )
21- const selectedTable = useRouteParams (' name' , ' ' )
22- const { data, limit, offset, count, structure, primaryKeys, isLoading, backend, where, setup, execute } = useTable (selectedTable , cursor )
21+ const table = useRouteParams (' name' , ' ' )
22+ const { data, limit, offset, count, structure, primaryKeys, isLoading, backend, where, execute } = useTable (table , cursor )
2323const mode = ref (' data' )
2424const columns = computed (() => structure .value .map (({ columnName }) => columnName ))
2525const changes = ref <Record <string , any >>({})
2626const updates = ref <Update []>([])
2727const inserts = ref <Record <string , any >[]>([])
2828const deletes = ref <string []>([])
2929const selectedRowKeys = ref ([])
30+ const isReady = computed (() => !! cursor .value )
31+
32+ watchImmediate (() => [isReady .value , table .value ], async ([v , t ]) => {
33+ if (v ) {
34+ defineAssistantContext ({
35+ async system() {
36+ const prompt = await generateTableSchemaPromptWithIndexRows ([t ], cursor .value ! )
37+ return usePromptTemplate (TABLE_ASSISTANT_SYSTEM_PROMPT , {
38+ tableInfo: prompt ,
39+ })
40+ },
41+ })
42+ }
43+ })
3044
3145const page = computed ({
3246 get() {
@@ -69,7 +83,7 @@ const hasChanged = computed(() => {
6983async function onSelectTable() {
7084 toast .dismiss ()
7185 where .value = ' '
72- changes .value = { [selectedTable .value ]: {} }
86+ changes .value = { [table .value ]: {} }
7387 page .value = 1
7488 inserts .value = []
7589 deletes .value = []
@@ -88,7 +102,7 @@ async function onApplyFliters(value: string) {
88102}
89103
90104async function onDisvardChanges() {
91- changes .value = selectedTable .value ? { [selectedTable .value ]: {} } : {}
105+ changes .value = table .value ? { [table .value ]: {} } : {}
92106 inserts .value = []
93107 deletes .value = []
94108 toast .dismiss ()
@@ -120,14 +134,14 @@ function onOpenUpdatesPreview(visible: boolean) {
120134
121135 for (const _n of inserts .value ) {
122136 const keys = Object .keys (_n )
123- sqls .push (` INSERT INTO \` ${selectedTable .value }\` (${keys .join (' , ' )}) VALUES (${keys .map (k => normalizeQueryValue (_n [k ], dataTypeMap .value [k ])).join (' , ' )}) ` )
137+ sqls .push (` INSERT INTO \` ${table .value }\` (${keys .join (' , ' )}) VALUES (${keys .map (k => normalizeQueryValue (_n [k ], dataTypeMap .value [k ])).join (' , ' )}) ` )
124138 }
125139
126140 for (const _d of deletes .value ) {
127141 try {
128142 const json = JSON .parse (_d )
129143 const where = Object .entries (json ).map (([k , v ]) => ` ${k } = ${normalizeQueryValue (v , dataTypeMap .value [k ])} ` ).join (' AND ' )
130- sqls .push (` DELETE FROM \` ${selectedTable .value }\` WHERE ${where } ` )
144+ sqls .push (` DELETE FROM \` ${table .value }\` WHERE ${where } ` )
131145 }
132146 catch {
133147 continue
@@ -154,7 +168,7 @@ async function onSave() {
154168 toast .dismiss ()
155169 await applyUpdates ()
156170 await execute ()
157- changes .value = selectedTable .value ? { [selectedTable .value ]: {} } : {}
171+ changes .value = table .value ? { [table .value ]: {} } : {}
158172 updates .value = []
159173 inserts .value = []
160174 deletes .value = []
@@ -177,21 +191,21 @@ function onDeleteRecords() {
177191 <div class =" flex-1 h-full w-full flex flex-col" >
178192 <ResizablePanelGroup direction =" horizontal" class =" h-0 flex-1 w-full" >
179193 <ResizablePanel :default-size =" 22" :min-size =" 10" :max-size =" 50" >
180- <TableSelector v-model:value =" selectedTable " :cursor =" cursor" :loading =" isLoading" @after-select =" onSelectTable" />
194+ <TableSelector v-model:value =" table " :cursor =" cursor" :loading =" isLoading" @after-select =" onSelectTable" />
181195 </ResizablePanel >
182196
183197 <ResizableHandle />
184198
185199 <ResizablePanel class =" h-full bg-white" >
186- <div v-if =" !selectedTable " class =" w-full h-full flex items-center justify-center flex-col cursor-default" >
200+ <div v-if =" !table " class =" w-full h-full flex items-center justify-center flex-col cursor-default" >
187201 <TextHoverEffect class =" w-1/2 px-1" :stroke-width =" 1" text =" TABLITE" />
188202 </div >
189203
190- <div v-show =" selectedTable " class =" flex flex-col h-full" >
204+ <div v-show =" table " class =" flex flex-col h-full" >
191205 <div class =" p-4 flex justify-between items-center" >
192206 <div class =" ml-2 flex-1" >
193207 <div class =" font-semibold uppercase cursor-default" >
194- {{ selectedTable }}
208+ {{ table }}
195209 </div >
196210 </div >
197211
@@ -229,7 +243,7 @@ function onDeleteRecords() {
229243
230244 <div class =" w-full h-0 flex-1 flex flex-col bg-zinc-50 -m-px" >
231245 <VisTable
232- v-model:changes =" changes[selectedTable ]"
246+ v-model:changes =" changes[table ]"
233247 v-model:inserts =" inserts"
234248 v-model:selected-row-keys =" selectedRowKeys"
235249 editable
0 commit comments