dragonroll/plugins/dnd-5e/backend/main.js

78 lines
2.4 KiB
JavaScript
Raw Normal View History

// Entrypoint
2024-10-14 13:50:47 +00:00
let Api;
function Main(api){
Api = api;
// Create our module in the backend. We only need the package name, it must be equal to the one that
// we made inside the client
let dndModule = Api.createModule('dnd-5e');
let itemModel = Api.createModel("item", {
2024-10-14 17:25:46 +00:00
name: { type: "String", required: true, default: "New item"},
type: { type: "String", required: true, default: "Item" },
2024-10-14 13:50:47 +00:00
info: { type: "Object" }, // For preview only
data: { type: "Object" }, // Advanced item
book: { type: "ObjectId", ref: "Book"}
2024-10-14 13:50:47 +00:00
});
2024-10-14 17:25:46 +00:00
dndModule.router.get('/testing', (req, res) => {
/*
let item = itemModel.create({
name: "Test item!",
type: "The test item"
})
*/
res.json({
status: "ok"
})
2024-10-14 17:25:46 +00:00
})
dndModule.router.get('/item/list', (req, res) => {
const campaign = req.query.campaign;
itemModel.find({campaign}).select('-data').lean().then(data => {
res.json({status: "ok", data});
});
2024-10-16 11:57:33 +00:00
});
dndModule.router.post('/item/create', (req, res) => {
const campaign = req.query.campaign;
2024-10-16 11:57:33 +00:00
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.query.campaign;
2024-10-16 11:57:33 +00:00
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.query.campaign;
2024-10-16 11:57:33 +00:00
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, 'update-concept', id);
2024-10-16 11:57:33 +00:00
res.json({status: "ok"});
});
2024-10-14 13:50:47 +00:00
})
Api.socket.on("test", () => console.log("test"));
2024-10-14 13:50:47 +00:00
// Api.router.createModelRoutes(itemModel, 'item');
}
2024-10-14 13:50:47 +00:00
export { Main, Api };