From 2385b697204c42a9951279cb992d596db8ab0db6 Mon Sep 17 00:00:00 2001 From: Stefan Zermatten Date: Tue, 30 Jul 2019 15:13:39 +0200 Subject: [PATCH] Removed all separate property collections to be replaced with a single "creature property" collection --- .../api/creature/CreatureProperties.js | 79 ++++++++++++ app/imports/api/properties/Actions.js | 51 +------- app/imports/api/properties/Attributes.js | 114 +----------------- app/imports/api/properties/Buffs.js | 49 +------- app/imports/api/properties/ClassLevels.js | 50 +------- app/imports/api/properties/Classes.js | 52 +------- app/imports/api/properties/Containers.js | 13 +- .../api/properties/DamageMultipliers.js | 52 +------- app/imports/api/properties/Effects.js | 59 +-------- app/imports/api/properties/Experiences.js | 70 +---------- app/imports/api/properties/Features.js | 51 +------- app/imports/api/properties/Folders.js | 49 +------- app/imports/api/properties/Items.js | 15 +-- app/imports/api/properties/Notes.js | 52 +------- app/imports/api/properties/Proficiencies.js | 59 +-------- app/imports/api/properties/Properties.js | 64 ---------- app/imports/api/properties/Rolls.js | 46 +------ app/imports/api/properties/Skills.js | 52 +------- app/imports/api/properties/SpellLists.js | 50 +------- app/imports/api/properties/Spells.js | 39 +----- app/imports/api/properties/propertySchemas.js | 44 +++++++ app/imports/api/schema.js | 14 --- app/imports/constants/SCHEMA_OPTIONS.js | 14 +++ 23 files changed, 169 insertions(+), 969 deletions(-) create mode 100644 app/imports/api/creature/CreatureProperties.js delete mode 100644 app/imports/api/properties/Properties.js create mode 100644 app/imports/api/properties/propertySchemas.js delete mode 100644 app/imports/api/schema.js create mode 100644 app/imports/constants/SCHEMA_OPTIONS.js diff --git a/app/imports/api/creature/CreatureProperties.js b/app/imports/api/creature/CreatureProperties.js new file mode 100644 index 00000000..b9324895 --- /dev/null +++ b/app/imports/api/creature/CreatureProperties.js @@ -0,0 +1,79 @@ +import SimpleSchema from 'simpl-schema'; +import schema from '/imports/api/schema.js'; +import ChildSchema from '/imports/api/parenting/ChildSchema.js'; +import propertySchemas from '/imports/api/properties/propertySchemas.js'; +import Libraries from '/imports/api/library/Libraries.js'; +import { assertEditPermission } from '/imports/api/sharing/sharingPermissions.js'; +import getModifierFields from '/imports/api/getModifierFields.js'; + +let CreatureProperties = new Mongo.Collection('creatureProperties'); + +let CreaturePropertySchema = schema({ + creaturePropertyType: { + type: String, + allowedValues: Object.keys(propertySchemas), + }, + charId: { + type: String, + regEx: SimpleSchema.RegEx.Id, + index: 1, + optional: true, + }, +}); + +for (let key in propertySchemas){ + let schema = new SimpleSchema({}); + schema.extend(propertySchemas[key]); + schema.extend(CreaturePropertySchema); + schema.extend(ChildSchema); + CreatureProperties.attachSchema(schema, { + selector: {creaturePropertyType: key} + }); +} + +const adjustAttribute = new ValidatedMethod({ + name: 'Attributes.methods.adjust', + mixins: [ + simpleSchemaMixin, + creaturePermissionMixin, + ], + collection: Attributes, + permission: 'edit', + schema: new SimpleSchema({ + _id: SimpleSchema.RegEx.Id, + type: { + type: String, + allowedValues: ['set', 'increment'] + }, + value: Number, + }), + run({_id, type, value}) { + if (type === 'set'){ + let currentValue = currentAttribute.value; + // Set represents what we want the value to be after adjustment + // So we need the actual adjustment to get to that value + let adjustment = value - currentValue; + // Ajustment can't exceed total value + if (-adjustment > currentValue) adjustment = -currentValue; + // Adjustment must be negative + if (adjustment > 0) adjustment = 0; + return Attributes.update(_id, {$set: {adjustment}}); + } else if (type === 'increment'){ + let remaining = currentAttribute.value + (currentAttribute.adjustment || 0); + let adj = currentAttribute.adjustment; + // Can't decrease adjustment below remaining value + let increment = value; + if (-increment > remaining) increment = -remaining; + // Can't increase adjustment above zero + if (increment > -adj) increment = -adj; + if (typeof currentAttribute.adjustment === 'number'){ + return Attributes.update(_id, {$inc: {adjustment: increment}}); + } else { + return Attributes.update(_id, {$set: {adjustment: increment}}); + } + } + }, +}); + +export default CreatureProperties; +export { CreaturePropertySchema}; diff --git a/app/imports/api/properties/Actions.js b/app/imports/api/properties/Actions.js index ad964a59..700faf34 100644 --- a/app/imports/api/properties/Actions.js +++ b/app/imports/api/properties/Actions.js @@ -2,18 +2,6 @@ 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/properties/Buffs.js'; -import { PropertySchema } from '/imports/api/properties/Properties.js' -import ColorSchema from '/imports/api/creature/subSchemas/ColorSchema.js'; - -// Mixins -import creaturePermissionMixin from '/imports/api/creature/mixins/creaturePermissionMixin.js'; -import { setDocToLastMixin } from '/imports/api/creature/mixins/setDocToLastMixin.js'; -import { setDocAncestryMixin, ensureAncestryContainsCharIdMixin } from '/imports/api/parenting/parenting.js'; -import simpleSchemaMixin from '/imports/api/creature/mixins/simpleSchemaMixin.js'; -import propagateInheritanceUpdateMixin from '/imports/api/creature/mixins/propagateInheritanceUpdateMixin.js'; -import updateSchemaMixin from '/imports/api/creature/mixins/updateSchemaMixin.js'; - -let Actions = new Mongo.Collection('actions'); /* * Actions are things a character can do @@ -21,7 +9,7 @@ let Actions = new Mongo.Collection('actions'); * Any actions that are children of this action will be considered alternatives * to this action */ -let ActionSchema = schema({ +let ActionSchema = new SimpleSchema({ name: { type: String, optional: true, @@ -93,39 +81,4 @@ let ActionSchema = schema({ }, }); -ActionSchema.extend(ColorSchema); - -Actions.attachSchema(ActionSchema); -Actions.attachSchema(PropertySchema); - -const insertAction = new ValidatedMethod({ - name: 'Actions.methods.insert', - mixins: [ - creaturePermissionMixin, - setDocAncestryMixin, - ensureAncestryContainsCharIdMixin, - setDocToLastMixin, - simpleSchemaMixin, - ], - collection: Actions, - permission: 'edit', - schema: ActionSchema, - run(action) { - return Actions.insert(action); - }, -}); - -const updateAction = new ValidatedMethod({ - name: 'Actions.methods.update', - mixins: [ - propagateInheritanceUpdateMixin, - updateSchemaMixin, - creaturePermissionMixin, - ], - collection: Actions, - permission: 'edit', - schema: ActionSchema, -}); - -export default Actions; -export { ActionSchema, insertAction, updateAction }; +export default { ActionSchema }; diff --git a/app/imports/api/properties/Attributes.js b/app/imports/api/properties/Attributes.js index 12d8b15c..cd376111 100644 --- a/app/imports/api/properties/Attributes.js +++ b/app/imports/api/properties/Attributes.js @@ -1,31 +1,12 @@ -import { PropertySchema } from '/imports/api/properties/Properties.js' -import ColorSchema from '/imports/api/creature/subSchemas/ColorSchema.js'; import SimpleSchema from 'simpl-schema'; -import schema from '/imports/api/schema.js'; import VARIABLE_NAME_REGEX from '/imports/constants/VARIABLE_NAME_REGEX.js'; -import getModifierFields from '/imports/api/getModifierFields.js'; - -// Mixins -import recomputeCreatureMixin from '/imports/api/creature/mixins/recomputeCreatureMixin.js'; -import creaturePermissionMixin from '/imports/api/creature/mixins/creaturePermissionMixin.js'; -import { setDocToLastMixin } from '/imports/api/creature/mixins/setDocToLastMixin.js'; -import { - setDocAncestryMixin, - ensureAncestryContainsCharIdMixin -} from '/imports/api/parenting/parenting.js'; -import simpleSchemaMixin from '/imports/api/creature/mixins/simpleSchemaMixin.js'; -import updateSchemaMixin from '/imports/api/creature/mixins/updateSchemaMixin.js'; -import propagateInheritanceUpdateMixin from '/imports/api/creature/mixins/propagateInheritanceUpdateMixin.js'; - -let Attributes = new Mongo.Collection('attributes'); /* * Attributes are numbered stats of a character */ -let AttributeSchema = schema({ +let AttributeSchema = new SimpleSchema({ name: { type: String, - optional: true, defaultValue: 'New Attribute', }, // The technical, lowercase, single-word name used in formulae @@ -81,9 +62,7 @@ let AttributeSchema = schema({ }, }); -AttributeSchema.extend(ColorSchema); - -const ComputedAttributeSchema = schema({ +let ComputedAttributeSchema = schema({ // The computed value of the attribute value: { type: Number, @@ -96,91 +75,4 @@ const ComputedAttributeSchema = schema({ }, }).extend(AttributeSchema); -Attributes.attachSchema(ComputedAttributeSchema); -Attributes.attachSchema(PropertySchema); - -const insertAttribute = new ValidatedMethod({ - name: 'Attributes.methods.insert', - mixins: [ - setDocAncestryMixin, - ensureAncestryContainsCharIdMixin, - recomputeCreatureMixin, - creaturePermissionMixin, - setDocToLastMixin, - simpleSchemaMixin, - ], - collection: Attributes, - permission: 'edit', - schema: AttributeSchema, - run(attribute) { - return Attributes.insert(attribute); - }, -}); - -const updateAttribute = new ValidatedMethod({ - name: 'Attributes.methods.update', - mixins: [ - recomputeCreatureMixin, - propagateInheritanceUpdateMixin, - updateSchemaMixin, - creaturePermissionMixin, - ], - collection: Attributes, - permission: 'edit', - schema: AttributeSchema.omit(['adjutment']), - skipRecompute({update}){ - let fields = getModifierFields(update); - return !fields.hasAny([ - 'variableName', - 'type', - 'baseValue', - ]); - }, -}); - -const adjustAttribute = new ValidatedMethod({ - name: 'Attributes.methods.adjust', - mixins: [ - simpleSchemaMixin, - creaturePermissionMixin, - ], - collection: Attributes, - permission: 'edit', - schema: new SimpleSchema({ - _id: SimpleSchema.RegEx.Id, - type: { - type: String, - allowedValues: ['set', 'increment'] - }, - value: Number, - }), - run({_id, type, value}) { - if (type === 'set'){ - let currentValue = currentAttribute.value; - // Set represents what we want the value to be after adjustment - // So we need the actual adjustment to get to that value - let adjustment = value - currentValue; - // Ajustment can't exceed total value - if (-adjustment > currentValue) adjustment = -currentValue; - // Adjustment must be negative - if (adjustment > 0) adjustment = 0; - return Attributes.update(_id, {$set: {adjustment}}); - } else if (type === 'increment'){ - let remaining = currentAttribute.value + (currentAttribute.adjustment || 0); - let adj = currentAttribute.adjustment; - // Can't decrease adjustment below remaining value - let increment = value; - if (-increment > remaining) increment = -remaining; - // Can't increase adjustment above zero - if (increment > -adj) increment = -adj; - if (typeof currentAttribute.adjustment === 'number'){ - return Attributes.update(_id, {$inc: {adjustment: increment}}); - } else { - return Attributes.update(_id, {$set: {adjustment: increment}}); - } - } - }, -}); - -export default Attributes; -export { AttributeSchema, insertAttribute, updateAttribute, adjustAttribute }; +export { AttributeSchema, ComputedAttributeSchema }; diff --git a/app/imports/api/properties/Buffs.js b/app/imports/api/properties/Buffs.js index 578a67a1..acfdb48b 100644 --- a/app/imports/api/properties/Buffs.js +++ b/app/imports/api/properties/Buffs.js @@ -1,18 +1,6 @@ import SimpleSchema from 'simpl-schema'; -import schema from '/imports/api/schema.js'; -import { PropertySchema } from '/imports/api/properties/Properties.js' import { EffectSchema } from '/imports/api/properties/Effects.js'; -// Mixins -import creaturePermissionMixin from '/imports/api/creature/mixins/creaturePermissionMixin.js'; -import { setDocToLastMixin } from '/imports/api/creature/mixins/setDocToLastMixin.js'; -import { setDocAncestryMixin, ensureAncestryContainsCharIdMixin } from '/imports/api/parenting/parenting.js'; -import simpleSchemaMixin from '/imports/api/creature/mixins/simpleSchemaMixin.js'; -import propagateInheritanceUpdateMixin from '/imports/api/creature/mixins/propagateInheritanceUpdateMixin.js'; -import updateSchemaMixin from '/imports/api/creature/mixins/updateSchemaMixin.js'; - -let Buffs = new Mongo.Collection('buffs'); - let BuffSchema = new SimpleSchema({ _id: { type: String, @@ -57,7 +45,7 @@ let StoredBuffSchema = new SimpleSchema({ }, }).extend(BuffSchema); -let AppliedBuffSchema = schema({ +let AppliedBuffSchema = new SimpleSchema({ durationSpent: { type: Number, optional: true, @@ -78,37 +66,4 @@ let AppliedBuffSchema = schema({ }, }).extend(BuffSchema); -Buffs.attachSchema(AppliedBuffSchema); -Buffs.attachSchema(PropertySchema); - -const insertBuff = new ValidatedMethod({ - name: 'Buffs.methods.insert', - mixins: [ - creaturePermissionMixin, - setDocAncestryMixin, - ensureAncestryContainsCharIdMixin, - setDocToLastMixin, - simpleSchemaMixin, - ], - collection: Buffs, - permission: 'edit', - schema: BuffSchema, - run(buff) { - return Buffs.insert(buff); - }, -}); - -const updateBuff = new ValidatedMethod({ - name: 'Buffs.methods.update', - mixins: [ - propagateInheritanceUpdateMixin, - updateSchemaMixin, - creaturePermissionMixin, - ], - collection: Buffs, - permission: 'edit', - schema: BuffSchema, -}); - -export default Buffs; -export { AppliedBuffSchema, StoredBuffSchema, insertBuff, updateBuff }; +export { AppliedBuffSchema, StoredBuffSchema }; diff --git a/app/imports/api/properties/ClassLevels.js b/app/imports/api/properties/ClassLevels.js index 53a14d53..a67d7bb0 100644 --- a/app/imports/api/properties/ClassLevels.js +++ b/app/imports/api/properties/ClassLevels.js @@ -1,19 +1,8 @@ import SimpleSchema from 'simpl-schema'; -import schema from '/imports/api/schema.js'; import { PropertySchema } from '/imports/api/properties/Properties.js' import VARIABLE_NAME_REGEX from '/imports/constants/VARIABLE_NAME_REGEX.js'; -// Mixins -import creaturePermissionMixin from '/imports/api/creature/mixins/creaturePermissionMixin.js'; -import { setDocToLastMixin } from '/imports/api/creature/mixins/setDocToLastMixin.js'; -import { setDocAncestryMixin, ensureAncestryContainsCharIdMixin } from '/imports/api/parenting/parenting.js'; -import simpleSchemaMixin from '/imports/api/creature/mixins/simpleSchemaMixin.js'; -import propagateInheritanceUpdateMixin from '/imports/api/creature/mixins/propagateInheritanceUpdateMixin.js'; -import updateSchemaMixin from '/imports/api/creature/mixins/updateSchemaMixin.js'; - -let ClassLevels = new Mongo.Collection("classLevels"); - -let ClassLevelSchema = schema({ +let ClassLevelSchema = new SimpleSchema({ name: { type: String, optional: true, @@ -35,39 +24,4 @@ let ClassLevelSchema = schema({ }, }); -ClassLevels.attachSchema(ClassLevelSchema); -ClassLevels.attachSchema(PropertySchema); - -// Todo ensure the class level is being parented to a compatible class, and that -// previous level requirements are met -const insertClassLevel = new ValidatedMethod({ - name: 'ClassLevels.methods.insert', - mixins: [ - creaturePermissionMixin, - setDocAncestryMixin, - ensureAncestryContainsCharIdMixin, - setDocToLastMixin, - simpleSchemaMixin, - ], - collection: ClassLevels, - permission: 'edit', - schema: ClassLevelSchema, - run(classLevel) { - return ClassLevels.insert(classLevel); - }, -}); - -const updateClassLevel = new ValidatedMethod({ - name: 'ClassLevels.methods.update', - mixins: [ - propagateInheritanceUpdateMixin, - updateSchemaMixin, - creaturePermissionMixin, - ], - collection: ClassLevels, - permission: 'edit', - schema: ClassLevelSchema, -}); - -export default ClassLevels; -export { ClassLevelSchema, insertClassLevel, updateClassLevel }; +export { ClassLevelSchema }; diff --git a/app/imports/api/properties/Classes.js b/app/imports/api/properties/Classes.js index 98a8d01a..35655979 100644 --- a/app/imports/api/properties/Classes.js +++ b/app/imports/api/properties/Classes.js @@ -1,21 +1,8 @@ import SimpleSchema from 'simpl-schema'; -import schema from '/imports/api/schema.js'; -import { PropertySchema } from '/imports/api/properties/Properties.js' -import ColorSchema from "/imports/api/creature/subSchemas/ColorSchema.js"; import VARIABLE_NAME_REGEX from '/imports/constants/VARIABLE_NAME_REGEX.js'; -// Mixins -import creaturePermissionMixin from '/imports/api/creature/mixins/creaturePermissionMixin.js'; -import { setDocToLastMixin } from '/imports/api/creature/mixins/setDocToLastMixin.js'; -import { setDocAncestryMixin, ensureAncestryContainsCharIdMixin } from '/imports/api/parenting/parenting.js'; -import simpleSchemaMixin from '/imports/api/creature/mixins/simpleSchemaMixin.js'; -import propagateInheritanceUpdateMixin from '/imports/api/creature/mixins/propagateInheritanceUpdateMixin.js'; -import updateSchemaMixin from '/imports/api/creature/mixins/updateSchemaMixin.js'; - -let Classes = new Mongo.Collection("classes"); - // TODO use variable name in computation engine, rather than a generated one -let ClassSchema = schema({ +let ClassSchema = new SimpleSchema({ name: { type: String, optional: true, @@ -26,39 +13,4 @@ let ClassSchema = schema({ }, }); -ClassSchema.extend(ColorSchema); - -Classes.attachSchema(ClassSchema); -Classes.attachSchema(PropertySchema); - -const insertClass = new ValidatedMethod({ - name: 'Classes.methods.insert', - mixins: [ - creaturePermissionMixin, - setDocAncestryMixin, - ensureAncestryContainsCharIdMixin, - setDocToLastMixin, - simpleSchemaMixin, - ], - collection: Classes, - permission: 'edit', - schema: ClassSchema, - run(cls) { - return Classes.insert(cls); - }, -}); - -const updateClass = new ValidatedMethod({ - name: 'Classes.methods.update', - mixins: [ - propagateInheritanceUpdateMixin, - updateSchemaMixin, - creaturePermissionMixin, - ], - collection: Classes, - permission: 'edit', - schema: ClassSchema, -}); - -export default Classes; -export { ClassSchema, insertClass, updateClass }; +export { ClassSchema }; diff --git a/app/imports/api/properties/Containers.js b/app/imports/api/properties/Containers.js index 02522c8d..bb69f45f 100644 --- a/app/imports/api/properties/Containers.js +++ b/app/imports/api/properties/Containers.js @@ -1,13 +1,9 @@ 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/properties/Properties.js' import ChildSchema from '/imports/api/parenting/ChildSchema.js'; -//set up the collection for containers -let Containers = new Mongo.Collection("containers"); - -let ContainerSchema = schema({ +let ContainerSchema = new SimpleSchema({ name: { type: String, optional: true, @@ -39,11 +35,4 @@ let ContainerSchema = schema({ }, }); -ContainerSchema.extend(ColorSchema); - -Containers.attachSchema(ContainerSchema); -Containers.attachSchema(PropertySchema); -Containers.attachSchema(ChildSchema); - -export default Containers; export { ContainerSchema }; diff --git a/app/imports/api/properties/DamageMultipliers.js b/app/imports/api/properties/DamageMultipliers.js index 578963c8..3e5fdce3 100644 --- a/app/imports/api/properties/DamageMultipliers.js +++ b/app/imports/api/properties/DamageMultipliers.js @@ -1,24 +1,11 @@ import SimpleSchema from 'simpl-schema'; -import schema from '/imports/api/schema.js'; -import { PropertySchema } from '/imports/api/properties/Properties.js' import DAMAGE_TYPES from '/imports/constants/DAMAGE_TYPES.js'; -// Mixins -import recomputeCreatureMixin from '/imports/api/creature/mixins/recomputeCreatureMixin.js'; -import creaturePermissionMixin from '/imports/api/creature/mixins/creaturePermissionMixin.js'; -import { setDocToLastMixin } from '/imports/api/creature/mixins/setDocToLastMixin.js'; -import { setDocAncestryMixin, ensureAncestryContainsCharIdMixin } from '/imports/api/parenting/parenting.js'; -import simpleSchemaMixin from '/imports/api/creature/mixins/simpleSchemaMixin.js'; -import propagateInheritanceUpdateMixin from '/imports/api/creature/mixins/propagateInheritanceUpdateMixin.js'; -import updateSchemaMixin from '/imports/api/creature/mixins/updateSchemaMixin.js'; - -let DamageMultipliers = new Mongo.Collection("damageMultipliers"); - /* * DamageMultipliers are multipliers that affect how much damage is taken from * a given damage type */ -let DamageMultiplierSchema = schema({ +let DamageMultiplierSchema = new SimpleSchema({ name: { type: String, optional: true, @@ -37,39 +24,4 @@ let DamageMultiplierSchema = schema({ }, }); -DamageMultipliers.attachSchema(DamageMultiplierSchema); -DamageMultipliers.attachSchema(PropertySchema); - -const insertDamageMultiplier = new ValidatedMethod({ - name: 'DamageMultipliers.methods.insert', - mixins: [ - setDocAncestryMixin, - ensureAncestryContainsCharIdMixin, - recomputeCreatureMixin, - setDocToLastMixin, - simpleSchemaMixin, - creaturePermissionMixin, - ], - collection: DamageMultipliers, - permission: 'edit', - schema: DamageMultiplierSchema, - run(dm) { - return DamageMultipliers.insert(dm); - }, -}); - -const updateDamageMultiplier = new ValidatedMethod({ - name: 'DamageMultipliers.methods.update', - mixins: [ - recomputeCreatureMixin, - propagateInheritanceUpdateMixin, - updateSchemaMixin, - creaturePermissionMixin, - ], - collection: DamageMultipliers, - permission: 'edit', - schema: DamageMultiplierSchema, -}); - -export default DamageMultipliers; -export { DamageMultiplierSchema, insertDamageMultiplier, updateDamageMultiplier }; +export { DamageMultiplierSchema }; diff --git a/app/imports/api/properties/Effects.js b/app/imports/api/properties/Effects.js index 5281a42e..ef2cbe7f 100644 --- a/app/imports/api/properties/Effects.js +++ b/app/imports/api/properties/Effects.js @@ -1,23 +1,13 @@ import SimpleSchema from 'simpl-schema'; -import schema from '/imports/api/schema.js'; import { PropertySchema } from '/imports/api/properties/Properties.js' -// Mixins -import recomputeCreatureMixin from '/imports/api/creature/mixins/recomputeCreatureMixin.js'; -import creaturePermissionMixin from '/imports/api/creature/mixins/creaturePermissionMixin.js'; -import { setDocToLastMixin } from '/imports/api/creature/mixins/setDocToLastMixin.js'; -import { setDocAncestryMixin, ensureAncestryContainsCharIdMixin } from '/imports/api/parenting/parenting.js'; -import simpleSchemaMixin from '/imports/api/creature/mixins/simpleSchemaMixin.js'; -import propagateInheritanceUpdateMixin from '/imports/api/creature/mixins/propagateInheritanceUpdateMixin.js'; -import updateSchemaMixin from '/imports/api/creature/mixins/updateSchemaMixin.js'; - let Effects = new Mongo.Collection('effects'); /* * Effects are reason-value attached to skills and abilities * that modify their final value or presentation in some way */ -let EffectSchema = schema({ +let EffectSchema = new SimpleSchema({ _id: { type: String, regEx: SimpleSchema.RegEx.Id, @@ -56,7 +46,7 @@ let EffectSchema = schema({ }, }); -const EffectComputedSchema = new SimpleSchema({ +const ComputedEffectSchema = new SimpleSchema({ // The computed result of the effect result: { type: SimpleSchema.oneOf(Number, String), @@ -64,47 +54,4 @@ const EffectComputedSchema = new SimpleSchema({ }, }).extend(EffectSchema); -Effects.attachSchema(EffectComputedSchema); -Effects.attachSchema(PropertySchema); - -const insertEffect = new ValidatedMethod({ - name: 'Effects.methods.insert', - mixins: [ - creaturePermissionMixin, - setDocAncestryMixin, - ensureAncestryContainsCharIdMixin, - recomputeCreatureMixin, - setDocToLastMixin, - simpleSchemaMixin, - ], - collection: Effects, - permission: 'edit', - schema: EffectSchema, - run(effect) { - return Effects.insert(effect); - }, -}); - -const updateEffect = new ValidatedMethod({ - name: 'Effects.methods.update', - mixins: [ - recomputeCreatureMixin, - propagateInheritanceUpdateMixin, - updateSchemaMixin, - creaturePermissionMixin, - ], - collection: Effects, - permission: 'edit', - schema: EffectSchema, - skipRecompute({update}){ - let fields = getModifierFields(update); - return !fields.hasAny([ - 'operation', - 'calculation', - 'stat', - ]); - }, -}); - -export default Effects; -export { EffectSchema }; +export { EffectSchema, ComputedEffectSchema }; diff --git a/app/imports/api/properties/Experiences.js b/app/imports/api/properties/Experiences.js index 9167d68b..4bb437b3 100644 --- a/app/imports/api/properties/Experiences.js +++ b/app/imports/api/properties/Experiences.js @@ -1,20 +1,6 @@ import SimpleSchema from 'simpl-schema'; -import schema from '/imports/api/schema.js'; -import { PropertySchema } from '/imports/api/properties/Properties.js' -import recomputeCreatureXP from '/imports/api/creature/creatureComputation.js'; -// Mixins -import recomputeCreatureMixin from '/imports/api/creature/mixins/recomputeCreatureMixin.js'; -import creaturePermissionMixin from '/imports/api/creature/mixins/creaturePermissionMixin.js'; -import { setDocToLastMixin } from '/imports/api/creature/mixins/setDocToLastMixin.js'; -import { setDocAncestryMixin, ensureAncestryContainsCharIdMixin } from '/imports/api/parenting/parenting.js'; -import simpleSchemaMixin from '/imports/api/creature/mixins/simpleSchemaMixin.js'; -import propagateInheritanceUpdateMixin from '/imports/api/creature/mixins/propagateInheritanceUpdateMixin.js'; -import updateSchemaMixin from '/imports/api/creature/mixins/updateSchemaMixin.js'; - -let Experiences = new Mongo.Collection("experience"); - -let ExperienceSchema = schema({ +let ExperienceSchema = new SimpleSchema({ title: { type: String, optional: true, @@ -46,56 +32,4 @@ let ExperienceSchema = schema({ }, }); -Experiences.attachSchema(ExperienceSchema); -Experiences.attachSchema(PropertySchema); - -const insertExperience = new ValidatedMethod({ - name: 'Experiences.methods.insert', - mixins: [ - creaturePermissionMixin, - setDocAncestryMixin, - ensureAncestryContainsCharIdMixin, - recomputeCreatureMixin, - setDocToLastMixin, - simpleSchemaMixin, - ], - collection: Experiences, - permission: 'edit', - schema: ExperienceSchema, - skipRecompute(experience){ - return !experience.value; - }, - run(experience) { - let result = Experiences.insert(experience); - if (experience.value){ - recomputeCreatureXP(charId); - } - return result; - }, -}); - -const updateExperience = new ValidatedMethod({ - name: 'Experiences.methods.update', - mixins: [ - recomputeCreatureMixin, - propagateInheritanceUpdateMixin, - updateSchemaMixin, - creaturePermissionMixin, - ], - collection: Experiences, - permission: 'edit', - schema: ExperienceSchema, - skipRecompute({update}){ - return !('value' in update); - }, - run({_id, update, charId}) { - let result = Experiences.update(_id, {$set: update}); - if ('value' in update){ - recomputeCreatureXP(charId); - } - return result; - }, -}); - -export default Experiences; -export { ExperienceSchema, insertExperience, updateExperience }; +export { ExperienceSchema }; diff --git a/app/imports/api/properties/Features.js b/app/imports/api/properties/Features.js index c1c0ada2..a717c858 100644 --- a/app/imports/api/properties/Features.js +++ b/app/imports/api/properties/Features.js @@ -1,22 +1,8 @@ import SimpleSchema from 'simpl-schema'; -import schema from '/imports/api/schema.js'; -import { PropertySchema } from '/imports/api/properties/Properties.js' -import ColorSchema from '/imports/api/creature/subSchemas/ColorSchema.js'; - -// Mixins -import creaturePermissionMixin from '/imports/api/creature/mixins/creaturePermissionMixin.js'; -import { setDocToLastMixin } from '/imports/api/creature/mixins/setDocToLastMixin.js'; -import { setDocAncestryMixin, ensureAncestryContainsCharIdMixin } from '/imports/api/parenting/parenting.js'; -import simpleSchemaMixin from '/imports/api/creature/mixins/simpleSchemaMixin.js'; -import propagateInheritanceUpdateMixin from '/imports/api/creature/mixins/propagateInheritanceUpdateMixin.js'; -import updateSchemaMixin from '/imports/api/creature/mixins/updateSchemaMixin.js'; - -let Features = new Mongo.Collection('features'); let FeatureSchema = new SimpleSchema({ name: { type: String, - optional: true, }, enabled: { type: Boolean, @@ -32,39 +18,4 @@ let FeatureSchema = new SimpleSchema({ }, }); -FeatureSchema.extend(ColorSchema); - -Features.attachSchema(FeatureSchema); -Features.attachSchema(PropertySchema); - -const insertFeature = new ValidatedMethod({ - name: 'Features.methods.insert', - mixins: [ - setDocToLastMixin, - simpleSchemaMixin, - ensureAncestryContainsCharIdMixin, - setDocAncestryMixin, - creaturePermissionMixin, - ], - collection: Features, - permission: 'edit', - schema: FeatureSchema, - run(feature) { - return Features.insert(feature); - }, -}); - -const updateFeature = new ValidatedMethod({ - name: 'Features.methods.update', - mixins: [ - updateSchemaMixin, - propagateInheritanceUpdateMixin, - creaturePermissionMixin, - ], - collection: Features, - permission: 'edit', - schema: FeatureSchema, -}); - -export default Features; -export { FeatureSchema, insertFeature, updateFeature } +export { FeatureSchema } diff --git a/app/imports/api/properties/Folders.js b/app/imports/api/properties/Folders.js index 48cbea7e..7e760c70 100644 --- a/app/imports/api/properties/Folders.js +++ b/app/imports/api/properties/Folders.js @@ -1,56 +1,11 @@ import SimpleSchema from 'simpl-schema'; -import schema from '/imports/api/schema.js'; -import { PropertySchema } from '/imports/api/properties/Properties.js' - -// Mixins -import creaturePermissionMixin from '/imports/api/creature/mixins/creaturePermissionMixin.js'; -import { setDocToLastMixin } from '/imports/api/creature/mixins/setDocToLastMixin.js'; -import { setDocAncestryMixin, ensureAncestryContainsCharIdMixin } from '/imports/api/parenting/parenting.js'; -import simpleSchemaMixin from '/imports/api/creature/mixins/simpleSchemaMixin.js'; -import propagateInheritanceUpdateMixin from '/imports/api/creature/mixins/propagateInheritanceUpdateMixin.js'; -import updateSchemaMixin from '/imports/api/creature/mixins/updateSchemaMixin.js'; - -let Folders = new Mongo.Collection('folders'); // Folders organize a character sheet into a tree, particularly to group things // like 'race' and 'background' -let FolderSchema = schema({ +let FolderSchema = new SimpleSchema({ name: { type: String, }, }); -Folders.attachSchema(FolderSchema); -Folders.attachSchema(PropertySchema); - -const insertFolder = new ValidatedMethod({ - name: 'Folders.methods.insert', - mixins: [ - creaturePermissionMixin, - setDocAncestryMixin, - ensureAncestryContainsCharIdMixin, - setDocToLastMixin, - simpleSchemaMixin, - ], - collection: Folders, - permission: 'edit', - schema: FolderSchema, - run(folder) { - return Folders.insert(folder); - }, -}); - -const updateFolder = new ValidatedMethod({ - name: 'Folders.methods.update', - mixins: [ - propagateInheritanceUpdateMixin, - updateSchemaMixin, - creaturePermissionMixin, - ], - collection: Folders, - permission: 'edit', - schema: FolderSchema, -}); - -export default Folders; -export { FolderSchema, insertFolder, updateFolder }; +export { FolderSchema }; diff --git a/app/imports/api/properties/Items.js b/app/imports/api/properties/Items.js index ada8a7fa..49363008 100644 --- a/app/imports/api/properties/Items.js +++ b/app/imports/api/properties/Items.js @@ -1,12 +1,6 @@ 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/properties/Properties.js' -import ChildSchema from '/imports/api/parenting/ChildSchema.js'; -Items = new Mongo.Collection("items"); - -ItemSchema = schema({ +ItemSchema = new SimpleSchema({ name: { type: String, optional: true, @@ -52,11 +46,4 @@ ItemSchema = schema({ }, }); -ItemSchema.extend(ColorSchema); - -Items.attachSchema(ItemSchema); -Items.attachSchema(PropertySchema); -Items.attachSchema(ChildSchema); - -export default Items; export { ItemSchema }; diff --git a/app/imports/api/properties/Notes.js b/app/imports/api/properties/Notes.js index 2ac4674c..4e7a5176 100644 --- a/app/imports/api/properties/Notes.js +++ b/app/imports/api/properties/Notes.js @@ -1,19 +1,6 @@ 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/properties/Properties.js' -// Mixins -import creaturePermissionMixin from '/imports/api/creature/mixins/creaturePermissionMixin.js'; -import { setDocToLastMixin } from '/imports/api/creature/mixins/setDocToLastMixin.js'; -import { setDocAncestryMixin, ensureAncestryContainsCharIdMixin } from '/imports/api/parenting/parenting.js'; -import simpleSchemaMixin from '/imports/api/creature/mixins/simpleSchemaMixin.js'; -import propagateInheritanceUpdateMixin from '/imports/api/creature/mixins/propagateInheritanceUpdateMixin.js'; -import updateSchemaMixin from '/imports/api/creature/mixins/updateSchemaMixin.js'; - -let Notes = new Mongo.Collection("notes"); - -let NoteSchema = schema({ +let NoteSchema = new SimpleSchema({ name: { type: String, optional: true, @@ -24,39 +11,4 @@ let NoteSchema = schema({ }, }); -NoteSchema.extend(ColorSchema); - -Notes.attachSchema(NoteSchema); -Notes.attachSchema(PropertySchema); - -const insertNote = new ValidatedMethod({ - name: 'Notes.methods.insert', - mixins: [ - creaturePermissionMixin, - setDocAncestryMixin, - ensureAncestryContainsCharIdMixin, - setDocToLastMixin, - simpleSchemaMixin, - ], - collection: Notes, - permission: 'edit', - schema: NoteSchema, - run(note) { - return Notes.insert(note); - }, -}); - -const updateNote = new ValidatedMethod({ - name: 'Notes.methods.update', - mixins: [ - propagateInheritanceUpdateMixin, - updateSchemaMixin, - creaturePermissionMixin, - ], - collection: Notes, - permission: 'edit', - schema: NoteSchema, -}); - -export default Notes; -export { NoteSchema, insertNote, updateNote }; +export { NoteSchema }; diff --git a/app/imports/api/properties/Proficiencies.js b/app/imports/api/properties/Proficiencies.js index f0d37aa1..28d8f924 100644 --- a/app/imports/api/properties/Proficiencies.js +++ b/app/imports/api/properties/Proficiencies.js @@ -1,19 +1,6 @@ import SimpleSchema from 'simpl-schema'; -import schema from '/imports/api/schema.js'; -import { PropertySchema } from '/imports/api/properties/Properties.js' -// Mixins -import recomputeCreatureMixin from '/imports/api/creature/mixins/recomputeCreatureMixin.js'; -import creaturePermissionMixin from '/imports/api/creature/mixins/creaturePermissionMixin.js'; -import { setDocToLastMixin } from '/imports/api/creature/mixins/setDocToLastMixin.js'; -import { setDocAncestryMixin, ensureAncestryContainsCharIdMixin } from '/imports/api/parenting/parenting.js'; -import simpleSchemaMixin from '/imports/api/creature/mixins/simpleSchemaMixin.js'; -import propagateInheritanceUpdateMixin from '/imports/api/creature/mixins/propagateInheritanceUpdateMixin.js'; -import updateSchemaMixin from '/imports/api/creature/mixins/updateSchemaMixin.js'; - -let Proficiencies = new Mongo.Collection("proficiencies"); - -let ProficiencySchema = schema({ +let ProficiencySchema = new SimpleSchema({ // The variableName of the skill to apply this to skill: { type: String, @@ -27,46 +14,4 @@ let ProficiencySchema = schema({ }, }); -Proficiencies.attachSchema(ProficiencySchema); -Proficiencies.attachSchema(PropertySchema); - -const insertProficiency = new ValidatedMethod({ - name: 'Proficiencies.methods.insert', - mixins: [ - creaturePermissionMixin, - setDocToLastMixin, - setDocAncestryMixin, - ensureAncestryContainsCharIdMixin, - recomputeCreatureMixin, - simpleSchemaMixin, - ], - collection: Proficiencies, - permission: 'edit', - schema: ProficiencySchema, - run(prof) { - return Proficiencies.insert(prof); - }, -}); - -const updateProficiency = new ValidatedMethod({ - name: 'Proficiencies.methods.update', - mixins: [ - recomputeCreatureMixin, - propagateInheritanceUpdateMixin, - updateSchemaMixin, - creaturePermissionMixin, - ], - collection: Proficiencies, - permission: 'edit', - schema: ProficiencySchema, - skipRecompute({update}){ - let fields = getModifierFields(update); - return !fields.hasAny([ - 'value', - 'skill', - ]); - }, -}); - -export default Proficiencies; -export { ProficiencySchema, insertProficiency, updateProficiency }; +export { ProficiencySchema }; diff --git a/app/imports/api/properties/Properties.js b/app/imports/api/properties/Properties.js deleted file mode 100644 index 4af269ed..00000000 --- a/app/imports/api/properties/Properties.js +++ /dev/null @@ -1,64 +0,0 @@ -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/creature/mixins/recomputeCreatureMixin.js'; -import creaturePermissionMixin from '/imports/api/creature/mixins/creaturePermissionMixin.js'; -import simpleSchemaMixin from '/imports/api/creature/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 }; diff --git a/app/imports/api/properties/Rolls.js b/app/imports/api/properties/Rolls.js index 9fd772ae..b919c508 100644 --- a/app/imports/api/properties/Rolls.js +++ b/app/imports/api/properties/Rolls.js @@ -1,18 +1,7 @@ import SimpleSchema from 'simpl-schema'; -import { PropertySchema } from '/imports/api/properties/Properties.js' import AdjustmentSchema from '/imports/api/creature/subSchemas/AdjustmentSchema.js'; import StoredBuffSchema from '/imports/api/properties/Buffs.js'; -// Mixins -import creaturePermissionMixin from '/imports/api/creature/mixins/creaturePermissionMixin.js'; -import { setDocToLastMixin } from '/imports/api/creature/mixins/setDocToLastMixin.js'; -import { setDocAncestryMixin, ensureAncestryContainsCharIdMixin } from '/imports/api/parenting/parenting.js'; -import simpleSchemaMixin from '/imports/api/creature/mixins/simpleSchemaMixin.js'; -import propagateInheritanceUpdateMixin from '/imports/api/creature/mixins/propagateInheritanceUpdateMixin.js'; -import updateSchemaMixin from '/imports/api/creature/mixins/updateSchemaMixin.js'; - -let Rolls = new Mongo.Collection('rolls'); - let RollChildrenSchema = new SimpleSchema({ // The adjustments to be applied adjustments: { @@ -99,37 +88,4 @@ let RollSchema = new SimpleSchema({ }, }); -Rolls.attachSchema(RollSchema); -Rolls.attachSchema(PropertySchema); - -const insertRoll = new ValidatedMethod({ - name: 'Rolls.methods.insert', - mixins: [ - creaturePermissionMixin, - setDocToLastMixin, - setDocAncestryMixin, - ensureAncestryContainsCharIdMixin, - simpleSchemaMixin, - ], - collection: Rolls, - permission: 'edit', - schema: RollSchema, - run(roll) { - return Rolls.insert(roll); - }, -}); - -const updateRoll = new ValidatedMethod({ - name: 'Rolls.methods.update', - mixins: [ - propagateInheritanceUpdateMixin, - updateSchemaMixin, - creaturePermissionMixin, - ], - collection: Rolls, - permission: 'edit', - schema: RollSchema, -}); - -export default Rolls; -export { RollSchema, insertRoll, updateRoll }; +export { RollSchema }; diff --git a/app/imports/api/properties/Skills.js b/app/imports/api/properties/Skills.js index 7a8d05c2..a7d0a66c 100644 --- a/app/imports/api/properties/Skills.js +++ b/app/imports/api/properties/Skills.js @@ -12,8 +12,6 @@ import simpleSchemaMixin from '/imports/api/creature/mixins/simpleSchemaMixin.js import propagateInheritanceUpdateMixin from '/imports/api/creature/mixins/propagateInheritanceUpdateMixin.js'; import updateSchemaMixin from '/imports/api/creature/mixins/updateSchemaMixin.js'; -let Skills = new Mongo.Collection("skills"); - /* * Skills are anything that results in a modifier to be added to a D20 * Skills have an ability score modifier that they use as their basis @@ -59,9 +57,8 @@ let SkillSchema = schema({ }, }); -SkillSchema.extend(ColorSchema); -let ComputedSkillSchema = schema({ +let ComputedSkillSchema = new SimpleSchema({ // Computed value of skill to be added to skill rolls value: { type: Number, @@ -101,49 +98,4 @@ let ComputedSkillSchema = schema({ }, }).extend(SkillSchema); -Skills.attachSchema(ComputedSkillSchema); -Skills.attachSchema(PropertySchema); - -const insertSkill = new ValidatedMethod({ - name: 'Skills.methods.insert', - mixins: [ - creaturePermissionMixin, - setDocToLastMixin, - setDocAncestryMixin, - ensureAncestryContainsCharIdMixin, - recomputeCreatureMixin, - simpleSchemaMixin, - ], - collection: Skills, - permission: 'edit', - schema: SkillSchema, - run(skill) { - return Skills.insert(skill); - }, -}); - -const updateSkill = new ValidatedMethod({ - name: 'Skills.methods.update', - mixins: [ - recomputeCreatureMixin, - propagateInheritanceUpdateMixin, - updateSchemaMixin, - creaturePermissionMixin, - ], - collection: Skills, - permission: 'edit', - schema: SkillSchema, - skipRecompute({update}){ - let fields = getModifierFields(update); - return !fields.hasAny([ - 'variableName', - 'ability', - 'type', - 'baseValue', - 'baseProficiency', - ]); - }, -}); - -export default Skills; -export { SkillSchema }; +export { SkillSchema, ComputedSkillSchema }; diff --git a/app/imports/api/properties/SpellLists.js b/app/imports/api/properties/SpellLists.js index 3f746408..8c604419 100644 --- a/app/imports/api/properties/SpellLists.js +++ b/app/imports/api/properties/SpellLists.js @@ -1,20 +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/properties/Properties.js' - -// Mixins -import creaturePermissionMixin from '/imports/api/creature/mixins/creaturePermissionMixin.js'; -import { setDocToLastMixin } from '/imports/api/creature/mixins/setDocToLastMixin.js'; -import { setDocAncestryMixin, ensureAncestryContainsCharIdMixin } from '/imports/api/parenting/parenting.js'; -import simpleSchemaMixin from '/imports/api/creature/mixins/simpleSchemaMixin.js'; -import propagateInheritanceUpdateMixin from '/imports/api/creature/mixins/propagateInheritanceUpdateMixin.js'; -import updateSchemaMixin from '/imports/api/creature/mixins/updateSchemaMixin.js'; import VARIABLE_NAME_REGEX from '/imports/constants/VARIABLE_NAME_REGEX.js'; -let SpellLists = new Mongo.Collection("spellLists"); - -let SpellListSchema = schema({ +let SpellListSchema = new SimpleSchema({ name: { type: String, optional: true, @@ -36,39 +23,4 @@ let SpellListSchema = schema({ }, }); -SpellListSchema.extend(ColorSchema); - -SpellLists.attachSchema(SpellListSchema); -SpellLists.attachSchema(PropertySchema); - -const insertSpellList = new ValidatedMethod({ - name: 'SpellLists.methods.insert', - mixins: [ - creaturePermissionMixin, - setDocToLastMixin, - setDocAncestryMixin, - ensureAncestryContainsCharIdMixin, - simpleSchemaMixin, - ], - collection: SpellLists, - permission: 'edit', - schema: SpellListSchema, - run(spellList) { - return SpellLists.insert(spellList); - }, -}); - -const updateSpellList = new ValidatedMethod({ - name: 'SpellLists.methods.update', - mixins: [ - propagateInheritanceUpdateMixin, - updateSchemaMixin, - creaturePermissionMixin, - ], - collection: SpellLists, - permission: 'edit', - schema: SpellListSchema, -}); - -export default SpellLists; export { SpellListSchema } diff --git a/app/imports/api/properties/Spells.js b/app/imports/api/properties/Spells.js index a49b7737..3b75994a 100644 --- a/app/imports/api/properties/Spells.js +++ b/app/imports/api/properties/Spells.js @@ -22,8 +22,6 @@ const magicSchools = [ 'transmutation', ]; -let Spells = new Mongo.Collection('spells'); - let SpellSchema = schema({ name: { type: String, @@ -94,39 +92,4 @@ let SpellSchema = schema({ }, }); -SpellSchema.extend(ColorSchema); - -Spells.attachSchema(SpellSchema); -Spells.attachSchema(PropertySchema); - -const insertSpell = new ValidatedMethod({ - name: 'Spells.methods.insert', - mixins: [ - creaturePermissionMixin, - setDocToLastMixin, - setDocAncestryMixin, - ensureAncestryContainsCharIdMixin, - simpleSchemaMixin, - ], - collection: Spells, - permission: 'edit', - schema: SpellSchema, - run(spell) { - return Spells.insert(spell); - }, -}); - -const updateSpell = new ValidatedMethod({ - name: 'Spells.methods.update', - mixins: [ - propagateInheritanceUpdateMixin, - updateSchemaMixin, - creaturePermissionMixin, - ], - collection: Spells, - permission: 'edit', - schema: SpellSchema, -}); - -export default Spells; -export { SpellSchema, insertSpell, updateSpell }; +export { SpellSchema }; diff --git a/app/imports/api/properties/propertySchemas.js b/app/imports/api/properties/propertySchemas.js new file mode 100644 index 00000000..c36bd78f --- /dev/null +++ b/app/imports/api/properties/propertySchemas.js @@ -0,0 +1,44 @@ +import { CreatureSchema } from '/imports/api/creature/Creatures.js'; +import { ActionSchema } from '/imports/api/properties/Actions.js'; +import { AttributeSchema } from '/imports/api/properties/Attributes.js'; +import { StoredBuffSchema } from '/imports/api/properties/Buffs.js'; +import { ClassSchema } from '/imports/api/properties/Classes.js'; +import { ClassLevelSchema } from '/imports/api/properties/ClassLevels.js'; +import { DamageMultiplierSchema } from '/imports/api/properties/DamageMultipliers.js'; +import { EffectSchema } from '/imports/api/properties/Effects.js'; +import { ExperienceSchema } from '/imports/api/properties/Experiences.js'; +import { FeatureSchema } from '/imports/api/properties/Features.js'; +import { FolderSchema } from '/imports/api/properties/Folders.js'; +import { NoteSchema } from '/imports/api/properties/Notes.js'; +import { ProficiencySchema } from '/imports/api/properties/Proficiencies.js'; +import { RollSchema } from '/imports/api/properties/Rolls.js'; +import { SkillSchema } from '/imports/api/properties/Skills.js'; +import { SpellListSchema } from '/imports/api/properties/SpellLists.js'; +import { SpellSchema } from '/imports/api/properties/Spells.js'; +import { ContainerSchema } from '/imports/api/properties/Containers.js'; +import { ItemSchema } from '/imports/api/properties/Items.js'; + + +const propertySchemas = { + creature: CreatureSchema, + action: ActionSchema, + attribute: AttributeSchema, + buff: StoredBuffSchema, + class: ClassSchema, + classLevel: ClassLevelSchema, + damageMultiplier: DamageMultiplierSchema, + effect: EffectSchema, + experience: ExperienceSchema, + feature: FeatureSchema, + folder: FolderSchema, + note: NoteSchema, + proficiency: ProficiencySchema, + roll: RollSchema, + skill: SkillSchema, + spellList: SpellListSchema, + spell: SpellSchema, + container: ContainerSchema, + item: ItemSchema, +}; + +export default propertySchemas; diff --git a/app/imports/api/schema.js b/app/imports/api/schema.js deleted file mode 100644 index de1f8fe9..00000000 --- a/app/imports/api/schema.js +++ /dev/null @@ -1,14 +0,0 @@ -import SimpleSchema from 'simpl-schema'; - -export default function schema(options){ - return new SimpleSchema(options, { - clean: { - filter: true, - autoConvert: true, - removeEmptyStrings: true, - trimStrings: false, - getAutoValues: true, - removeNullsFromArrays: true, - }, - }); -} diff --git a/app/imports/constants/SCHEMA_OPTIONS.js b/app/imports/constants/SCHEMA_OPTIONS.js new file mode 100644 index 00000000..35017098 --- /dev/null +++ b/app/imports/constants/SCHEMA_OPTIONS.js @@ -0,0 +1,14 @@ +import SimpleSchema from 'simpl-schema'; + +const SCHEMA_OPTIONS = { + clean: { + filter: true, + autoConvert: true, + removeEmptyStrings: true, + trimStrings: false, + getAutoValues: true, + removeNullsFromArrays: true, + }, +}; + +export default SCHEMA_OPTIONS;