| 123456789101112131415161718192021222324252627282930313233343536373839 |
- 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')
- }
- }
- }
|