Archived
1
0
This commit is contained in:
FutureX
2022-06-03 00:29:39 +03:00
commit 6c4ed3dcbe
15 changed files with 955 additions and 0 deletions

30
sequelize/extra-setup.js Normal file
View 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
View 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;

View 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");
};

View 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");
};

View 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" }],
},
],
}
);
};

View 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" }],
},
],
}
);
};

View 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" }],
},
],
}
);
};