1.4.0 • Published 6 years ago

sails-hook-spore v1.4.0

Weekly downloads
3
License
MIT
Repository
github
Last release
6 years ago

Dependencies DevDependencies npm version

sails-hook-spore


A model seeder designed for Sequelize in sails.

Example

You just need to configure Sails.

//An infinite generator. You can also make them finite. It's up to you.
function* Restaurant(){
  let faker = require('faker');
  let i = 0;
  while(true){
    i++;
    yield {
      model: 'Restaurant',
      data: {
        name: faker.name.firstName(),
        id: i,
      }
    };
  }
}

module.exports.spore = {
  //Only necessary if you're not using sails-hook-sequelize as your orm replace hook
  ormHook: 'fireline',
  //Catalogs are static entries in your database.
  catalogs: {
    //This is used to prevent the unseed of catalogs
    models: ['TableType'],
    //And most queries follow this schema.
    data:[
      //This is the representation of an instance to create.
      {
        //Model name
        model: 'TableType',
        //Values. If you want to make an association, use its name
        //and indicate the id.
        data: {
          id: 1,
          name: 'Mini',
        },
      },
      {
        model: 'TableType',
        data: {
          id: 2,
          name: 'Pequeña',
        },
      },
      {
        model: 'TableType',
        data: {
          id: 3,
          name: 'Mediana',
        },
      },
      {
        model: 'TableType',
        data: {
          id: 4,
          name: 'Grande',
        },
      },
    ],
  },
  //The function that runs the initial seed. You should import it from somewhere else,
  //but for demostrative purposes, here it's a seed that returns a single Restaurant
  mainGenerator:() => {
    let restaurants = Restaurant();
    return [restaurants.next().value];
  },
  //In case you want to minimize the generators. (Or skip
  // mainGenerator) spore can execute your generator as many times as
  //you'd like. If it's an infinite generator, pass it like in the example
  generators:[
    {
      fx: Restaurant,
      times: 5,
    },
    //If you have a finite generator, you can pass only the reference
    //like so
    RestaurantFiniteGenerator,
  ]
};

If you have to run a function after the model is instantiated, you can add a method to your object afterCreate.

{
  model: 'TableType',
  data: {
    id: 4,
    name: 'Grande',
  },
  afterCreate: (tableCreated, cb) => {
    console.log(tableCreated.name);
    cb();
  }
},
1.4.0

6 years ago

1.3.2

7 years ago

1.3.1

7 years ago

1.3.0

7 years ago

1.2.3

7 years ago

1.2.2

7 years ago

1.2.0

7 years ago

1.1.0

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago