Restructured Update Process Into Store

This commit is contained in:
2024-01-15 21:54:12 +01:00
parent 9f5a142680
commit 497d768d4e
20 changed files with 176 additions and 918 deletions

View File

@@ -15,43 +15,66 @@ export const useDataStore = defineStore('data', () => {
const dataTypes = {
tasks: {
label: "Aufgaben",
labelSingle: "Aufgabe"
labelSingle: "Aufgabe",
redirect: true
},
customers: {
label: "Kunden",
labelSingle: "Kunde"
labelSingle: "Kunde",
redirect:true
},
contacts: {
label: "Kontakte",
labelSingle: "Kontakt"
labelSingle: "Kontakt",
redirect:true
},
contracts: {
label: "Verträge",
labelSingle: "Vertrag"
labelSingle: "Vertrag",
redirect:true
},
absenceRequests: {
label: "Abwesenheitsanträge",
labelSingle: "Abwesenheitsantrag"
labelSingle: "Abwesenheitsantrag",
redirect:true
},
plants: {
label: "Anlagen",
labelSingle: "Anlage"
labelSingle: "Anlage",
redirect:true
},
products: {
label: "Artikel",
labelSingle: "Artikel"
labelSingle: "Artikel",
redirect:true
},
projects: {
label: "Projekte",
labelSingle: "Projekt"
labelSingle: "Projekt",
redirect:true
},
vehicles: {
label: "Fahrzeuge",
labelSingle: "Fahrzeug"
labelSingle: "Fahrzeug",
redirect:true
},
vendors: {
label: "Lieferanten",
labelSingle: "Lieferant"
labelSingle: "Lieferant",
redirect:true
},
messages: {
label: "Nachrichten",
labelSingle: "Nachricht"
},
spaces: {
label: "Lagerplätze",
labelSingle: "Lagerplatz",
redirect: true
},
users: {
label: "Benutzer",
labelSingle: "Benutzer"
}
}
@@ -172,6 +195,7 @@ export const useDataStore = defineStore('data', () => {
messages.value = []
}
//Realtime Update
const channelA = supabase
.channel('schema-db-changes')
.on(
@@ -181,10 +205,15 @@ export const useDataStore = defineStore('data', () => {
schema: 'public',
},
(payload) => {
//console.log(payload)
const c = payload.table + '.value.push(' + JSON.stringify(payload.new) + ')'
eval(c)
console.log(payload)
if(payload.eventType === 'INSERT') {
const c = payload.table + '.value.push(' + JSON.stringify(payload.new) + ')'
eval(c)
} else if(payload.eventType === 'UPDATE'){
const c = payload.table + '.value[' + payload.table + '.value.findIndex(i => i.id === ' + JSON.stringify(payload.old.id) + ')] = ' + JSON.stringify(payload.new)
eval(c)
}
}
)
.subscribe()
@@ -200,7 +229,24 @@ export const useDataStore = defineStore('data', () => {
} else if (supabaseData) {
await eval( dataType + '.value.push(' + JSON.stringify(...supabaseData) + ')')
toast.add({title: `${dataTypes[dataType].labelSingle} hinzugefügt`})
await router.push(`/${dataType}/show/${supabaseData[0].id}`)
if(dataTypes[dataType].redirect) await router.push(`/${dataType}/show/${supabaseData[0].id}`)
}
}
async function updateItem (dataType:string, data:Object) {
const {data:supabaseData,error: supabaseError} = await supabase
.from(dataType)
.update(data)
.eq('id',data.id)
.select()
if(supabaseError) {
console.log(supabaseError)
} else if(supabaseData) {
await eval(dataType + '.value[' + dataType + '.value.findIndex(i => i.id === ' + JSON.stringify(data.id) + ')] = ' + JSON.stringify(supabaseData[0]))
toast.add({title: `${dataTypes[dataType].labelSingle} gespeichert`})
if(dataTypes[dataType].redirect) await router.push(`/${dataType}/show/${supabaseData[0].id}`)
}
}
@@ -660,6 +706,7 @@ export const useDataStore = defineStore('data', () => {
messages,
//Functions
createNewItem,
updateItem,
fetchData,
clearStore,
fetchOwnTenant,