ÿØÿà JFIF ` ` ÿþ
|
Server : Apache System : Linux cloud.heroica.com.br 4.18.0-553.36.1.el8_10.x86_64 #1 SMP Wed Jan 22 03:07:54 EST 2025 x86_64 User : farolpborg ( 1053) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /var/www/node_services/apicentralquestoes/src/database/migrations/ |
Upload File : |
"use strict";
module.exports = {
async up(queryInterface, Sequelize) {
await queryInterface.createTable("planos", {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER,
},
nome: {
type: Sequelize.STRING,
},
preco: {
type: Sequelize.DECIMAL(10, 2),
},
descricao: {
type: Sequelize.TEXT,
},
createdAt: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn("NOW"),
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn("NOW"),
},
});
await queryInterface.createTable("faculdades", {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER,
},
nome: {
type: Sequelize.STRING,
},
pais: {
type: Sequelize.STRING,
},
});
await queryInterface.createTable("users", {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER,
},
nome: {
type: Sequelize.STRING,
},
email: {
type: Sequelize.STRING,
},
telefone: {
type: Sequelize.STRING,
},
segmento: {
type: Sequelize.ENUM("Direito", "Medicina"),
},
senha: {
type: Sequelize.STRING,
},
cpf: {
type: Sequelize.STRING,
},
data_nascimento: {
type: Sequelize.DATE,
},
faculdade_nome: {
type: Sequelize.STRING,
field: "faculdade_nome",
},
faculdade_id: {
type: Sequelize.INTEGER,
field: "faculdade_id",
references: {
model: "faculdades",
key: "id",
},
onUpdate: "CASCADE",
onDelete: "SET NULL",
},
created_at: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn("NOW"),
},
updated_at: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn("NOW"),
},
});
await queryInterface.createTable("provas", {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER,
},
year: {
type: Sequelize.STRING,
allowNull: false,
},
edition: {
type: Sequelize.STRING,
allowNull: false,
},
total_questions: {
type: Sequelize.INTEGER,
allowNull: false,
},
questions: {
type: Sequelize.JSON,
allowNull: false,
},
segment: {
type: Sequelize.ENUM("Direito", "Medicina"),
allowNull: false,
},
createdAt: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn("NOW"),
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn("NOW"),
},
});
await queryInterface.createTable("questoes", {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER,
},
enunciado: {
type: Sequelize.TEXT,
},
alternativas: {
type: Sequelize.JSON,
},
resposta: {
type: Sequelize.TEXT,
},
segmento: {
type: Sequelize.ENUM("Direito", "Medicina"),
},
assunto: {
type: Sequelize.STRING,
},
disciplina: {
type: Sequelize.STRING,
},
provas: {
type: Sequelize.STRING,
},
ano: {
type: Sequelize.INTEGER,
},
createdAt: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn("NOW"),
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn("NOW"),
},
});
await queryInterface.createTable("assinaturas", {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER,
},
user_id: {
type: Sequelize.INTEGER,
allowNull: false,
references: {
model: "users",
key: "id",
},
onUpdate: "CASCADE",
onDelete: "CASCADE",
},
plano_id: {
type: Sequelize.INTEGER,
allowNull: false,
references: {
model: "planos",
key: "id",
},
onUpdate: "CASCADE",
onDelete: "CASCADE",
},
expires_at: {
type: Sequelize.DATE,
allowNull: false,
},
status: {
type: Sequelize.STRING,
allowNull: false,
defaultValue: "active",
},
created_at: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn("NOW"),
},
updated_at: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn("NOW"),
},
});
await queryInterface.createTable("comentarios", {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER,
},
comentario: {
type: Sequelize.TEXT,
},
questao_id: {
type: Sequelize.INTEGER,
references: {
model: "questoes",
key: "id",
},
onUpdate: "CASCADE",
onDelete: "CASCADE",
},
user_id: {
type: Sequelize.INTEGER,
references: {
model: "users",
key: "id",
},
onUpdate: "CASCADE",
onDelete: "CASCADE",
},
createdAt: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn("NOW"),
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn("NOW"),
},
});
await queryInterface.createTable("desempenhos", {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER,
},
disciplina: {
type: Sequelize.STRING,
},
total_questoes: {
type: Sequelize.INTEGER,
},
total_acertos: {
type: Sequelize.INTEGER,
},
user_id: {
type: Sequelize.INTEGER,
references: {
model: "users",
key: "id",
},
onUpdate: "CASCADE",
onDelete: "CASCADE",
},
questao_id: {
type: Sequelize.INTEGER,
references: {
model: "questoes",
key: "id",
},
onUpdate: "CASCADE",
onDelete: "CASCADE",
},
createdAt: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn("NOW"),
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn("NOW"),
},
});
await queryInterface.createTable("progresso_provas", {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER,
},
user_id: {
type: Sequelize.INTEGER,
allowNull: false,
references: {
model: "users",
key: "id",
},
onUpdate: "CASCADE",
onDelete: "CASCADE",
},
prova_id: {
type: Sequelize.INTEGER,
allowNull: false,
references: {
model: "provas",
key: "id",
},
onUpdate: "CASCADE",
onDelete: "CASCADE",
},
questoes_certas: {
type: Sequelize.INTEGER,
allowNull: false,
defaultValue: 0,
},
questoes_erradas: {
type: Sequelize.INTEGER,
allowNull: false,
defaultValue: 0,
},
questoes_detalhes: {
type: Sequelize.JSON,
allowNull: true,
},
createdAt: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn("NOW"),
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn("NOW"),
},
});
await queryInterface.createTable("respostas", {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER,
},
user_id: {
type: Sequelize.INTEGER,
references: {
model: "users",
key: "id",
},
onUpdate: "CASCADE",
onDelete: "CASCADE",
},
questao_id: {
type: Sequelize.INTEGER,
references: {
model: "questoes",
key: "id",
},
onUpdate: "CASCADE",
onDelete: "CASCADE",
},
disciplina: {
type: Sequelize.STRING,
},
correta: {
type: Sequelize.BOOLEAN,
},
createdAt: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn("NOW"),
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE,
defaultValue: Sequelize.fn("NOW"),
},
});
},
async down(queryInterface, Sequelize) {
await queryInterface.dropTable("respostas");
await queryInterface.dropTable("progresso_provas");
await queryInterface.dropTable("desempenhos");
await queryInterface.dropTable("comentarios");
await queryInterface.dropTable("assinaturas");
await queryInterface.dropTable("questoes");
await queryInterface.dropTable("provas");
await queryInterface.dropTable("users");
await queryInterface.dropTable("faculdades");
await queryInterface.dropTable("planos");
},
};