inital commit
This commit is contained in:
56
models/ContactPerson.js
Normal file
56
models/ContactPerson.js
Normal file
@@ -0,0 +1,56 @@
|
||||
const { DataTypes } = require('sequelize');
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
const ContactPerson = sequelize.define('ContactPerson', {
|
||||
name: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
phone: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
},
|
||||
street: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
},
|
||||
zipcode: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
},
|
||||
city: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
},
|
||||
email: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
}
|
||||
}, {
|
||||
tableName: 'contact_persons',
|
||||
timestamps: false
|
||||
});
|
||||
|
||||
ContactPerson.associate = function(models) {
|
||||
ContactPerson.belongsToMany(models.Event, {
|
||||
through: models.EventContactPerson,
|
||||
foreignKey: 'contact_person_id',
|
||||
otherKey: 'event_id',
|
||||
as: 'events'
|
||||
});
|
||||
ContactPerson.belongsToMany(models.Position, {
|
||||
through: models.ContactPersonPosition,
|
||||
foreignKey: 'contact_person_id',
|
||||
otherKey: 'position_id',
|
||||
as: 'positions'
|
||||
});
|
||||
ContactPerson.belongsToMany(models.Institution, {
|
||||
through: models.InstitutionContactPerson,
|
||||
foreignKey: 'contact_person_id',
|
||||
otherKey: 'institution_id',
|
||||
as: 'institutions'
|
||||
});
|
||||
};
|
||||
|
||||
return ContactPerson;
|
||||
};
|
||||
29
models/ContactPersonPosition.js
Normal file
29
models/ContactPersonPosition.js
Normal file
@@ -0,0 +1,29 @@
|
||||
const { DataTypes } = require('sequelize');
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
const ContactPersonPosition = sequelize.define('ContactPersonPosition', {
|
||||
contact_person_id: {
|
||||
type: DataTypes.INTEGER,
|
||||
references: {
|
||||
model: 'ContactPerson',
|
||||
key: 'id'
|
||||
},
|
||||
onUpdate: 'CASCADE',
|
||||
onDelete: 'CASCADE'
|
||||
},
|
||||
position_id: {
|
||||
type: DataTypes.INTEGER,
|
||||
references: {
|
||||
model: 'Position',
|
||||
key: 'id'
|
||||
},
|
||||
onUpdate: 'CASCADE',
|
||||
onDelete: 'CASCADE'
|
||||
}
|
||||
}, {
|
||||
tableName: 'contact_person_positions',
|
||||
timestamps: false
|
||||
});
|
||||
|
||||
return ContactPersonPosition;
|
||||
};
|
||||
37
models/EventPlace.js
Normal file
37
models/EventPlace.js
Normal file
@@ -0,0 +1,37 @@
|
||||
const { DataTypes } = require('sequelize');
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
const EventPlace = sequelize.define('EventPlace', {
|
||||
name: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
street: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
zipcode: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
city: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
backgroundColor: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
}
|
||||
}, {
|
||||
tableName: 'event_places'
|
||||
});
|
||||
|
||||
EventPlace.associate = function(models) {
|
||||
EventPlace.hasMany(models.Event, {
|
||||
foreignKey: 'event_place_id',
|
||||
as: 'events'
|
||||
});
|
||||
};
|
||||
|
||||
return EventPlace;
|
||||
};
|
||||
22
models/EventType.js
Normal file
22
models/EventType.js
Normal file
@@ -0,0 +1,22 @@
|
||||
const { DataTypes } = require('sequelize');
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
const EventType = sequelize.define('EventType', {
|
||||
caption: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
}
|
||||
}, {
|
||||
tableName: 'event_types',
|
||||
timestamps: false
|
||||
});
|
||||
|
||||
EventType.associate = function(models) {
|
||||
EventType.hasMany(models.Event, {
|
||||
foreignKey: 'eventTypeId',
|
||||
as: 'events'
|
||||
});
|
||||
};
|
||||
|
||||
return EventType;
|
||||
};
|
||||
52
models/Institution.js
Normal file
52
models/Institution.js
Normal file
@@ -0,0 +1,52 @@
|
||||
const { DataTypes } = require('sequelize');
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
const Institution = sequelize.define('Institution', {
|
||||
name: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
street: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
},
|
||||
zipcode: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
},
|
||||
city: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
},
|
||||
phone: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
},
|
||||
fax: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
},
|
||||
email: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
}
|
||||
}, {
|
||||
tableName: 'institutions',
|
||||
timestamps: false
|
||||
});
|
||||
|
||||
Institution.associate = function(models) {
|
||||
Institution.belongsToMany(models.ContactPerson, {
|
||||
through: models.InstitutionContactPerson,
|
||||
foreignKey: 'institution_id',
|
||||
otherKey: 'contact_person_id',
|
||||
as: 'contactPersons'
|
||||
});
|
||||
Institution.hasMany(models.Event, {
|
||||
foreignKey: 'institution_id',
|
||||
as: 'events'
|
||||
});
|
||||
};
|
||||
|
||||
return Institution;
|
||||
};
|
||||
29
models/InstitutionContactPerson.js
Normal file
29
models/InstitutionContactPerson.js
Normal file
@@ -0,0 +1,29 @@
|
||||
const { DataTypes } = require('sequelize');
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
const InstitutionContactPerson = sequelize.define('InstitutionContactPerson', {
|
||||
institution_id: {
|
||||
type: DataTypes.INTEGER,
|
||||
references: {
|
||||
model: 'Institution',
|
||||
key: 'id'
|
||||
},
|
||||
onUpdate: 'CASCADE',
|
||||
onDelete: 'CASCADE'
|
||||
},
|
||||
contact_person_id: {
|
||||
type: DataTypes.INTEGER,
|
||||
references: {
|
||||
model: 'ContactPerson',
|
||||
key: 'id'
|
||||
},
|
||||
onUpdate: 'CASCADE',
|
||||
onDelete: 'CASCADE'
|
||||
}
|
||||
}, {
|
||||
tableName: 'InstitutionContactPerson',
|
||||
timestamps: false
|
||||
});
|
||||
|
||||
return InstitutionContactPerson;
|
||||
};
|
||||
49
models/MenuItem.js
Normal file
49
models/MenuItem.js
Normal file
@@ -0,0 +1,49 @@
|
||||
const { DataTypes } = require('sequelize');
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
const MenuItem = sequelize.define('MenuItem', {
|
||||
name: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
link: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
component: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
show_in_menu: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
allowNull: false,
|
||||
defaultValue: true
|
||||
},
|
||||
requires_auth: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
allowNull: false,
|
||||
defaultValue: false
|
||||
},
|
||||
parent_id: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: true
|
||||
},
|
||||
order_id: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
defaultValue: 0
|
||||
}
|
||||
}, {
|
||||
tableName: 'menu_items',
|
||||
timestamps: false
|
||||
});
|
||||
|
||||
MenuItem.associate = function(models) {
|
||||
MenuItem.hasMany(models.MenuItem, {
|
||||
foreignKey: 'parent_id',
|
||||
as: 'submenu'
|
||||
});
|
||||
};
|
||||
|
||||
return MenuItem;
|
||||
};
|
||||
25
models/Page.js
Normal file
25
models/Page.js
Normal file
@@ -0,0 +1,25 @@
|
||||
// models/Page.js
|
||||
const { DataTypes } = require('sequelize');
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
const Page = sequelize.define('Page', {
|
||||
link: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false,
|
||||
unique: true
|
||||
},
|
||||
name: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
content: {
|
||||
type: DataTypes.TEXT,
|
||||
allowNull: true
|
||||
}
|
||||
}, {
|
||||
tableName: 'pages',
|
||||
timestamps: true
|
||||
});
|
||||
|
||||
return Page;
|
||||
};
|
||||
24
models/Position.js
Normal file
24
models/Position.js
Normal file
@@ -0,0 +1,24 @@
|
||||
const { DataTypes } = require('sequelize');
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
const Position = sequelize.define('Position', {
|
||||
caption: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
}
|
||||
}, {
|
||||
tableName: 'positions',
|
||||
timestamps: false
|
||||
});
|
||||
|
||||
Position.associate = function(models) {
|
||||
Position.belongsToMany(models.ContactPerson, {
|
||||
through: models.ContactPersonPosition,
|
||||
foreignKey: 'position_id',
|
||||
otherKey: 'contact_person_id',
|
||||
as: 'contactPersons'
|
||||
});
|
||||
};
|
||||
|
||||
return Position;
|
||||
};
|
||||
29
models/User.js
Normal file
29
models/User.js
Normal file
@@ -0,0 +1,29 @@
|
||||
const { DataTypes } = require('sequelize');
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
const User = sequelize.define('User', {
|
||||
name: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
email: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false,
|
||||
unique: true
|
||||
},
|
||||
password: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
active: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
defaultValue: false
|
||||
}
|
||||
}, {
|
||||
timestamps: true,
|
||||
createdAt: 'created_at',
|
||||
updatedAt: false
|
||||
});
|
||||
|
||||
return User;
|
||||
};
|
||||
67
models/Worship.js
Normal file
67
models/Worship.js
Normal file
@@ -0,0 +1,67 @@
|
||||
const { DataTypes } = require('sequelize');
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
const Worship = sequelize.define('Worship', {
|
||||
eventPlaceId: {
|
||||
type: DataTypes.INTEGER,
|
||||
references: {
|
||||
model: 'EventPlace',
|
||||
key: 'id'
|
||||
},
|
||||
onUpdate: 'CASCADE',
|
||||
onDelete: 'SET NULL'
|
||||
},
|
||||
date: {
|
||||
type: DataTypes.DATE,
|
||||
allowNull: false
|
||||
},
|
||||
time: {
|
||||
type: DataTypes.TIME,
|
||||
allowNull: false
|
||||
},
|
||||
title: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
organizer: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
},
|
||||
collection: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
},
|
||||
address: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
},
|
||||
selfInformation: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
defaultValue: false
|
||||
},
|
||||
highlightTime: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
defaultValue: false
|
||||
},
|
||||
neighborInvitation: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
defaultValue: false
|
||||
},
|
||||
introLine: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
}
|
||||
}, {
|
||||
tableName: 'worships',
|
||||
timestamps: true
|
||||
});
|
||||
|
||||
Worship.associate = function(models) {
|
||||
Worship.belongsTo(models.EventPlace, {
|
||||
foreignKey: 'eventPlaceId',
|
||||
as: 'eventPlace'
|
||||
});
|
||||
};
|
||||
|
||||
return Worship;
|
||||
};
|
||||
64
models/event.js
Normal file
64
models/event.js
Normal file
@@ -0,0 +1,64 @@
|
||||
const { DataTypes } = require('sequelize');
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
const Event = sequelize.define('Event', {
|
||||
uniqueId: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
},
|
||||
eventTypeId: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: true
|
||||
},
|
||||
eventPlaceId: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: true
|
||||
},
|
||||
name: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
},
|
||||
date: {
|
||||
type: DataTypes.DATE,
|
||||
allowNull: true
|
||||
},
|
||||
time: {
|
||||
type: DataTypes.TIME,
|
||||
allowNull: true
|
||||
},
|
||||
endTime: {
|
||||
type: DataTypes.TIME,
|
||||
allowNull: true
|
||||
},
|
||||
dayOfWeek: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: true
|
||||
},
|
||||
description: {
|
||||
type: DataTypes.TEXT,
|
||||
allowNull: true
|
||||
}
|
||||
}, {
|
||||
tableName: 'events',
|
||||
timestamps: true
|
||||
});
|
||||
|
||||
Event.associate = function(models) {
|
||||
Event.belongsTo(models.Institution, {
|
||||
foreignKey: 'institution_id',
|
||||
as: 'institution'
|
||||
});
|
||||
Event.belongsTo(models.EventPlace, {
|
||||
foreignKey: 'event_place_id',
|
||||
as: 'eventPlace'
|
||||
});
|
||||
Event.belongsToMany(models.ContactPerson, {
|
||||
through: 'EventContactPerson',
|
||||
foreignKey: 'event_id',
|
||||
otherKey: 'contact_person_id',
|
||||
as: 'contactPersons'
|
||||
});
|
||||
};
|
||||
|
||||
return Event;
|
||||
};
|
||||
29
models/eventcontactperson.js
Normal file
29
models/eventcontactperson.js
Normal file
@@ -0,0 +1,29 @@
|
||||
const { DataTypes } = require('sequelize');
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
const EventContactPerson = sequelize.define('EventContactPerson', {
|
||||
event_id: {
|
||||
type: DataTypes.INTEGER,
|
||||
references: {
|
||||
model: 'Event',
|
||||
key: 'id'
|
||||
},
|
||||
onUpdate: 'CASCADE',
|
||||
onDelete: 'CASCADE'
|
||||
},
|
||||
contact_person_id: {
|
||||
type: DataTypes.INTEGER,
|
||||
references: {
|
||||
model: 'ContactPerson',
|
||||
key: 'id'
|
||||
},
|
||||
onUpdate: 'CASCADE',
|
||||
onDelete: 'CASCADE'
|
||||
}
|
||||
}, {
|
||||
tableName: 'EventContactPersons',
|
||||
timestamps: false
|
||||
});
|
||||
|
||||
return EventContactPerson;
|
||||
};
|
||||
42
models/index.js
Normal file
42
models/index.js
Normal file
@@ -0,0 +1,42 @@
|
||||
'use strict';
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const Sequelize = require('sequelize');
|
||||
const basename = path.basename(__filename);
|
||||
const env = process.env.NODE_ENV || 'development';
|
||||
const config = require(__dirname + '/../config/config.json')[env];
|
||||
const db = {};
|
||||
|
||||
let sequelize;
|
||||
if (config.use_env_variable) {
|
||||
sequelize = new Sequelize(process.env[config.use_env_variable], config);
|
||||
} else {
|
||||
sequelize = new Sequelize(config.database, config.username, config.password, config);
|
||||
}
|
||||
|
||||
fs
|
||||
.readdirSync(__dirname)
|
||||
.filter(file => {
|
||||
return (
|
||||
file.indexOf('.') !== 0 &&
|
||||
file !== basename &&
|
||||
file.slice(-3) === '.js' &&
|
||||
file.indexOf('.test.js') === -1
|
||||
);
|
||||
})
|
||||
.forEach(file => {
|
||||
const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes);
|
||||
db[model.name] = model;
|
||||
});
|
||||
|
||||
Object.keys(db).forEach(modelName => {
|
||||
if (db[modelName].associate) {
|
||||
db[modelName].associate(db);
|
||||
}
|
||||
});
|
||||
|
||||
db.sequelize = sequelize;
|
||||
db.Sequelize = Sequelize;
|
||||
|
||||
module.exports = db;
|
||||
Reference in New Issue
Block a user