From b1daa7e64fcaa2759820f29749bbf69cea8ad925 Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Wed, 26 Mar 2025 11:11:42 +0100 Subject: [PATCH 1/3] change: make query id to uuid --- src/stores/admin/club/queryBuilder.ts | 3 +-- src/stores/admin/configuration/queryStore.ts | 2 +- .../admin/club/newsletter/newsletter.models.ts | 4 ++-- src/viewmodels/admin/configuration/query.models.ts | 4 ++-- .../admin/club/newsletter/NewsletterRecipients.vue | 10 +++++----- 5 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/stores/admin/club/queryBuilder.ts b/src/stores/admin/club/queryBuilder.ts index d70cd66..2aad8af 100644 --- a/src/stores/admin/club/queryBuilder.ts +++ b/src/stores/admin/club/queryBuilder.ts @@ -13,8 +13,7 @@ export const useQueryBuilderStore = defineStore("queryBuilder", { loadingData: "fetched" as "loading" | "fetched" | "failed", queryError: "" as string | { sql: string; code: string; msg: string }, query: undefined as undefined | DynamicQueryStructure | string, - activeQueryId: undefined as undefined | number, - isLoadedQuery: undefined as undefined | number, + activeQueryId: undefined as undefined | string, }; }, actions: { diff --git a/src/stores/admin/configuration/queryStore.ts b/src/stores/admin/configuration/queryStore.ts index 772117e..451cbca 100644 --- a/src/stores/admin/configuration/queryStore.ts +++ b/src/stores/admin/configuration/queryStore.ts @@ -31,7 +31,7 @@ export const useQueryStoreStore = defineStore("queryStore", { this.loading = "failed"; }); }, - fetchQueryById(id: number): Promise> { + fetchQueryById(id: string): Promise> { return http.get(`/admin/querystore/${id}`); }, triggerSave() { diff --git a/src/viewmodels/admin/club/newsletter/newsletter.models.ts b/src/viewmodels/admin/club/newsletter/newsletter.models.ts index 5a85299..31926bc 100644 --- a/src/viewmodels/admin/club/newsletter/newsletter.models.ts +++ b/src/viewmodels/admin/club/newsletter/newsletter.models.ts @@ -8,7 +8,7 @@ export interface NewsletterViewModel { newsletterText: string; newsletterSignatur: string; isSent: boolean; - recipientsByQueryId?: number | null; + recipientsByQueryId?: string | null; recipientsByQuery?: QueryViewModel | null; } @@ -23,7 +23,7 @@ export interface SyncNewsletterViewModel { newsletterTitle: string; newsletterText: string; newsletterSignatur: string; - recipientsByQueryId?: number; + recipientsByQueryId?: string; } export interface SendNewsletterViewModel { diff --git a/src/viewmodels/admin/configuration/query.models.ts b/src/viewmodels/admin/configuration/query.models.ts index c6d1c84..4640630 100644 --- a/src/viewmodels/admin/configuration/query.models.ts +++ b/src/viewmodels/admin/configuration/query.models.ts @@ -7,7 +7,7 @@ export interface TableMeta { } export interface QueryViewModel { - id: number; + id: string; title: string; query: string | DynamicQueryStructure; } @@ -18,6 +18,6 @@ export interface CreateQueryViewModel { } export interface UpdateQueryViewModel { - id: number; + id: string; query: string | DynamicQueryStructure; } diff --git a/src/views/admin/club/newsletter/NewsletterRecipients.vue b/src/views/admin/club/newsletter/NewsletterRecipients.vue index a6f2b5c..568dd0f 100644 --- a/src/views/admin/club/newsletter/NewsletterRecipients.vue +++ b/src/views/admin/club/newsletter/NewsletterRecipients.vue @@ -134,10 +134,10 @@ export default defineComponent({ if (val == "def") { this.activeNewsletterObj.recipientsByQueryId = null; this.activeNewsletterObj.recipientsByQuery = null; - } else if (this.queries.find((q) => q.id == parseInt(val))) { - this.activeNewsletterObj.recipientsByQueryId = parseInt(val); - this.activeNewsletterObj.recipientsByQuery = cloneDeep(this.queries.find((q) => q.id == parseInt(val))); - this.sendQuery(0, 1000, this.recipientsByQuery?.query); + } else if (this.queries.find((q) => q.id == val)) { + this.activeNewsletterObj.recipientsByQueryId = val; + this.activeNewsletterObj.recipientsByQuery = cloneDeep(this.queries.find((q) => q.id == val)); + this.sendQuery(0, 0, this.recipientsByQuery?.query, true); } }, }, @@ -171,7 +171,7 @@ export default defineComponent({ }, loadQuery() { if (this.recipientsByQuery) { - this.sendQuery(0, 1000, this.recipientsByQuery.query); + this.sendQuery(0, 0, this.recipientsByQuery.query, true); } }, }, -- 2.45.3 From 8ec3b048241e4dbbad637db21ef5a28208570ab6 Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Mon, 31 Mar 2025 09:58:54 +0200 Subject: [PATCH 2/3] change: sw caching --- vite.config.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/vite.config.ts b/vite.config.ts index a967155..222a50f 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -58,6 +58,14 @@ export default defineConfig({ }, ], }, + workbox: { + runtimeCaching: [ + { + urlPattern: /^\/api\//, + handler: "NetworkFirst", + }, + ], + }, }), ], resolve: { -- 2.45.3 From d04dde688ffe8c9518c47f7d63a5f922351a3cc6 Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Mon, 7 Apr 2025 15:30:12 +0200 Subject: [PATCH 3/3] fix: query builder query select --- src/components/queryBuilder/BuilderHost.vue | 38 ++++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/src/components/queryBuilder/BuilderHost.vue b/src/components/queryBuilder/BuilderHost.vue index 55938a4..cbe420e 100644 --- a/src/components/queryBuilder/BuilderHost.vue +++ b/src/components/queryBuilder/BuilderHost.vue @@ -32,7 +32,7 @@ > @@ -54,7 +54,7 @@ class="p-1" :class="typeof value == 'object' ? 'bg-gray-200' : ''" title="Visual Builder" - @click="queryMode = 'builder'" + @click="changeMode('builder')" > @@ -62,7 +62,7 @@ class="p-1" :class="typeof value == 'string' ? 'bg-gray-200' : ''" title="SQL Editor" - @click="queryMode = 'editor'" + @click="changeMode('editor')" > @@ -116,21 +116,9 @@ export default defineComponent({ }, emits: ["update:model-value", "query:run", "query:save", "results:export", "results:clear"], watch: { - queryMode() { - if (this.queryMode == "builder") { - this.value = { - select: "*", - table: "", - where: [], - join: [], - orderBy: [], - }; - } else { - this.value = ""; - } - this.activeQueryId = undefined; - }, activeQueryId() { + if (this.activeQueryId == undefined) return; + let query = this.queries.find((t) => t.id == this.activeQueryId)?.query; if (query != undefined) { if (typeof query == "string") { @@ -188,6 +176,22 @@ export default defineComponent({ showStructure() { this.openModal(markRaw(defineAsyncComponent(() => import("@/components/queryBuilder/StructureModal.vue")))); }, + changeMode(mode: "editor" | "builder") { + this.queryMode = mode; + + this.activeQueryId = undefined; + if (this.queryMode == "builder") { + this.value = { + select: "*", + table: "", + where: [], + join: [], + orderBy: [], + }; + } else { + this.value = ""; + } + }, }, }); -- 2.45.3