AdonisJS Seeder Generator
This package allows you easily generate seeder files for your AdonisJS app from existing Database table files!
Currently Supported
- MySQL
- SQLite
- PostgreSQL
Installation
You can install the package via composer:
npm install @shagital/adonisjs-seeder-generator
Or with yarn
yarn add @shagital/adonisjs-seeder-generator
Usage
Open start/app.js
and add @shagital/adonisjs-seeder-generator/src/Commands/SeederGeneratorCommand
to the commands array
- Note that you can replace the
adonis
withnode ace
if adonis is not installed globally on your system.
Basic usage
Will generate migration files for all tables in the DB set as default, and save files in database/seeds
directory
adonis seed:generate
Specify tables to generate seeders for
adonis seed:generate --include=table1,table2
Exclude specific tables
adonis seed:generate --exclude=table1,table2
Specify DB connection to use
NOTE: Connection type must have been specified in
config/databases
adonis seed:generate --connection=mysql2
Save seeders files in specified path
NOTE: The package will attempt to create the specified directory if it doesn't exist
adonis seed:generate --path=/var/www/html/backups
Truncate table before inserting.
This option is suitable for an application that hasn't gotten to production
NOTE: The table content will be wiped! ENSURE THE TABLE IS BACKED UP JUST IN CASE!!!
adonis seed:generate --force
Example Seeder file
'use strict';
/*
|--------------------------------------------------------------------------
| CitiesSeeder
|--------------------------------------------------------------------------
|
| Make use of the Factory instance to seed database with dummy data or
| make use of Lucid models directly.
|
*/
const Database = use('Database');
class CitiesSeeder {
async run () {
await Database.connection('mysql').table('cities').truncate();
let data = [
{
"id": 219,
"name": "Kuçovë",
"country_id": 3,
"state_id": 629,
"country_code": "AL",
"state_code": "BR",
"latitude": 40.80028,
"longitude": 19.91667
},
{
"id": 280,
"name": "Çorovodë",
"country_id": 3,
"state_id": 629,
"country_code": "AL",
"state_code": "BR",
"latitude": 40.50417,
"longitude": 20.22722
}
...
];
var i, j, temparray, chunk = 1000;
for (i = 0,j = data.length; i < j; i += chunk) {
temparray = data.slice(i, i+chunk);
await Database.connection('mysql').table('cities').insert(temparray);
}
}
}
module.exports = CitiesSeeder;
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
If you have a feature you'd like to add, kindly send a Pull Request (PR)
Security
If you discover any security related issues, please email zacchaeus@shagital.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.