import {MercureEntityUpdate, sseState} from "~/types/interfaces"; import {repositoryHelper} from "~/services/store/repository"; import {models} from "~/models/_import"; export const state = () => ({ connected: false, }) export const mutations = { setConnected(state: sseState, connected: boolean) { state.connected = connected }, addEvent(state: sseState, event: MercureEntityUpdate) { switch (event.operation) { case "update": const matches = event.iri.match(/^\/api\/(\w+)\/.*/) if (!matches) { throw new Error('SSE: cannot parse the IRI') } const entityName = matches[1] let model = models.find(candidate => { return candidate.entity === entityName }) if (!model) { throw new Error('SSE: no model found') } repositoryHelper.persist(model, JSON.parse(event.data)) break case "create": break case "delete": break default: throw new Error('SSE: unknown operation type') } } }