| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- import {MercureEntityUpdate, sseState} from "~/types/interfaces";
- import {repositoryHelper} from "~/services/store/repository";
- import {models} from "~/models/_import";
- import Serializer from "~/services/serializer/serializer";
- import {DENORMALIZER_TYPE} from "~/types/enums";
- import {queryHelper} from "~/services/store/query";
- import {Repository as VuexRepository} from "@vuex-orm/core/dist/src/repository/Repository";
- import {Model, Query} from "@vuex-orm/core";
- import {File} from "~/models/Core/File";
- 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 })
- // let entry = Serializer.denormalize(event.data, DENORMALIZER_TYPE.HYDRA)
- console.log(JSON.parse(event.data))
- let entry = Serializer.denormalize(JSON.parse(event.data), DENORMALIZER_TYPE.HYDRA)
- console.log(entry)
- let item = repositoryHelper.persist(model, entry.data) as any
- const repository: VuexRepository<Model> = repositoryHelper.getRepository(model)
- const query: Query = repository.query()
- console.log(item)
- console.log(queryHelper.getItem(query, item.id))
- break
- case "create":
- break
- case "delete":
- break
- default:
- throw new Error('SSE: unknown operation type')
- }
- }
- }
|