Moved properties schema, added 'removeProperty' method

This commit is contained in:
Stefan Zermatten
2019-04-03 16:50:12 +02:00
parent 681e669e76
commit 021a53ef36
22 changed files with 91 additions and 91 deletions

View File

@@ -2,7 +2,7 @@ import SimpleSchema from 'simpl-schema';
import schema from '/imports/api/schema.js';
import AdjustmentSchema from '/imports/api/creature/subSchemas/AdjustmentSchema.js';
import StoredBuffSchema from '/imports/api/creature/properties/Buffs.js';
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
import ColorSchema from '/imports/api/creature/subSchemas/ColorSchema.js';
// Mixins

View File

@@ -1,4 +1,4 @@
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
import ColorSchema from '/imports/api/creature/subSchemas/ColorSchema.js';
import SimpleSchema from 'simpl-schema';
import schema from '/imports/api/schema.js';

View File

@@ -1,6 +1,6 @@
import SimpleSchema from 'simpl-schema';
import schema from '/imports/api/schema.js';
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
import { EffectSchema } from '/imports/api/creature/properties/Effects.js';
// Mixins

View File

@@ -1,6 +1,6 @@
import SimpleSchema from 'simpl-schema';
import schema from '/imports/api/schema.js';
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
import VARIABLE_NAME_REGEX from '/imports/constants/VARIABLE_NAME_REGEX.js';
// Mixins

View File

@@ -1,6 +1,6 @@
import SimpleSchema from 'simpl-schema';
import schema from '/imports/api/schema.js';
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
import ColorSchema from "/imports/api/creature/subSchemas/ColorSchema.js";
import VARIABLE_NAME_REGEX from '/imports/constants/VARIABLE_NAME_REGEX.js';

View File

@@ -1,6 +1,6 @@
import SimpleSchema from 'simpl-schema';
import schema from '/imports/api/schema.js';
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
import DAMAGE_TYPES from '/imports/constants/DAMAGE_TYPES.js';
// Mixins

View File

@@ -1,6 +1,6 @@
import SimpleSchema from 'simpl-schema';
import schema from '/imports/api/schema.js';
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
// Mixins
import recomputeCreatureMixin from '/imports/api/mixins/recomputeCreatureMixin.js';

View File

@@ -1,6 +1,6 @@
import SimpleSchema from 'simpl-schema';
import schema from '/imports/api/schema.js';
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
import recomputeCreatureXP from '/imports/api/creature/creatureComputation.js';
// Mixins

View File

@@ -1,6 +1,6 @@
import SimpleSchema from 'simpl-schema';
import schema from '/imports/api/schema.js';
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
import ColorSchema from '/imports/api/creature/subSchemas/ColorSchema.js';
// Mixins

View File

@@ -1,6 +1,6 @@
import SimpleSchema from 'simpl-schema';
import schema from '/imports/api/schema.js';
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
// Mixins
import creaturePermissionMixin from '/imports/api/mixins/creaturePermissionMixin.js';

View File

@@ -1,7 +1,7 @@
import SimpleSchema from 'simpl-schema';
import schema from '/imports/api/schema.js';
import ColorSchema from "/imports/api/creature/subSchemas/ColorSchema.js";
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
// Mixins
import creaturePermissionMixin from '/imports/api/mixins/creaturePermissionMixin.js';

View File

@@ -1,6 +1,6 @@
import SimpleSchema from 'simpl-schema';
import schema from '/imports/api/schema.js';
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
// Mixins
import recomputeCreatureMixin from '/imports/api/mixins/recomputeCreatureMixin.js';

View File

@@ -0,0 +1,64 @@
import SimpleSchema from 'simpl-schema';
import SoftRemovableSchema from '/imports/api/parenting/SoftRemovableSchema.js';
import ChildSchema from '/imports/api/parenting/ChildSchema.js';
import softRemove from '/imports/api/parenting/softRemove.js';
import getCollectionByName from '/imports/api/parenting/getCollectionByName.js';
// Mixins
import recomputeCreatureMixin from '/imports/api/mixins/recomputeCreatureMixin.js';
import creaturePermissionMixin from '/imports/api/mixins/creaturePermissionMixin.js';
import simpleSchemaMixin from '/imports/api/mixins/simpleSchemaMixin.js';
const PropertySchema = new SimpleSchema({
charId: {
type: String,
regEx: SimpleSchema.RegEx.Id,
index: 1,
optional: true,
},
name: {
type: String,
optional: true,
},
enabled: {
type: Boolean,
defaultValue: true,
},
order: {
type: SimpleSchema.Integer,
index: true,
},
});
PropertySchema.extend(SoftRemovableSchema);
PropertySchema.extend(ChildSchema);
// Always recomputes the character, because we don't know the extent of the tree
// that was removed with this document
const softRemoveProperty = new ValidatedMethod({
name: 'softRemoveProperty',
mixins: [
simpleSchemaMixin,
recomputeCreatureMixin,
creaturePermissionMixin,
],
getCharId({_id, collection}){
let col = getCollectionByName(collection);
let doc = col.findOne(_id, {fields: {charId: 1}});
if (!doc || !doc.charId){
throw new Meteor.Error(`Could not find charId of ${_id} in ${collection}`);
} else {
return doc.charId;
}
},
permission: 'edit',
schema: new SimpleSchema({
_id: SimpleSchema.RegEx.Id,
collection: String,
}),
run({_id, collection}){
softRemove({_id, collection});
},
});
export { PropertySchema, softRemoveProperty };

View File

@@ -1,5 +1,5 @@
import SimpleSchema from 'simpl-schema';
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
import AdjustmentSchema from '/imports/api/creature/subSchemas/AdjustmentSchema.js';
import StoredBuffSchema from '/imports/api/creature/properties/Buffs.js';

View File

@@ -1,6 +1,6 @@
import SimpleSchema from 'simpl-schema';
import schema from '/imports/api/schema.js';
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
import ColorSchema from '/imports/api/creature/subSchemas/ColorSchema.js';
// Mixins

View File

@@ -1,7 +1,7 @@
import SimpleSchema from 'simpl-schema';
import schema from '/imports/api/schema.js';
import ColorSchema from "/imports/api/creature/subSchemas/ColorSchema.js";
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
// Mixins
import creaturePermissionMixin from '/imports/api/mixins/creaturePermissionMixin.js';

View File

@@ -1,7 +1,7 @@
import ColorSchema from '/imports/api/creature/subSchemas/ColorSchema.js';
import SimpleSchema from 'simpl-schema';
import schema from '/imports/api/schema.js';
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
// Mixins
import creaturePermissionMixin from '/imports/api/mixins/creaturePermissionMixin.js';

View File

@@ -1,35 +0,0 @@
import updateAction from '/imports/api/creature/properties/Actions.js';
import updateAttribute from '/imports/api/creature/properties/Attributes.js';
import updateBuff from '/imports/api/creature/properties/Buffs.js';
import updateClass from '/imports/api/creature/properties/Classes.js';
import updateClassLevel from '/imports/api/creature/properties/ClassLevels.js';
import updateDamageMultiplier from '/imports/api/creature/properties/DamageMultipliers.js';
import updateEffect from '/imports/api/creature/properties/Effects.js';
import updateExperience from '/imports/api/creature/properties/Experiences.js';
import updateFeature from '/imports/api/creature/properties/Features.js';
import updateFolder from '/imports/api/creature/properties/Folders.js';
import updateNote from '/imports/api/creature/properties/Notes.js';
import updateProficiency from '/imports/api/creature/properties/Proficiencies.js';
import updateRoll from '/imports/api/creature/properties/Rolls.js';
import updateSkill from '/imports/api/creature/properties/Skills.js';
import updateSpellList from '/imports/api/creature/properties/SpellLists.js';
import updateSpell from '/imports/api/creature/properties/Spells.js';
export default Object.freeze({
actions: updateAction,
attributes: updateAttribute,
buffs: updateBuff,
classs: updateClass,
classLevels: updateClassLevel,
damageMultipliers: updateDamageMultiplier,
effects: updateEffect,
experiences: updateExperience,
features: updateFeature,
folders: updateFolder,
notes: updateNote,
proficienciess: updateProficiency,
rolls: updateRoll,
skills: updateSkill,
spellLists: updateSpellList,
spells: updateSpell,
});

View File

@@ -1,29 +0,0 @@
import SimpleSchema from 'simpl-schema';
import SoftRemovableSchema from '/imports/api/parenting/SoftRemovableSchema.js';
import ChildSchema from '/imports/api/parenting/ChildSchema.js';
const PropertySchema = new SimpleSchema({
charId: {
type: String,
regEx: SimpleSchema.RegEx.Id,
index: 1,
optional: true,
},
name: {
type: String,
optional: true,
},
enabled: {
type: Boolean,
defaultValue: true,
},
order: {
type: SimpleSchema.Integer,
index: true,
},
});
PropertySchema.extend(SoftRemovableSchema);
PropertySchema.extend(ChildSchema);
export default PropertySchema;

View File

@@ -1,7 +1,7 @@
import SimpleSchema from 'simpl-schema';
import schema from '/imports/api/schema.js';
import ColorSchema from "/imports/api/creature/subSchemas/ColorSchema.js";
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
import ChildSchema from '/imports/api/parenting/ChildSchema.js';
//set up the collection for containers

View File

@@ -1,7 +1,7 @@
import SimpleSchema from 'simpl-schema';
import schema from '/imports/api/schema.js';
import ColorSchema from "/imports/api/creature/subSchemas/ColorSchema.js";
import PropertySchema from '/imports/api/creature/subSchemas/PropertySchema.js';
import { PropertySchema } from '/imports/api/creature/properties/Properties.js'
import ChildSchema from '/imports/api/parenting/ChildSchema.js';
Items = new Mongo.Collection("items");

View File

@@ -2,11 +2,11 @@ import getCollectionByName from '/imports/api/parenting/getCollectionByName.js';
import updateDecendents from '/imports/api/parenting/parenting.js';
// 1 + n database hits
export function softRemove({id, collection}){
export function softRemove({_id, collection}){
let removalDate = new Date();
// Remove this document
collection = getCollectionByName(collection);
collection.update(id, {$set: {
collection.update(_id, {$set: {
removed: true,
removedAt: removalDate,
}, $unset: {
@@ -15,15 +15,15 @@ export function softRemove({id, collection}){
// Remove all the decendents that have not yet been removed, and set them to be
// removed with this document
updateDecendents({
ancestorId: id,
ancestorId: _id,
filter: {removed: {$ne: true}},
modifier: {$set: {
removed: true,
removedAt: removalDate,
removedWith: id,
removedWith: _id,
}},
});
};
}
const restoreError = function(){
throw new Meteor.Error('restore-failed',
@@ -31,10 +31,10 @@ const restoreError = function(){
);
};
export function restore({id, collection}){
export function restore({_id, collection}){
collection = getCollectionByName(collection);
let numUpdated = collection.update({
_id: id,
_id,
removedWith: {$exists: false}
}, { $unset: {
removed: 1,
@@ -42,9 +42,9 @@ export function restore({id, collection}){
}});
if (numUpdated === 0) restoreError();
updateDecendents({
ancestorId: id,
ancestorId: _id,
filter: {
removedWith: id,
removedWith: _id,
},
modifier: { $unset: {
removed: 1,