Skip to content

Commit 0fadcfc

Browse files
committed
feat: improve query change handling
1 parent f7526dd commit 0fadcfc

File tree

1 file changed

+72
-16
lines changed

1 file changed

+72
-16
lines changed

client/app/pages/vue-query.vue

Lines changed: 72 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,35 @@ const filteredQueries = computed(() => {
2828
function onQueryNotification(event: QueryCacheNotifyEvent) {
2929
switch (event.type) {
3030
case 'updated': {
31+
console.log('Query updated', event.query.queryKey)
3132
const query = queries.value.find(q => q.queryHash === event.query.queryHash)
3233
if (query) {
3334
query.state = { ...event.query.state }
3435
}
3536
break
3637
}
38+
case 'observerResultsUpdated': {
39+
// when data becomes stale, the query is updated
40+
console.log('Query observerResultsUpdated', event.query.queryKey, event.query.isStale(), event.query.state)
41+
break
42+
}
3743
case 'added':
3844
console.log('Query added', event.query.queryKey)
45+
queries.value.push(event.query)
3946
break
40-
case 'removed':
47+
case 'removed': {
4148
console.log('Query removed', event.query.queryKey)
49+
const index = queries.value.findIndex(q => q.queryHash === event.query.queryHash)
50+
if (index !== -1) {
51+
queries.value.splice(index, 1)
52+
}
53+
if (selectedQuery.value?.queryHash === event.query.queryHash) {
54+
selectedQuery.value = null
55+
}
4256
break
57+
}
4358
default:
59+
console.log('Unknown event', event.type)
4460
break
4561
}
4662
}
@@ -102,11 +118,26 @@ function selectQuery(query: Query) {
102118
text="Query Overview"
103119
:padding="true"
104120
>
105-
<NCard class="px6 py2">
106-
<p><strong>Query Key:</strong> {{ selectedQuery?.queryKey }}</p>
107-
<p><strong>Query Hash:</strong> {{ selectedQuery?.queryHash }}</p>
108-
<p><strong>Last Updated:</strong> {{ new Date(selectedQuery.state.dataUpdatedAt).toLocaleString() }}</p>
109-
</NCard>
121+
<div class="grid grid-cols-[auto_1fr] gap-1 px-2 py-2 b-1 b-solid b-gray-200">
122+
<div>
123+
<strong>Query Key:</strong>
124+
</div>
125+
<div>
126+
{{ selectedQuery?.queryKey }}
127+
</div>
128+
<div>
129+
<strong>Query Hash:</strong>
130+
</div>
131+
<div>
132+
{{ selectedQuery?.queryHash }}
133+
</div>
134+
<div>
135+
<strong>Last Updated:</strong>
136+
</div>
137+
<div>
138+
{{ new Date(selectedQuery.state.dataUpdatedAt).toLocaleString() }}
139+
</div>
140+
</div>
110141
</NSectionBlock>
111142
<NSectionBlock
112143
icon="carbon-settings"
@@ -119,18 +150,43 @@ function selectQuery(query: Query) {
119150
</NSectionBlock>
120151
<NSectionBlock
121152
icon="carbon-settings"
122-
text="Query Explorer"
153+
text="Query Details"
123154
:padding="true"
124155
>
125-
<NCard>
126-
<p><strong>Status:</strong> {{ selectedQuery.state.status }}</p>
127-
<p><strong>Fetch Status:</strong> {{ selectedQuery.state.fetchStatus }}</p>
128-
<p><strong>Invalidated:</strong> {{ selectedQuery.state.isInvalidated }}</p>
129-
<p><strong>Update Count:</strong> {{ selectedQuery.state.dataUpdateCount }}</p>
130-
<p><strong>Active:</strong> {{ selectedQuery.observers.length === 0 ? 'Inactive' : 'Active' }}</p>
131-
<p><strong>IsStale:</strong> {{ toRaw(selectedQuery)?.isStale() }}</p>
132-
<p><strong>Disabled:</strong> {{ toRaw(selectedQuery)?.isDisabled() }}</p>
133-
</NCard>
156+
<div class="grid grid-cols-[auto_1fr] gap-1 px-2 py-2 b-1 b-solid b-gray-200">
157+
<div><strong>Status:</strong></div>
158+
<div>
159+
{{ selectedQuery.state.status }}
160+
</div>
161+
<div><strong>Fetch Status:</strong></div>
162+
<div>
163+
{{ selectedQuery.state.fetchStatus }}
164+
</div>
165+
<div><strong>Invalidated:</strong></div>
166+
<div>
167+
{{ selectedQuery.state.isInvalidated }}
168+
</div>
169+
<div><strong>Update Count:</strong></div>
170+
<div>
171+
{{ selectedQuery.state.dataUpdateCount }}
172+
</div>
173+
<div><strong>Active:</strong></div>
174+
<div>
175+
{{ selectedQuery.observers.length === 0 ? 'Inactive' : 'Active' }}
176+
</div>
177+
<div><strong>IsStale:</strong></div>
178+
<div>
179+
{{ toRaw(selectedQuery)?.isStale() }}
180+
</div>
181+
<div><strong>Disabled:</strong></div>
182+
<div>
183+
{{ toRaw(selectedQuery)?.isDisabled() }}
184+
</div>
185+
<div><strong>GCTime:</strong></div>
186+
<div>
187+
{{ selectedQuery.gcTime }}
188+
</div>
189+
</div>
134190
</NSectionBlock>
135191
</div>
136192
<div v-else>

0 commit comments

Comments
 (0)