Restructured Create Process Into Store

This commit is contained in:
2024-01-15 19:50:26 +01:00
parent f6c1f4219b
commit 9f5a142680
12 changed files with 126 additions and 233 deletions

View File

@@ -1,5 +1,6 @@
import {defineStore} from 'pinia'
import dayjs from "dayjs"
import {typeOf} from "uri-js/dist/esnext/util";
//const supabase = createClient('https://uwppvcxflrcsibuzsbil.supabase.co','eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InV3cHB2Y3hmbHJjc2lidXpzYmlsIiwicm9sZSI6ImFub24iLCJpYXQiOjE3MDA5MzgxOTQsImV4cCI6MjAxNjUxNDE5NH0.CkxYSQH0uLfwx9GVUlO6AYMU2FMLAxGMrwEKvyPv7Oo')
@@ -9,6 +10,50 @@ export const useDataStore = defineStore('data', () => {
const supabase = useSupabaseClient()
const user = useSupabaseUser()
const toast = useToast()
const router = useRouter()
const dataTypes = {
tasks: {
label: "Aufgaben",
labelSingle: "Aufgabe"
},
customers: {
label: "Kunden",
labelSingle: "Kunde"
},
contacts: {
label: "Kontakte",
labelSingle: "Kontakt"
},
contracts: {
label: "Verträge",
labelSingle: "Vertrag"
},
absenceRequests: {
label: "Abwesenheitsanträge",
labelSingle: "Abwesenheitsantrag"
},
plants: {
label: "Anlagen",
labelSingle: "Anlage"
},
products: {
label: "Artikel",
labelSingle: "Artikel"
},
projects: {
label: "Projekte",
labelSingle: "Projekt"
},
vehicles: {
label: "Fahrzeuge",
labelSingle: "Fahrzeug"
},
vendors: {
label: "Lieferanten",
labelSingle: "Lieferant"
}
}
const loaded = ref(false)
const ownTenant = ref({
@@ -127,6 +172,38 @@ export const useDataStore = defineStore('data', () => {
messages.value = []
}
const channelA = supabase
.channel('schema-db-changes')
.on(
'postgres_changes',
{
event: '*',
schema: 'public',
},
(payload) => {
//console.log(payload)
const c = payload.table + '.value.push(' + JSON.stringify(payload.new) + ')'
eval(c)
}
)
.subscribe()
async function createNewItem (dataType:string,data:Array){
const {data:supabaseData,error:supabaseError} = await supabase
.from(dataType)
.insert(typeOf(data) === 'Object' ? [data] : data)
.select()
if(supabaseError) {
console.log(supabaseError)
} 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}`)
}
}
async function fetchOwnTenant () {
ownTenant.value = (await supabase.from("tenants").select().eq('id', user.value?.app_metadata.tenant)).data[0]
}
@@ -582,6 +659,7 @@ export const useDataStore = defineStore('data', () => {
chats,
messages,
//Functions
createNewItem,
fetchData,
clearStore,
fetchOwnTenant,