Campaign???
Some checks failed
test / run-tests-client (push) Successful in 20s
test / run-tests-backend (push) Failing after 15s

jdksj
This commit is contained in:
BinarySandia04 2024-10-16 13:57:33 +02:00
parent b1b7fc5827
commit 870b05266b
5 changed files with 58 additions and 11 deletions

View File

@ -2,6 +2,7 @@ const mongoose = require("mongoose");
const Schema = mongoose.Schema; const Schema = mongoose.Schema;
const express = require('express'); const express = require('express');
const { getIo } = require('../io/socket');
/** /**
* Class for managing the backend api * Class for managing the backend api
@ -192,6 +193,10 @@ class BackendModel {
return this.#_mongoSchema.findOne(params); return this.#_mongoSchema.findOne(params);
} }
findOneAndUpdate(findParams, updateParams){
return this.#_mongoSchema.findOneAndUpdate(findParams, updateParams);
}
/** /**
* Finds an element by id and returns a promise with the result of the query * Finds an element by id and returns a promise with the result of the query
* @param {String} id * @param {String} id
@ -243,6 +248,10 @@ class BackendSocket {
on(msg, callback){ on(msg, callback){
this.#_internalSocket[`${this.#_prefix}/${msg}`] = callback; this.#_internalSocket[`${this.#_prefix}/${msg}`] = callback;
} }
emit(campaign, msg, data = {}){
getIo().to(campaign).emit(msg, data);
}
} }
function ParseSchema(schema){ function ParseSchema(schema){

View File

@ -38,6 +38,41 @@ function Main(api){
itemModel.find({campaign}).select('-data').lean().then(data => { itemModel.find({campaign}).select('-data').lean().then(data => {
res.json({status: "ok", data}); res.json({status: "ok", data});
}); });
});
dndModule.router.post('/item/create', (req, res) => {
const campaign = req.campaign;
let data = req.body.data;
if(!(data.type && data.name)) {
res.json({status: "error", msg: "args"});
return;
}
itemModel.create({campaign, type: data.type, name: data.name, info: {}, data: {}}).then(item => {
dndModule.socket.emit(campaign, 'update-concepts');
res.json({status: "ok", item});
});
});
dndModule.router.get('/item/get', (req, res) => {
const campaign = req.campaign;
let id = req.query.id;
itemModel.findOne({_id: id, campaign}).lean().then(concept => {
res.json({status: "ok", concept});
});
})
dndModule.router.put('/item/update', (req, res) => {
const campaign = req.campaign;
let id = req.query.id;
itemModel.findOneAndUpdate({_id: id, campaign}, req.body.concept).then(result => {
if(req.query.fireUpdate) dndModule.socket.emit(campaign, 'update-concepts');
dndModule.socket.emit(campaign).emit('update-concept', id);
res.json({status: "ok"});
});
}) })
Api.socket.on("test", () => console.log("test")); Api.socket.on("test", () => console.log("test"));

View File

@ -7,11 +7,11 @@ import { GetCampaign } from "@/services/Dragonroll";
let data = reactive({}); let data = reactive({});
let Api = Global('dnd-5e').Api; let Api = Global('dnd-5e').Api;
let dndModule = Global('dnd-5e')['dndModule']; let dndModule = Global('dnd-5e').DndModule;
function InitData(){ function InitData(){
Api = Global('dnd-5e').Api; Api = Global('dnd-5e').Api;
dndModule = Global('dnd-5e')['dndModule']; dndModule = Global('dnd-5e').DndModule;
data.value = { data.value = {
concepts: [] concepts: []

View File

@ -70,7 +70,7 @@ function Main(Api){
Api.registerModule(dndModule); Api.registerModule(dndModule);
Global('dnd-5e')['dndModule'] = dndModule; Global('dnd-5e').DndModule = dndModule;
} }
export { export {

View File

@ -1,20 +1,23 @@
<script setup> <script setup>
import WindowHandle from '@/views/partials/WindowHandle.vue'; import WindowHandle from '@/views/partials/WindowHandle.vue';
import Server from '@/services/Server';
import { GetConcept } from './../data.js'; import { GetConcept } from './../data.js';
import { onMounted, ref, shallowRef } from 'vue'; import { onMounted, ref, shallowRef } from 'vue';
import { SetupHandle, SetSize, ResetPosition, CreateWindow, SetMinSize, SetResizable } from '@/services/Windows'; import { SetupHandle, SetSize, ResetPosition, SetMinSize, SetResizable } from '@/services/Windows';
import IconSelector from '@/views/partials/IconSelector.vue'; import IconSelector from '@/views/partials/IconSelector.vue';
import { AddContextMenu, HideContextMenu, ShowContextMenu } from '@/services/ContextMenu'; import { AddContextMenu, HideContextMenu, ShowContextMenu } from '@/services/ContextMenu';
import { GetCampaign } from '@/services/Dragonroll';
import Tabs from '@/views/partials/Tabs.vue'; import Tabs from '@/views/partials/Tabs.vue';
import MarkdownEditor from '@/views/partials/MarkdownEditor.vue'; import MarkdownEditor from '@/views/partials/MarkdownEditor.vue';
import Tags from '@/views/partials/Tags.vue'; import Tags from '@/views/partials/Tags.vue';
import NumberInput from '@/views/partials/NumberInput.vue'; import NumberInput from '@/views/partials/NumberInput.vue';
import { Global } from '@/services/PluginGlobals';
const props = defineProps(['data']); const props = defineProps(['data']);
const data = props.data; const data = props.data;
const api = Global('dnd-5e').Api;
const pluginData = Global('dnd-5e').Data;
const dndModule = Global('dnd-5e').DndModule;
const handle = ref(null); const handle = ref(null);
@ -66,13 +69,13 @@ let concept = shallowRef({});
let oldInfo; let oldInfo;
function Upload(){ function Upload(){
let extraParams = ""; let params = {id: concept.value._id};
if(oldInfo != concept.value.info){ if(oldInfo != concept.value.info){
extraParams = "&fireUpdate=true"; params['fireUpdate'] = true;
oldInfo = structuredClone(concept.value.info); oldInfo = structuredClone(concept.value.info);
console.log("MAIASIUDHSAHJ")
} }
Server().put('/concept/update?campaign=' + GetCampaign()._id + "&id=" + concept.value._id + extraParams, {concept: concept.value}).then(response => {
dndModule.router.put('/concept/update', params, {concept: concept.value}).then(response => {
console.log(response); console.log(response);
}); });
} }
@ -141,7 +144,7 @@ onMounted(() => {
item_type.value = data.item_type; item_type.value = data.item_type;
if(data.item_create){ if(data.item_create){
Server().post('/concept/create?campaign=' + GetCampaign()._id, { dndModule.router.post('/item/create', {}, {
data: { data: {
type: data.item_type, type: data.item_type,
name: "New " + data.item_type name: "New " + data.item_type