Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
ah-sequelize-plugin
Advanced tools
This pluggin will use the sequelize orm to create api.models
which contain your sequelize models
npm install ah-sequelize-plugin --save
config/plugins.js
)npm install sequelize --save
) to your package.jsonnpm install sequelize-fixtures --save
) to your package.jsonnpm install mysql --save
) to your package.json
A ./config/sequelize.json
file will be created which will store your database configuration
Use the exports form of sequelize models in ./models
with the file name matching that of the model, IE:
module.exports = function(sequelize, DataTypes) {
return sequelize.define("Project", {
name: DataTypes.STRING,
description: DataTypes.TEXT
})
}
Models are loaded into api.models
, so the example above would be api.models.Project
.
This pluggin does not condone the use of Sequelize.sync()
in favor of migrations. Keep you migrations in ./migrationss
and run api.sequelize.migrate()
.
An example migration to create a users
table would look like:
// from ./migrations/20140101000001-create-users.js
module.exports = {
up: function(migration, DataTypes, done) {
migration.createTable('users', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
name: DataTypes.STRING,
email: DataTypes.STRING,
phone: DataTypes.STRING,
passwordHash: DataTypes.TEXT,
passwordSalt: DataTypes.TEXT,
createdAt: DataTypes.DATE
updatedAt: DataTypes.DATE
}).complete(function(){
migration.addIndex('users', ['email'], {
indexName: 'email_index',
indicesType: 'UNIQUE'
}).complete(function(){
migration.addIndex('users', ['name'], {
indexName: 'name_index',
indicesType: 'UNIQUE'
}).complete(function(){
migration.addIndex('users', ['phone'], {
indexName: 'phone_index',
indicesType: 'UNIQUE'
}).complete(function(){
done();
});
});
});
});
},
down: function(migration, DataTypes, done) {
migration.dropTable('users').complete(done);
}
}
You can use the sequelize-cli for more utilities or
you can add a migration grunt helper(s) to your actionhero project by adding the below to your gruntfile.js
:
grunt.registerTask('migrate','run any pending database migrations',function(file){
var done = this.async();
init(function(api){
api.sequelize.migrate(function(){
done();
})
})
})
To migrate down also add the following:
grunt.registerTask('migrate:undo','revert and run the “down” action on the last run migration',function(file){
var done = this.async();
init(function(api){
api.sequelize.migrateUndo(function(){
done();
})
})
})
If you want to sync, you can api.sequelize.sync()
or api.models.yourModel.sync()
;
If you want to declare associations, best practice has you create an associations
initializer within your project which might look like this:
exports.associations = function(api, next){
api.associations = {};
api.associations._start = function(api, next){
api.models.user.hasMany(api.models.posts);
api.models.posts.hasMany(api.models.comments);
api.models.comments.belongsTo(api.models.posts);
api.models.posts.belongsTo(api.models.user);
next();
};
next();
}
We use the sequelize-fixtures
package to load in JSON-defined fixtures in the test NODE_ENV. Store your fixtures in ./test/fixtures/*.json
or ./test/fixtures/*.yml
FAQs
Use Sequelize in ActionHero
We found that ah-sequelize-plugin demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 6 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.