Skip to content

Commit e283966

Browse files
committed
Big refactor: removing the concept of caching on items store
1 parent f6c2508 commit e283966

10 files changed

Lines changed: 37 additions & 56 deletions

File tree

admin/components/data/WriteViewDataSources.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ if (itemsStore.editing) {
9191
limit: 0,
9292
offset: 0,
9393
knowledge_base__id: itemsStore.editing
94-
}, false)).results
94+
})).results
9595
}
9696
9797
function getNameFromFile(file) {

admin/components/generic/InputSelect.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ const isRef = computed(() => {
101101
onMounted(async () => {
102102
if (props.filterSchema) {
103103
if (props.filterSchema.type === "ref") {
104-
let items = await itemsStore.retrieveItems(props.filterSchema.endpoint, {}, false)
104+
let items = await itemsStore.retrieveItems(props.filterSchema.endpoint, {})
105105
items = JSON.parse(JSON.stringify(items))
106106
items.results = items.results.map((item) => {
107107
return {
@@ -137,7 +137,7 @@ function remoteSearch(query) {
137137
return
138138
}
139139
if (ref) {
140-
itemsStore.retrieveItems(url, {search: query, limit: 0, offset: 0, ordering: undefined}, false).then((items) => {
140+
itemsStore.retrieveItems(url, {search: query, limit: 0, offset: 0, ordering: undefined}).then((items) => {
141141
items = JSON.parse(JSON.stringify(items))
142142
items.results = items.results.map((item) => {
143143
return {

admin/components/generic/Pagination.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
:disabled="disabled"
1111
:background="background"
1212
layout="prev, pager, next"
13-
:total="itemsStore?.items[props.apiUrl]?.count || 0"
13+
:total="itemsStore.total || 0"
1414
@current-change="pageChange"
1515
/>
1616
<div></div>
@@ -38,7 +38,7 @@ const pageChange = async (val: number) => {
3838
emit("change")
3939
}
4040
const total = computed(() => {
41-
return itemsStore?.items[props.apiUrl]?.count || 0
41+
return itemsStore.total || 0
4242
})
4343
4444
</script>

admin/components/generic/ReadView.vue

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
<div v-if="textExplanation" class="text-explanation" v-html="textExplanation"></div>
44
<Filters v-if="filtersSchema" :filtersSchema="filtersSchema"/>
55
<div class="section-header">
6-
<slot name="legend" :total="itemsStore.items[apiUrl]?.results?.length">
6+
<slot name="legend" :total="items.results?.length">
77
<div class="item-count"> {{
88
$t("numberofitems", {
9-
"number": itemsStore.items[apiUrl]?.results.length,
9+
"number": items.results.length,
1010
"readablename": readableName
1111
})
1212
}}
@@ -29,12 +29,12 @@
2929
</div>
3030
</div>
3131
<div class="cards-view" v-if="!itemsStore.tableMode && cardProps && requiredFilterSatisfied">
32-
<Card v-for="item in itemsStore.items[apiUrl]?.results" :item="item" :cardProps="cardProps" :titleProps="titleProps" :apiUrl="apiUrl" :itemSchema="itemSchema">
32+
<Card v-for="item in items.results" :item="item" :cardProps="cardProps" :titleProps="titleProps" :apiUrl="apiUrl" :itemSchema="itemSchema">
3333
<template v-slot:extra-card-bottom="{item}">
3434
<slot name="extra-card-bottom" :item="item"></slot>
3535
</template>
3636
</Card>
37-
<div class="box-card-add" :class="{'no-items': !itemsStore.items[apiUrl]?.results.length}"
37+
<div class="box-card-add" :class="{'no-items': !items.results.length}"
3838
@click="stateToAdd">
3939
<div class="box-card-add-content">
4040
<el-icon>
@@ -80,7 +80,7 @@
8080
</el-table-column>
8181
</el-table>
8282
<div v-if="itemsStore.tableMode && !readOnly" class="table-row-add"
83-
:class="{'no-items': !itemsStore.items[apiUrl]?.results.length}"
83+
:class="{'no-items': !items.results.length}"
8484
@click="stateToAdd">
8585
<span>
8686
<el-icon>
@@ -124,6 +124,7 @@ const {schema} = storeToRefs(itemsStore)
124124
const itemSchema = ref({})
125125
const route = useRoute()
126126
const resolvedTableRowProps = ref([])
127+
const items = ref({results: []})
127128
128129
const props = defineProps({
129130
readableName: {
@@ -210,14 +211,15 @@ async function loadItems() {
210211
itemsStore.loading = true
211212
if (!requiredFilterSatisfied.value) {
212213
itemsStore.loading = false
213-
itemsStore.items[props.apiUrl] = {results: []}
214+
items.value = {results: []}
214215
return
215216
}
216217
const params = {}
217218
if (props.defaultFilters)
218219
Object.assign(params, props.defaultFilters)
219-
await itemsStore.retrieveItems(props.apiUrl, params)
220-
await resolveTableRowProps(itemsStore.items[props.apiUrl]?.results)
220+
items.value = await itemsStore.retrieveItems(props.apiUrl, params)
221+
await resolveTableRowProps(items.value.results)
222+
itemsStore.total = items.value.count
221223
itemsStore.loading = false
222224
}
223225

admin/components/generic/WriteView.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ async function initializeFormValues() {
274274
id: props.itemId,
275275
limit: 0,
276276
offset: 0
277-
}, false, true) || {}
277+
}, true) || {}
278278
for (const [fieldName, fieldValue] of Object.entries(data)) {
279279
if (allExcludeFields.value.indexOf(fieldName) === -1) {
280280
form.value[fieldName] = fieldValue

admin/components/labeling/GenerationReview.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ watch(() => props.messageId, async (_) => {
5858
5959
async function initGenReview() {
6060
itemsStore.loading = true
61-
review.value = await itemsStore.retrieveItems("/back/api/broker/admin-review/", {message: props.messageId, limit: 0, offset: 0, ordering: undefined}, false, true) || {}
61+
review.value = await itemsStore.retrieveItems("/back/api/broker/admin-review/", {message: props.messageId, limit: 0, offset: 0, ordering: undefined}, true) || {}
6262
reviewType.value = review.value.gen_review_type
6363
itemsStore.loading = false
6464
}

admin/components/labeling/KnowledgeItemReview.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,12 @@ async function initKIReview() {
6969
return
7070
}
7171
for (const ki_ref of references.knowledge_items) {
72-
const ki = await itemsStore.retrieveItems("/back/api/language-model/knowledge-items/", {id: ki_ref.knowledge_item_id, limit: 0, offset: 0, ordering: undefined}, false, true)
72+
const ki = await itemsStore.retrieveItems("/back/api/language-model/knowledge-items/", {id: ki_ref.knowledge_item_id, limit: 0, offset: 0, ordering: undefined}, true)
7373
if (ki)
7474
reviewedKIs.value.kis.push(ki)
7575
}
76-
review.value = await itemsStore.retrieveItems("/back/api/broker/admin-review/", {message: props.message.id, limit: 0, offset: 0, ordering: undefined}, false, true) || {}
77-
ki_choices.value = (await itemsStore.retrieveItems("/back/api/language-model/knowledge-items/", {knowledge_base: references.knowledge_base_id, knowledge_base__id: references.knowledge_base_id, limit: 0, offset: 0, ordering: undefined}, false)).results
76+
review.value = await itemsStore.retrieveItems("/back/api/broker/admin-review/", {message: props.message.id, limit: 0, offset: 0, ordering: undefined}, true) || {}
77+
ki_choices.value = (await itemsStore.retrieveItems("/back/api/language-model/knowledge-items/", {knowledge_base: references.knowledge_base_id, knowledge_base__id: references.knowledge_base_id, limit: 0, offset: 0, ordering: undefined})).results
7878
itemsStore.loading = false
7979
}
8080

admin/components/labeling/LabelingTool.vue

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -121,17 +121,14 @@ const conversation = ref({})
121121
const loadingConversation = ref(false)
122122
const thereIsNext = ref(true)
123123
const thereIsPrev = ref(true)
124-
124+
let conversations = []
125125
// get conversation async data
126126
async function initConversation() {
127127
loadingConversation.value = true
128-
const {data} = await useAsyncData(
129-
"conversation" + props.id,
130-
async () => await $axios.get("/back/api/broker/conversations/" + props.id + "/")
131-
)
132-
conversation.value = data.value.data
133-
thereIsNext.value = (await itemsStore.getNextItem("/back/api/broker/conversations/", props.id, 1)) !== undefined
134-
thereIsPrev.value = (await itemsStore.getNextItem("/back/api/broker/conversations/", props.id, -1)) !== undefined
128+
conversation.value = (await $axios.get("/back/api/broker/conversations/" + props.id + "/")).data
129+
conversations = await itemsStore.retrieveItems("/back/api/broker/conversations/")
130+
thereIsNext.value = (await itemsStore.getNextItem(conversations, "/back/api/broker/conversations/", props.id, 1)) !== undefined
131+
thereIsPrev.value = (await itemsStore.getNextItem(conversations, "/back/api/broker/conversations/", props.id, -1)) !== undefined
135132
loadingConversation.value = false
136133
}
137134
@@ -164,7 +161,7 @@ function getQAMessageGroups(MMLChain) {
164161
async function pageConversation(direction) {
165162
loadingConversation.value = true
166163
msgLabeled.value = undefined
167-
const nextItem = await itemsStore.getNextItem("/back/api/broker/conversations/", props.id, direction)
164+
const nextItem = await itemsStore.getNextItem(conversations, "/back/api/broker/conversations/", props.id, direction)
168165
if (nextItem !== undefined) {
169166
itemsStore.editing = nextItem.id
170167
}

admin/store/items.js

Lines changed: 10 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
import {defineStore} from 'pinia';
22

3-
function apiCacheName(apiUrl, params) {
4-
return apiUrl
5-
return apiUrl + new URLSearchParams(params).toString()
6-
}
7-
83
export function authHeaders() {
94
const token = useCookie('token').value
105
return {
@@ -14,7 +9,6 @@ export function authHeaders() {
149

1510
export const useItemsStore = defineStore('items', {
1611
state: () => ({
17-
items: {},
1812
paths: {},
1913
filters: {},
2014
schema: undefined,
@@ -27,12 +21,12 @@ export const useItemsStore = defineStore('items', {
2721
currentPage: 1,
2822
ordering: undefined,
2923
itemsChanged: 0,
24+
total: 0
3025
}),
3126
actions: {
32-
async retrieveItems(apiUrl = undefined, params = {}, cache= true, one= false) {
27+
async retrieveItems(apiUrl = undefined, params = {}, one= false) {
3328
const {$axios} = useNuxtApp();
3429

35-
const cacheName = apiCacheName(apiUrl, params)
3630
// Would be nice to amke ordering dynamic as a parameter, perhaps one day
3731
if (!("limit" in params))
3832
params.limit = this.pageSize
@@ -52,18 +46,10 @@ export const useItemsStore = defineStore('items', {
5246
if (Array.isArray(res)) { // When the endpoint is not paginated
5347
res = {results: res}
5448
}
55-
if (!cache) {
56-
if (one) {
57-
return res.results[0]
58-
}
59-
return res
60-
}
61-
62-
this.items[cacheName] = res
6349
if (one) {
64-
return this.items[cacheName][0]
50+
return res.results[0]
6551
}
66-
return this.items[cacheName]
52+
return res
6753
},
6854
async deleteItem(apiUrl, id, refresh = true) {
6955
const {$axios} = useNuxtApp();
@@ -90,22 +76,18 @@ export const useItemsStore = defineStore('items', {
9076
return await this._resolveRefs(this.schema[schemaName])
9177
return this.schema[schemaName]
9278
},
93-
async getNextItem(apiUrl, itemId, direction = 1, params = {}, force= false) {
94-
const {$axios} = useNuxtApp();
95-
96-
const cacheName = apiCacheName(apiUrl, params)
97-
98-
if (force || !this.items[cacheName]) {
99-
await this.retrieveItems(apiUrl)
79+
async getNextItem(items, apiUrl, itemId, direction = 1, params = {}, force= false) {
80+
if (force || !items) {
81+
items = await this.retrieveItems(apiUrl)
10082
}
10183
// It takes the next item after currentItem
102-
let index = this.items[cacheName].results.findIndex(item => item.id === itemId)
84+
let index = items.results.findIndex(item => item.id === itemId)
10385
if (index === -1)
10486
return undefined
10587
index += direction
106-
if (index < 0 || index >= this.items[cacheName].results.length)
88+
if (index < 0 || index >= items.results.length)
10789
return undefined
108-
return this.items[cacheName].results[index]
90+
return items.results[index]
10991
},
11092
async _resolveRefs(schema) {
11193
if (!schema.properties && schema.oneOf) {

admin/utils/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ export async function solveRefPropValue(item, propName, itemSchema) {
7070
limit: 0,
7171
offset: 0,
7272
ordering: undefined
73-
}, false, true);
73+
}, true);
7474
if (res) {
7575
itemSchema.properties[propName].choices.results.push({label: res.name, value: res.id})
7676
return res.name

0 commit comments

Comments
 (0)