Skip to content

Commit

Permalink
Do not use initSchema at all
Browse files Browse the repository at this point in the history
  • Loading branch information
lukejagodzinski committed Oct 1, 2015
1 parent 8863c80 commit 5987bf7
Show file tree
Hide file tree
Showing 14 changed files with 44 additions and 80 deletions.
11 changes: 6 additions & 5 deletions lib/modules/behaviors/init_definition.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ var checkBehaviorData = function(behaviorData, behaviorName, className) {
};

Astro.eventManager.on(
'initDefinition', function onInitDefinitionBehaviors(subSchema) {
'initDefinition', function onInitDefinitionBehaviors(schemaDefinition) {
var Class = this;
var schema = Class.schema;
var behaviorsDefinitions = {};
var schemaDefinition = subSchema.definition;

if (_.has(schemaDefinition, 'behaviors')) {
_.each(schemaDefinition.behaviors, function(behaviorData, behaviorName) {
Expand All @@ -49,12 +49,13 @@ Astro.eventManager.on(
// Get a behavior generator.
var classBehaviorGenerator = Astro.getBehavior(behaviorName);
var classBehavior = classBehaviorGenerator(behaviorOptions);

Class.extend(classBehavior.definition);
behaviorsDefinitions[behaviorName] = classBehavior;
Class.extend(classBehavior.definition);
});

subSchema.behaviors = behaviorsDefinitions;
// Add the "behaviors" attribute to the schema.
schema.behaviors = schema.behaviors || {};
_.extend(schema.behaviors, behaviorsDefinitions);
}
}
);
6 changes: 0 additions & 6 deletions lib/modules/behaviors/init_schema.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
Astro.eventManager.on(
'initSchema', function onInitSchemaBehavior(schemaDefinition) {
var schema = this;

schema.behaviors = schema.behaviors || {};

if (_.has(schemaDefinition, 'behaviors')) {
_.extend(schema.behaviors, schemaDefinition.behaviors);
}
}
);
8 changes: 3 additions & 5 deletions lib/modules/core/classes.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,15 @@ var methods = {
var Class = this;
var schema = Class.schema;

// Process the schema definition before using it.
var subSchema = new Astro.SubSchema(schemaDefinition);
Astro.eventManager.each('initDefinition', function(eventHandler) {
eventHandler.call(Class, subSchema);
eventHandler.call(Class, schemaDefinition);
});
// Store the schema definition.
schema.definitions.push(subSchema);
schema.definitions.push(schemaDefinition);

// Setup schema with the schema definition.
Astro.eventManager.each('initSchema', function(eventHandler) {
eventHandler.call(schema, subSchema);
eventHandler.call(schema, schemaDefinition);
});
}
};
Expand Down
3 changes: 0 additions & 3 deletions lib/modules/core/sub_schema.js
Original file line number Diff line number Diff line change
@@ -1,3 +0,0 @@
Astro.SubSchema = function SubSchema(schemaDefinition) {
this.definition = schemaDefinition;
};
4 changes: 4 additions & 0 deletions lib/modules/events/init_class.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,11 @@ classMethods.emitEvent = function(event) {
Astro.eventManager.on(
'initClass', function onInitClassEvents(schemaDefinition) {
var Class = this;
var schema = Class.schema;

_.extend(Class, classMethods);

// Add an event manger to the schema.
schema.eventManager = schema.eventManager || Astro.Events.mixin({});
}
);
11 changes: 8 additions & 3 deletions lib/modules/events/init_definition.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ var checkEventDefinition = function(eventDefinition, eventName, className) {
};

Astro.eventManager.on(
'initDefinition', function onInitDefinitionEvents(subSchema) {
'initDefinition', function onInitDefinitionEvents(schemaDefinition) {
var Class = this;
var schema = Class.schema;
var eventsDefinitions = {};
var schemaDefinition = subSchema.definition;

if (_.has(schemaDefinition, 'events')) {
_.each(schemaDefinition.events, function(eventHandlers, eventName) {
Expand All @@ -40,7 +40,12 @@ Astro.eventManager.on(
}

if (_.size(eventsDefinitions) > 0) {
subSchema.events = eventsDefinitions;
// Add events to the event manager in a schema.
_.each(eventsDefinitions, function(eventHandlers, eventName) {
_.each(eventHandlers, function(eventHandler) {
schema.eventManager.on(eventName, eventHandler);
});
});
}
}
);
18 changes: 0 additions & 18 deletions lib/modules/events/init_schema.js
Original file line number Diff line number Diff line change
@@ -1,23 +1,5 @@
var addEvent = function(eventName, eventHandler) {
var schema = this;

schema.eventManager.on(eventName, eventHandler);
};

Astro.eventManager.on(
'initSchema', function onInitSchemaEvents(schemaDefinition) {
var schema = this;

// Add an event manger to the schema.
schema.eventManager = schema.eventManager || Astro.Events.mixin({});

// Add events from the schema definition.
if (_.has(schemaDefinition, 'events')) {
_.each(schemaDefinition.events, function(eventHandlers, eventName) {
_.each(eventHandlers, function(eventHandler) {
addEvent.call(schema, eventName, eventHandler);
});
});
}
}
);
11 changes: 8 additions & 3 deletions lib/modules/fields/init_definition.js
Original file line number Diff line number Diff line change
Expand Up @@ -81,10 +81,10 @@ var parseNestedFieldName = function(nestedFieldName, definition) {
};

Astro.eventManager.on(
'initDefinition', function onInitDefinitionFields(subSchema) {
'initDefinition', function onInitDefinitionFields(schemaDefinition) {
var Class = this;
var schema = Class.schema;
var fieldsDefinitions = {};
var schemaDefinition = subSchema.definition;

if (_.has(schemaDefinition, 'fields')) {
if (_.isArray(schemaDefinition.fields)) {
Expand Down Expand Up @@ -183,7 +183,12 @@ Astro.eventManager.on(
fieldsDefinitions[fieldName] = field;
});

subSchema.fields = fieldsDefinitions;
// Add fields and fields names to the schema.
schema.fields = schema.fields || {};
schema.fieldsNames = schema.fieldsNames || [];
_.extend(schema.fields, fieldsDefinitions);
var fieldsNames = _.keys(fieldsDefinitions);
schema.fieldsNames = _.union(schema.fieldsNames, fieldsNames);
}
}
);
10 changes: 0 additions & 10 deletions lib/modules/fields/init_schema.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,5 @@
Astro.eventManager.on(
'initSchema', function onInitSchemaFields(schemaDefinition) {
var schema = this;

schema.fields = schema.fields || {};
schema.fieldsNames = schema.fieldsNames || [];

if (_.has(schemaDefinition, 'fields')) {
_.extend(schema.fields, schemaDefinition.fields);
schema.fieldsNames = _.union(
schema.fieldsNames, _.keys(schemaDefinition.fields)
);
}
}
);
9 changes: 5 additions & 4 deletions lib/modules/indexes/init_definition.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ var checkDefinition = function(indexDefinition, indexName, className) {
};

Astro.eventManager.on(
'initDefinition', function onInitDefinitionIndexes(subSchema) {
'initDefinition', function onInitDefinitionIndexes(schemaDefinition) {
var Class = this;
var schema = Class.schema;
var indexesDefinitions = {};
var schemaDefinition = subSchema.definition;

if (_.has(schemaDefinition, 'fields')) {
_.each(schemaDefinition.fields, function(fieldDefinition, fieldName) {
Expand Down Expand Up @@ -71,15 +71,16 @@ Astro.eventManager.on(
if (!Collection) {
return;
}

// Add indexes to the collection
_.each(indexesDefinitions, function(indexDefinition) {
Collection._ensureIndex(
indexDefinition.fields, indexDefinition.options
);
});

subSchema.indexes = indexesDefinitions;
// Add indexes to the schema.
schema.indexes = schema.indexes || {};
_.extend(schema.indexes, indexesDefinitions);
}
}
);
7 changes: 0 additions & 7 deletions lib/modules/indexes/init_schema.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,5 @@
Astro.eventManager.on(
'initSchema', function onInitSchemaIndexes(schemaDefinition) {
var schema = this;

// Add the "indexes" attribute to the schema.
schema.indexes = schema.indexes || {};

if (_.has(schemaDefinition, 'indexes')) {
_.extend(schema.indexes, schemaDefinition.indexes);
}
}
);
12 changes: 6 additions & 6 deletions lib/modules/methods/init_definition.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,17 @@ var checkMethod = function(method, methodName, className) {
};

Astro.eventManager.on(
'initDefinition', function onInitDefinitionMethods(subSchema) {
'initDefinition', function onInitDefinitionMethods(schemaDefinition) {
var Class = this;
var schema = Class.schema;
var methodsDefinitions = {};
var schemaDefinition = subSchema.definition;

if (_.has(schemaDefinition, 'methods')) {
_.each(schemaDefinition.methods, function(method, methodName) {
if (_.isFunction(method)) {
methodsDefinitions[methodName] = method;
// Check validity of the method definition.
checkMethod(
methodsDefinitions[methodName], methodName, Class.getName()
);
checkMethod(method, methodName, Class.getName());
}
});
}
Expand All @@ -37,7 +35,9 @@ Astro.eventManager.on(
Class.prototype[methodName] = method;
});

subSchema.methods = methodsDefinitions;
// Add methods to the schema.
schema.methods = schema.methods || {};
_.extend(schema.methods, schemaDefinition.methods);
}
}
);
6 changes: 0 additions & 6 deletions lib/modules/methods/init_schema.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
Astro.eventManager.on(
'initSchema', function onInitSchemaMethods(schemaDefinition) {
var schema = this;

schema.methods = schema.methods || {};

if (_.has(schemaDefinition, 'methods')) {
_.extend(schema.methods, schemaDefinition.methods);
}
}
);
8 changes: 4 additions & 4 deletions lib/modules/storage/init_definition.js
Original file line number Diff line number Diff line change
Expand Up @@ -246,9 +246,9 @@ var checkSchemaDefinition = function(schemaDefinition) {
};

Astro.eventManager.on(
'initDefinition', function onInitDefinitionStorage(subSchema) {
'initDefinition', function onInitDefinitionStorage(schemaDefinition) {
var Class = this;
var schemaDefinition = subSchema.definition;
var schema = Class.schema;

checkSchemaDefinition.call(Class, schemaDefinition);

Expand All @@ -258,7 +258,7 @@ Astro.eventManager.on(
if (!Collection) {
return;
}
Class.schema.collection = Collection;
schema.collection = Collection;

var transform = schemaDefinition.transform;
if (_.isFunction(transform)) {
Expand Down Expand Up @@ -288,7 +288,7 @@ Astro.eventManager.on(
// document fetched from the collection.
var typeField = schemaDefinition.typeField;
if (typeField) {
Class.schema.typeField = typeField;
schema.typeField = typeField;
extendDefinition.fields[typeField] = {
type: 'string'
};
Expand Down

0 comments on commit 5987bf7

Please sign in to comment.