load('bower_components/lodash/dist/lodash.js');
load('bower_components/underscore.string/dist/underscore.string.min.js');
load('bower_components/tv4/tv4.js');
load('bower_components/treema/treema-utils.js');
print(typeof TreemaUtils);

print(db.level.components.count());
db.level.components.find().limit(3000000).forEach(function (levelComponent) {
  thisTv4 = tv4.freshApi();
  thisTv4.addSchema('#', levelComponent.configSchema || {});
  var data = levelComponent.configSchema.default || {};
  TreemaUtils.populateRequireds(data, levelComponent.configSchema);
  var props = levelComponent.configSchema.properties;
  if(props) {
    _.keys(levelComponent.configSchema.properties).forEach(function (key) {
      if(data[key]) return;
      var childSchema = props[key];
      var workingSchema = TreemaUtils.buildWorkingSchemas(childSchema, thisTv4)[0];
      if(workingSchema.default)
        return data[key] = TreemaUtils.cloneDeep(workingSchema.default);
      var type = props[key].type;
      if(!type) return;
      if(Array.isArray(type)) type = type[0];
      data[key] = TreemaUtils.defaultForType(type);
    })
  }
  delete levelComponent.configSchema.required;
  levelComponent.configSchema.default = data;
  print('\n\n--------------------', levelComponent.name);
  print("SCHEMA: ", JSON.stringify(levelComponent.configSchema, null, '\t'));
  
});