Files
DiceCloud/app/imports/server/publications/singleCharacter.js
2019-01-29 16:36:13 +02:00

85 lines
3.1 KiB
JavaScript

import Creatures from "/imports/api/creature/Creatures.js";
import Actions from "/imports/api/creature/properties/Actions.js";
import Attacks from "/imports/api/creature/properties/Attacks.js";
import Attributes from "/imports/api/creature/properties/Attributes.js";
import Buffs from "/imports/api/creature/properties/Buffs.js";
import Classes from "/imports/api/creature/properties/Classes.js";
import Conditions from "/imports/api/creature/properties/Conditions.js";
import CustomBuffs from "/imports/api/creature/properties/CustomBuffs.js";
import DamageMultipliers from "/imports/api/creature/properties/DamageMultipliers.js";
import Effects from "/imports/api/creature/properties/Effects.js";
import Experiences from "/imports/api/creature/properties/Experiences.js";
import Features from "/imports/api/creature/properties/Features.js";
import Notes from "/imports/api/creature/properties/Notes.js";
import Skills from "/imports/api/creature/properties/Skills.js";
import Spells from "/imports/api/creature/properties/Spells.js";
import SpellLists from "/imports/api/creature/properties/SpellLists.js";
import Proficiencies from "/imports/api/creature/properties/Proficiencies.js";
import Containers from "/imports/api/inventory/Containers.js";
import Items from "/imports/api/inventory/Items.js";
Meteor.publish("singleCharacter", function(charId){
userId = this.userId;
var char = Creatures.findOne({
_id: charId,
$or: [
{readers: userId},
{writers: userId},
{owner: userId},
{"settings.viewPermission": "public"},
],
});
if (char){
return [
Creatures.find({_id: charId}),
//get all the assets for this character including soft deleted ones
Actions.find ({charId}, {removed: true}),
Attacks.find ({charId}, {removed: true}),
Attributes.find ({charId}, {removed: true}),
Buffs.find ({charId}, {removed: true}),
Classes.find ({charId}, {removed: true}),
Conditions.find ({charId}, {removed: true}),
Containers.find ({charId}, {removed: true}),
CustomBuffs.find ({charId}, {removed: true}),
DamageMultipliers.find ({charId}, {removed: true}),
Effects.find ({charId}, {removed: true}),
Experiences.find ({charId}, {removed: true}),
Features.find ({charId}, {removed: true}),
Items.find ({charId}, {removed: true}),
Notes.find ({charId}, {removed: true}),
Skills.find ({charId}, {removed: true}),
Spells.find ({charId}, {removed: true}),
SpellLists.find ({charId}, {removed: true}),
Proficiencies.find ({charId}, {removed: true}),
];
} else {
return [];
}
});
DDPRateLimiter.addRule({
name: "singleCharacter",
type: "subscription",
userId: null,
connectionId(){ return true; },
}, 8, 10000, function(reply, ruleInput){
if(!reply.allowed){
logRateError(reply, ruleInput);
}
});
Meteor.publish("singleCharacterName", function(charId){
userId = this.userId;
return Creatures.find({
_id: charId,
$or: [
{readers: userId},
{writers: userId},
{owner: userId},
{"settings.viewPermission": "public"},
],
}, {
fields:{"name": 1}
});
});