pg-search-sequelize
Version:
A library that uses sequelize and postgres fulltext search
82 lines (71 loc) • 2.4 kB
JavaScript
'use strict';
let config = {
username: process.env.DB_USER || 'root',
password: process.env.DB_PASSWORD || 'admin',
database: process.env.DB_NAME || 'films',
host: process.env.DB_HOST || 'pg-search-sequelize-test-db',
port: process.env.DB_PORT || '5432',
dialect: 'postgres'
};
let SearchModel = require('../');
let Sequelize = require('sequelize');
let sequelize = new Sequelize(config.database, config.username, config.password, config);
let Film = sequelize.define('Film', {
id: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true, field: 'film_id' },
title: { type: Sequelize.STRING, allowNull: false },
description: { type: Sequelize.TEXT, allowNull: false },
releaseYear: { type: Sequelize.INTEGER, allowNull: false, field: 'release_year' },
length: Sequelize.INTEGER,
rating: Sequelize.STRING,
}, {
tableName: 'film',
timestamps: false,
});
let FilmMaterializedView = sequelize.define('FilmMaterializedView', {
id: {type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true, field: 'film_id'},
title: Sequelize.STRING,
description: Sequelize.TEXT,
releaseYear: Sequelize.INTEGER,
rating: Sequelize.STRING,
document: Sequelize.TEXT
}, {
tableName: 'film_materialized_view',
timestamps: false
});
FilmMaterializedView.referenceModel = Film;
new SearchModel(FilmMaterializedView);
let Actor = sequelize.define('Actor', {
id: {type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true, field: 'actor_id'},
name: {type: Sequelize.STRING(45), allowNull: false}
}, {
tableName: 'actor',
timestamps: false
});
let FilmActor = sequelize.define('FilmActor', {}, {
tableName: 'film_actor',
timestamps: false
});
FilmActor.removeAttribute('id');
Film.belongsToMany(Actor, {
through: FilmActor,
as: 'Actors',
foreignKey: {
name: 'film_id',
allowNull: false
},
otherKey: 'actor_id'
});
Film.hasMany(FilmActor, { foreignKey: { name: 'film_id', allowNull: false } });
Actor.belongsToMany(Film, {
through: FilmActor,
as: 'Films',
foreignKey: {
name: 'actor_id',
allowNull: false
},
otherKey: 'film_id'
});
Actor.hasMany(FilmActor, { foreignKey: { name: 'actor_id', allowNull: false } });
FilmActor.belongsTo(Actor, { foreignKey: { name: 'actor_id', allowNull: false } });
FilmActor.belongsTo(Film, { foreignKey: { name: 'film_id', allowNull: false } });
module.exports = sequelize;