init
This commit is contained in:
30
sequelize/extra-setup.js
Normal file
30
sequelize/extra-setup.js
Normal file
@@ -0,0 +1,30 @@
|
||||
function applyExtraSetup(sequelize) {
|
||||
const { lessons, students, teachers, lesson_students, lesson_teachers } = sequelize.models;
|
||||
|
||||
lessons.belongsToMany(students, {
|
||||
as: "students",
|
||||
through: lesson_students,
|
||||
foreignKey: "lesson_id",
|
||||
otherKey: "student_id",
|
||||
});
|
||||
lessons.belongsToMany(teachers, {
|
||||
as: "teachers",
|
||||
through: lesson_teachers,
|
||||
foreignKey: "lesson_id",
|
||||
otherKey: "teacher_id",
|
||||
});
|
||||
students.belongsToMany(lessons, {
|
||||
as: "lessons",
|
||||
through: lesson_students,
|
||||
foreignKey: "student_id",
|
||||
otherKey: "lesson_id",
|
||||
});
|
||||
teachers.belongsToMany(lessons, {
|
||||
as: "lessons",
|
||||
through: lesson_teachers,
|
||||
foreignKey: "teacher_id",
|
||||
otherKey: "lesson_id",
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = { applyExtraSetup };
|
||||
32
sequelize/index.js
Normal file
32
sequelize/index.js
Normal file
@@ -0,0 +1,32 @@
|
||||
const { Sequelize } = require("sequelize");
|
||||
const { applyExtraSetup } = require("./extra-setup");
|
||||
require("dotenv").config();
|
||||
|
||||
const sequelize = new Sequelize(process.env.DATABASE_URL, {
|
||||
logging: false,
|
||||
dialectOptions: {
|
||||
ssl: {
|
||||
require: true,
|
||||
rejectUnauthorized: false,
|
||||
},
|
||||
define: {
|
||||
timestamps: false,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const modelDefiners = [
|
||||
require("./models/lessons.model"),
|
||||
require("./models/students.model"),
|
||||
require("./models/teachers.model"),
|
||||
require("./models/lesson_students.model"),
|
||||
require("./models/lesson_teachers.model"),
|
||||
];
|
||||
|
||||
for (const modelDefiner of modelDefiners) {
|
||||
modelDefiner(sequelize);
|
||||
}
|
||||
|
||||
applyExtraSetup(sequelize);
|
||||
|
||||
module.exports = sequelize;
|
||||
21
sequelize/models/lesson_students.model.js
Normal file
21
sequelize/models/lesson_students.model.js
Normal file
@@ -0,0 +1,21 @@
|
||||
const { DataTypes } = require("sequelize");
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
let lesson_students = sequelize.define(
|
||||
"lesson_students",
|
||||
{
|
||||
visit: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
allowNull: true,
|
||||
defaultValue: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
sequelize,
|
||||
tableName: "lesson_students",
|
||||
schema: "public",
|
||||
timestamps: false,
|
||||
}
|
||||
);
|
||||
lesson_students.removeAttribute("id");
|
||||
};
|
||||
15
sequelize/models/lesson_teachers.model.js
Normal file
15
sequelize/models/lesson_teachers.model.js
Normal file
@@ -0,0 +1,15 @@
|
||||
const { DataTypes } = require("sequelize");
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
let lesson_teachers = sequelize.define(
|
||||
"lesson_teachers",
|
||||
{},
|
||||
{
|
||||
sequelize,
|
||||
tableName: "lesson_teachers",
|
||||
schema: "public",
|
||||
timestamps: false,
|
||||
}
|
||||
);
|
||||
lesson_teachers.removeAttribute("id");
|
||||
};
|
||||
41
sequelize/models/lessons.model.js
Normal file
41
sequelize/models/lessons.model.js
Normal file
@@ -0,0 +1,41 @@
|
||||
const { DataTypes } = require("sequelize");
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
sequelize.define(
|
||||
"lessons",
|
||||
{
|
||||
id: {
|
||||
autoIncrement: true,
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
primaryKey: true,
|
||||
},
|
||||
date: {
|
||||
type: DataTypes.DATEONLY,
|
||||
allowNull: false,
|
||||
},
|
||||
title: {
|
||||
type: DataTypes.STRING(100),
|
||||
allowNull: true,
|
||||
},
|
||||
status: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: true,
|
||||
defaultValue: 0,
|
||||
},
|
||||
},
|
||||
{
|
||||
sequelize,
|
||||
tableName: "lessons",
|
||||
schema: "public",
|
||||
timestamps: false,
|
||||
indexes: [
|
||||
{
|
||||
name: "lessons_pkey",
|
||||
unique: true,
|
||||
fields: [{ name: "id" }],
|
||||
},
|
||||
],
|
||||
}
|
||||
);
|
||||
};
|
||||
32
sequelize/models/students.model.js
Normal file
32
sequelize/models/students.model.js
Normal file
@@ -0,0 +1,32 @@
|
||||
const { DataTypes } = require("sequelize");
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
sequelize.define(
|
||||
"students",
|
||||
{
|
||||
id: {
|
||||
autoIncrement: true,
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
primaryKey: true,
|
||||
},
|
||||
name: {
|
||||
type: DataTypes.STRING(10),
|
||||
allowNull: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
sequelize,
|
||||
tableName: "students",
|
||||
schema: "public",
|
||||
timestamps: false,
|
||||
indexes: [
|
||||
{
|
||||
name: "students_pkey",
|
||||
unique: true,
|
||||
fields: [{ name: "id" }],
|
||||
},
|
||||
],
|
||||
}
|
||||
);
|
||||
};
|
||||
32
sequelize/models/teachers.model.js
Normal file
32
sequelize/models/teachers.model.js
Normal file
@@ -0,0 +1,32 @@
|
||||
const { DataTypes } = require("sequelize");
|
||||
|
||||
module.exports = (sequelize) => {
|
||||
sequelize.define(
|
||||
"teachers",
|
||||
{
|
||||
id: {
|
||||
autoIncrement: true,
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
primaryKey: true,
|
||||
},
|
||||
name: {
|
||||
type: DataTypes.STRING(10),
|
||||
allowNull: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
sequelize,
|
||||
tableName: "teachers",
|
||||
schema: "public",
|
||||
timestamps: false,
|
||||
indexes: [
|
||||
{
|
||||
name: "teachers_pkey",
|
||||
unique: true,
|
||||
fields: [{ name: "id" }],
|
||||
},
|
||||
],
|
||||
}
|
||||
);
|
||||
};
|
||||
Reference in New Issue
Block a user