|
@@ -6,6 +6,7 @@ export const createModelStore = modelName => {
|
|
|
const { runJob, subscribe, unsubscribe } = useWebsocketStore();
|
|
|
|
|
|
const models = ref([]);
|
|
|
+ const modelUses = ref({});
|
|
|
const permissions = ref(null);
|
|
|
const modelPermissions = ref({});
|
|
|
const createdSubcription = ref(null);
|
|
@@ -150,6 +151,9 @@ export const createModelStore = modelName => {
|
|
|
models.value.push(docRef);
|
|
|
}
|
|
|
|
|
|
+ modelUses.value[_doc._id] =
|
|
|
+ (modelUses.value[_doc._id] ?? 0) + 1;
|
|
|
+
|
|
|
if (subscriptions.value.models[_doc._id]) return docRef;
|
|
|
|
|
|
const updatedChannel = `model.${modelName}.updated.${_doc._id}`;
|
|
@@ -194,6 +198,12 @@ export const createModelStore = modelName => {
|
|
|
)
|
|
|
return;
|
|
|
|
|
|
+ if (modelUses.value[modelId] > 1) {
|
|
|
+ modelUses.value[modelId] -= 1;
|
|
|
+
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
const { updated, deleted } =
|
|
|
subscriptions.value.models[modelId];
|
|
|
|
|
@@ -210,6 +220,9 @@ export const createModelStore = modelName => {
|
|
|
|
|
|
if (modelPermissions.value[modelId])
|
|
|
delete modelPermissions.value[modelId];
|
|
|
+
|
|
|
+ if (modelUses.value[modelId])
|
|
|
+ delete modelUses.value[modelId];
|
|
|
}
|
|
|
)
|
|
|
);
|
|
@@ -221,9 +234,7 @@ export const createModelStore = modelName => {
|
|
|
|
|
|
if (existingModel) return existingModel;
|
|
|
|
|
|
- const [model] = await runJob(`data.${modelName}.findById`, { _id });
|
|
|
-
|
|
|
- return model;
|
|
|
+ return runJob(`data.${modelName}.findById`, { _id });
|
|
|
};
|
|
|
|
|
|
const updateById = async (_id, query) =>
|