Forráskód Böngészése

where did these fuckers come from

Matthew Trejo 4 hónapja
szülő
commit
3567f4fe2f
3 módosított fájl, 0 hozzáadás és 458 törlés
  1. 0 11
      src/lib/db/index.js
  2. 0 214
      src/lib/db/schema.js
  3. 0 233
      src/lib/db/seed.js

+ 0 - 11
src/lib/db/index.js

@@ -1,11 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.db = void 0;
-var postgres_js_1 = require("drizzle-orm/postgres-js");
-var postgres_1 = require("postgres");
-var schema = require("./schema");
-if (!process.env.DATABASE_URL) {
-    throw new Error('DATABASE_URL is not defined');
-}
-var client = (0, postgres_1.default)(process.env.DATABASE_URL);
-exports.db = (0, postgres_js_1.drizzle)(client, { schema: schema });

+ 0 - 214
src/lib/db/schema.js

@@ -1,214 +0,0 @@
-"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.attendanceRelations = exports.studentEnrollmentsRelations = exports.teacherAssignmentsRelations = exports.sectionsRelations = exports.classesRelations = exports.partialsRelations = exports.periodsRelations = exports.usersRelations = exports.attendance = exports.studentEnrollments = exports.teacherAssignments = exports.sections = exports.classes = exports.partials = exports.periods = exports.users = exports.like = exports.desc = exports.lte = exports.gte = exports.ne = exports.and = exports.eq = void 0;
-var pg_core_1 = require("drizzle-orm/pg-core");
-var drizzle_orm_1 = require("drizzle-orm");
-var drizzle_orm_2 = require("drizzle-orm");
-Object.defineProperty(exports, "eq", { enumerable: true, get: function () { return drizzle_orm_2.eq; } });
-Object.defineProperty(exports, "and", { enumerable: true, get: function () { return drizzle_orm_2.and; } });
-Object.defineProperty(exports, "ne", { enumerable: true, get: function () { return drizzle_orm_2.ne; } });
-Object.defineProperty(exports, "gte", { enumerable: true, get: function () { return drizzle_orm_2.gte; } });
-Object.defineProperty(exports, "lte", { enumerable: true, get: function () { return drizzle_orm_2.lte; } });
-Object.defineProperty(exports, "desc", { enumerable: true, get: function () { return drizzle_orm_2.desc; } });
-Object.defineProperty(exports, "like", { enumerable: true, get: function () { return drizzle_orm_2.like; } });
-// Tabla de usuarios (administradores, docentes, estudiantes)
-exports.users = (0, pg_core_1.pgTable)('users', {
-    id: (0, pg_core_1.uuid)('id').defaultRandom().primaryKey(),
-    email: (0, pg_core_1.varchar)('email', { length: 255 }).notNull().unique(),
-    password: (0, pg_core_1.text)('password').notNull(),
-    firstName: (0, pg_core_1.varchar)('first_name', { length: 100 }).notNull(),
-    lastName: (0, pg_core_1.varchar)('last_name', { length: 100 }).notNull(),
-    cedula: (0, pg_core_1.varchar)('cedula', { length: 20 }).notNull().unique(),
-    phone: (0, pg_core_1.varchar)('phone', { length: 20 }),
-    role: (0, pg_core_1.varchar)('role', { length: 20 }).notNull(), // 'admin', 'teacher', 'student'
-    admissionNumber: (0, pg_core_1.varchar)('admission_number', { length: 50 }), // Solo para estudiantes
-    isActive: (0, pg_core_1.boolean)('is_active').default(true),
-    createdAt: (0, pg_core_1.timestamp)('created_at').defaultNow(),
-    updatedAt: (0, pg_core_1.timestamp)('updated_at').defaultNow(),
-});
-// Tabla de periodos
-exports.periods = (0, pg_core_1.pgTable)('periods', {
-    id: (0, pg_core_1.uuid)('id').defaultRandom().primaryKey(),
-    name: (0, pg_core_1.varchar)('name', { length: 100 }).notNull(),
-    startDate: (0, pg_core_1.date)('start_date').notNull(),
-    endDate: (0, pg_core_1.date)('end_date').notNull(),
-    isActive: (0, pg_core_1.boolean)('is_active').default(true),
-    createdAt: (0, pg_core_1.timestamp)('created_at').defaultNow(),
-    updatedAt: (0, pg_core_1.timestamp)('updated_at').defaultNow(),
-});
-// Tabla de parciales
-exports.partials = (0, pg_core_1.pgTable)('partials', {
-    id: (0, pg_core_1.uuid)('id').defaultRandom().primaryKey(),
-    name: (0, pg_core_1.varchar)('name', { length: 100 }).notNull(),
-    periodId: (0, pg_core_1.uuid)('period_id').references(function () { return exports.periods.id; }),
-    startDate: (0, pg_core_1.date)('start_date').notNull(),
-    endDate: (0, pg_core_1.date)('end_date').notNull(),
-    isActive: (0, pg_core_1.boolean)('is_active').default(true),
-    createdAt: (0, pg_core_1.timestamp)('created_at').defaultNow(),
-    updatedAt: (0, pg_core_1.timestamp)('updated_at').defaultNow(),
-});
-// Tabla de clases/materias
-exports.classes = (0, pg_core_1.pgTable)('classes', {
-    id: (0, pg_core_1.uuid)('id').defaultRandom().primaryKey(),
-    name: (0, pg_core_1.varchar)('name', { length: 100 }).notNull(),
-    code: (0, pg_core_1.varchar)('code', { length: 20 }).notNull().unique(),
-    credits: (0, pg_core_1.integer)('credits').notNull(),
-    description: (0, pg_core_1.text)('description'),
-    periodId: (0, pg_core_1.uuid)('period_id').references(function () { return exports.periods.id; }),
-    isActive: (0, pg_core_1.boolean)('is_active').default(true),
-    createdAt: (0, pg_core_1.timestamp)('created_at').defaultNow(),
-    updatedAt: (0, pg_core_1.timestamp)('updated_at').defaultNow(),
-});
-// Tabla de paralelos/secciones
-exports.sections = (0, pg_core_1.pgTable)('sections', {
-    id: (0, pg_core_1.uuid)('id').defaultRandom().primaryKey(),
-    name: (0, pg_core_1.varchar)('name', { length: 50 }).notNull(),
-    classId: (0, pg_core_1.uuid)('class_id').references(function () { return exports.classes.id; }),
-    maxStudents: (0, pg_core_1.integer)('max_students').notNull(),
-    isActive: (0, pg_core_1.boolean)('is_active').default(true),
-    createdAt: (0, pg_core_1.timestamp)('created_at').defaultNow(),
-    updatedAt: (0, pg_core_1.timestamp)('updated_at').defaultNow(),
-});
-// Tabla de asignaciones de docentes a clases/secciones
-exports.teacherAssignments = (0, pg_core_1.pgTable)('teacher_assignments', {
-    id: (0, pg_core_1.uuid)('id').defaultRandom().primaryKey(),
-    teacherId: (0, pg_core_1.uuid)('teacher_id').references(function () { return exports.users.id; }),
-    classId: (0, pg_core_1.uuid)('class_id').references(function () { return exports.classes.id; }),
-    sectionId: (0, pg_core_1.uuid)('section_id').references(function () { return exports.sections.id; }),
-    isActive: (0, pg_core_1.boolean)('is_active').default(true),
-    createdAt: (0, pg_core_1.timestamp)('created_at').defaultNow(),
-});
-// Tabla de inscripciones de estudiantes
-exports.studentEnrollments = (0, pg_core_1.pgTable)('student_enrollments', {
-    id: (0, pg_core_1.uuid)('id').defaultRandom().primaryKey(),
-    studentId: (0, pg_core_1.uuid)('student_id').references(function () { return exports.users.id; }),
-    classId: (0, pg_core_1.uuid)('class_id').references(function () { return exports.classes.id; }),
-    sectionId: (0, pg_core_1.uuid)('section_id').references(function () { return exports.sections.id; }),
-    isActive: (0, pg_core_1.boolean)('is_active').default(true),
-    createdAt: (0, pg_core_1.timestamp)('created_at').defaultNow(),
-});
-// Tabla de asistencia
-exports.attendance = (0, pg_core_1.pgTable)('attendance', {
-    id: (0, pg_core_1.uuid)('id').defaultRandom().primaryKey(),
-    studentId: (0, pg_core_1.uuid)('student_id').references(function () { return exports.users.id; }),
-    classId: (0, pg_core_1.uuid)('class_id').references(function () { return exports.classes.id; }),
-    sectionId: (0, pg_core_1.uuid)('section_id').references(function () { return exports.sections.id; }),
-    teacherId: (0, pg_core_1.uuid)('teacher_id').references(function () { return exports.users.id; }),
-    partialId: (0, pg_core_1.uuid)('partial_id').references(function () { return exports.partials.id; }),
-    date: (0, pg_core_1.date)('date').notNull(),
-    status: (0, pg_core_1.varchar)('status', { length: 20 }).notNull(), // 'present', 'absent', 'justified'
-    reason: (0, pg_core_1.text)('reason'), // Motivo de falta o justificación
-    createdAt: (0, pg_core_1.timestamp)('created_at').defaultNow(),
-});
-// Relaciones
-exports.usersRelations = (0, drizzle_orm_1.relations)(exports.users, function (_a) {
-    var many = _a.many;
-    return ({
-        teacherAssignments: many(exports.teacherAssignments),
-        studentEnrollments: many(exports.studentEnrollments),
-        attendanceAsStudent: many(exports.attendance, { relationName: 'studentAttendance' }),
-        attendanceAsTeacher: many(exports.attendance, { relationName: 'teacherAttendance' }),
-    });
-});
-exports.periodsRelations = (0, drizzle_orm_1.relations)(exports.periods, function (_a) {
-    var many = _a.many;
-    return ({
-        partials: many(exports.partials),
-        sections: many(exports.sections),
-    });
-});
-exports.partialsRelations = (0, drizzle_orm_1.relations)(exports.partials, function (_a) {
-    var one = _a.one;
-    return ({
-        period: one(exports.periods, {
-            fields: [exports.partials.periodId],
-            references: [exports.periods.id],
-        }),
-    });
-});
-exports.classesRelations = (0, drizzle_orm_1.relations)(exports.classes, function (_a) {
-    var one = _a.one, many = _a.many;
-    return ({
-        period: one(exports.periods, {
-            fields: [exports.classes.periodId],
-            references: [exports.periods.id],
-        }),
-        sections: many(exports.sections),
-        teacherAssignments: many(exports.teacherAssignments),
-        studentEnrollments: many(exports.studentEnrollments),
-        attendance: many(exports.attendance),
-    });
-});
-exports.sectionsRelations = (0, drizzle_orm_1.relations)(exports.sections, function (_a) {
-    var one = _a.one, many = _a.many;
-    return ({
-        class: one(exports.classes, {
-            fields: [exports.sections.classId],
-            references: [exports.classes.id],
-        }),
-        teacherAssignments: many(exports.teacherAssignments),
-        studentEnrollments: many(exports.studentEnrollments),
-        attendance: many(exports.attendance),
-    });
-});
-exports.teacherAssignmentsRelations = (0, drizzle_orm_1.relations)(exports.teacherAssignments, function (_a) {
-    var one = _a.one;
-    return ({
-        teacher: one(exports.users, {
-            fields: [exports.teacherAssignments.teacherId],
-            references: [exports.users.id],
-        }),
-        class: one(exports.classes, {
-            fields: [exports.teacherAssignments.classId],
-            references: [exports.classes.id],
-        }),
-        section: one(exports.sections, {
-            fields: [exports.teacherAssignments.sectionId],
-            references: [exports.sections.id],
-        }),
-    });
-});
-exports.studentEnrollmentsRelations = (0, drizzle_orm_1.relations)(exports.studentEnrollments, function (_a) {
-    var one = _a.one;
-    return ({
-        student: one(exports.users, {
-            fields: [exports.studentEnrollments.studentId],
-            references: [exports.users.id],
-        }),
-        class: one(exports.classes, {
-            fields: [exports.studentEnrollments.classId],
-            references: [exports.classes.id],
-        }),
-        section: one(exports.sections, {
-            fields: [exports.studentEnrollments.sectionId],
-            references: [exports.sections.id],
-        }),
-    });
-});
-exports.attendanceRelations = (0, drizzle_orm_1.relations)(exports.attendance, function (_a) {
-    var one = _a.one;
-    return ({
-        student: one(exports.users, {
-            fields: [exports.attendance.studentId],
-            references: [exports.users.id],
-            relationName: 'studentAttendance',
-        }),
-        teacher: one(exports.users, {
-            fields: [exports.attendance.teacherId],
-            references: [exports.users.id],
-            relationName: 'teacherAttendance',
-        }),
-        class: one(exports.classes, {
-            fields: [exports.attendance.classId],
-            references: [exports.classes.id],
-        }),
-        section: one(exports.sections, {
-            fields: [exports.attendance.sectionId],
-            references: [exports.sections.id],
-        }),
-        partial: one(exports.partials, {
-            fields: [exports.attendance.partialId],
-            references: [exports.partials.id],
-        }),
-    });
-});

+ 0 - 233
src/lib/db/seed.js

@@ -1,233 +0,0 @@
-"use strict";
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
-    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-    return new (P || (P = Promise))(function (resolve, reject) {
-        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-        step((generator = generator.apply(thisArg, _arguments || [])).next());
-    });
-};
-var __generator = (this && this.__generator) || function (thisArg, body) {
-    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
-    return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-    function verb(n) { return function (v) { return step([n, v]); }; }
-    function step(op) {
-        if (f) throw new TypeError("Generator is already executing.");
-        while (g && (g = 0, op[0] && (_ = 0)), _) try {
-            if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
-            if (y = 0, t) op = [op[0] & 2, t.value];
-            switch (op[0]) {
-                case 0: case 1: t = op; break;
-                case 4: _.label++; return { value: op[1], done: false };
-                case 5: _.label++; y = op[1]; op = [0]; continue;
-                case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                default:
-                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                    if (t[2]) _.ops.pop();
-                    _.trys.pop(); continue;
-            }
-            op = body.call(thisArg, _);
-        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-    }
-};
-Object.defineProperty(exports, "__esModule", { value: true });
-exports.seedDatabase = seedDatabase;
-var index_1 = require("./index");
-var schema_1 = require("./schema");
-var bcryptjs_1 = require("bcryptjs");
-function seedDatabase() {
-    return __awaiter(this, void 0, void 0, function () {
-        var hashedPassword, admin, period, partial1, partial2, class1, class2, section1A, section1B, section2A, teacherPassword, teacher, studentPassword, students, i, student, _i, _a, student, _b, _c, student, error_1;
-        return __generator(this, function (_d) {
-            switch (_d.label) {
-                case 0:
-                    _d.trys.push([0, 27, , 28]);
-                    console.log('🌱 Iniciando seed de la base de datos...');
-                    return [4 /*yield*/, bcryptjs_1.default.hash('admin123', 10)];
-                case 1:
-                    hashedPassword = _d.sent();
-                    return [4 /*yield*/, index_1.db.insert(schema_1.users).values({
-                            email: 'admin@universidad.edu',
-                            password: hashedPassword,
-                            firstName: 'Administrador',
-                            lastName: 'Sistema',
-                            cedula: '1234567890',
-                            phone: '0999999999',
-                            role: 'admin',
-                        }).returning()];
-                case 2:
-                    admin = (_d.sent())[0];
-                    return [4 /*yield*/, index_1.db.insert(schema_1.periods).values({
-                            name: '2024-2025',
-                            startDate: '2024-09-01',
-                            endDate: '2025-06-30',
-                        }).returning()];
-                case 3:
-                    period = (_d.sent())[0];
-                    return [4 /*yield*/, index_1.db.insert(schema_1.partials).values({
-                            name: 'Primer Parcial',
-                            periodId: period.id,
-                            startDate: '2024-09-01',
-                            endDate: '2024-11-15',
-                        }).returning()];
-                case 4:
-                    partial1 = (_d.sent())[0];
-                    return [4 /*yield*/, index_1.db.insert(schema_1.partials).values({
-                            name: 'Segundo Parcial',
-                            periodId: period.id,
-                            startDate: '2024-11-16',
-                            endDate: '2025-02-15',
-                        }).returning()];
-                case 5:
-                    partial2 = (_d.sent())[0];
-                    return [4 /*yield*/, index_1.db.insert(schema_1.classes).values({
-                            name: 'Programación I',
-                            code: 'PROG001',
-                            credits: 4,
-                            description: 'Introducción a la programación con fundamentos básicos',
-                        }).returning()];
-                case 6:
-                    class1 = (_d.sent())[0];
-                    return [4 /*yield*/, index_1.db.insert(schema_1.classes).values({
-                            name: 'Matemáticas I',
-                            code: 'MATH001',
-                            credits: 3,
-                            description: 'Fundamentos matemáticos para ingeniería',
-                        }).returning()];
-                case 7:
-                    class2 = (_d.sent())[0];
-                    return [4 /*yield*/, index_1.db.insert(schema_1.sections).values({
-                            name: 'A',
-                            classId: class1.id,
-                            maxStudents: 30,
-                        }).returning()];
-                case 8:
-                    section1A = (_d.sent())[0];
-                    return [4 /*yield*/, index_1.db.insert(schema_1.sections).values({
-                            name: 'B',
-                            classId: class1.id,
-                            maxStudents: 25,
-                        }).returning()];
-                case 9:
-                    section1B = (_d.sent())[0];
-                    return [4 /*yield*/, index_1.db.insert(schema_1.sections).values({
-                            name: 'A',
-                            classId: class2.id,
-                            maxStudents: 35,
-                        }).returning()];
-                case 10:
-                    section2A = (_d.sent())[0];
-                    return [4 /*yield*/, bcryptjs_1.default.hash('teacher123', 10)];
-                case 11:
-                    teacherPassword = _d.sent();
-                    return [4 /*yield*/, index_1.db.insert(schema_1.users).values({
-                            email: 'profesor@universidad.edu',
-                            password: teacherPassword,
-                            firstName: 'Juan',
-                            lastName: 'Pérez',
-                            cedula: '0987654321',
-                            phone: '0988888888',
-                            role: 'teacher',
-                        }).returning()];
-                case 12:
-                    teacher = (_d.sent())[0];
-                    // Asignar profesor a clases
-                    return [4 /*yield*/, index_1.db.insert(schema_1.teacherAssignments).values([
-                            {
-                                teacherId: teacher.id,
-                                classId: class1.id,
-                                sectionId: section1A.id,
-                            },
-                            {
-                                teacherId: teacher.id,
-                                classId: class1.id,
-                                sectionId: section1B.id,
-                            },
-                        ])];
-                case 13:
-                    // Asignar profesor a clases
-                    _d.sent();
-                    return [4 /*yield*/, bcryptjs_1.default.hash('student123', 10)];
-                case 14:
-                    studentPassword = _d.sent();
-                    students = [];
-                    i = 1;
-                    _d.label = 15;
-                case 15:
-                    if (!(i <= 5)) return [3 /*break*/, 18];
-                    return [4 /*yield*/, index_1.db.insert(schema_1.users).values({
-                            email: "estudiante".concat(i, "@universidad.edu"),
-                            password: studentPassword,
-                            firstName: "Estudiante",
-                            lastName: "".concat(i),
-                            cedula: "123456789".concat(i),
-                            phone: "099888888".concat(i),
-                            role: 'student',
-                            admissionNumber: "2024-".concat(String(i).padStart(4, '0')),
-                        }).returning()];
-                case 16:
-                    student = (_d.sent())[0];
-                    students.push(student);
-                    _d.label = 17;
-                case 17:
-                    i++;
-                    return [3 /*break*/, 15];
-                case 18:
-                    _i = 0, _a = students.slice(0, 3);
-                    _d.label = 19;
-                case 19:
-                    if (!(_i < _a.length)) return [3 /*break*/, 22];
-                    student = _a[_i];
-                    return [4 /*yield*/, index_1.db.insert(schema_1.studentEnrollments).values({
-                            studentId: student.id,
-                            classId: class1.id,
-                            sectionId: section1A.id,
-                        })];
-                case 20:
-                    _d.sent();
-                    _d.label = 21;
-                case 21:
-                    _i++;
-                    return [3 /*break*/, 19];
-                case 22:
-                    _b = 0, _c = students.slice(3, 5);
-                    _d.label = 23;
-                case 23:
-                    if (!(_b < _c.length)) return [3 /*break*/, 26];
-                    student = _c[_b];
-                    return [4 /*yield*/, index_1.db.insert(schema_1.studentEnrollments).values({
-                            studentId: student.id,
-                            classId: class1.id,
-                            sectionId: section1B.id,
-                        })];
-                case 24:
-                    _d.sent();
-                    _d.label = 25;
-                case 25:
-                    _b++;
-                    return [3 /*break*/, 23];
-                case 26:
-                    console.log('✅ Seed completado exitosamente!');
-                    console.log('👤 Admin: admin@universidad.edu / admin123');
-                    console.log('👨‍🏫 Profesor: profesor@universidad.edu / teacher123');
-                    console.log('👨‍🎓 Estudiantes: estudiante1@universidad.edu / student123 (hasta estudiante5)');
-                    return [3 /*break*/, 28];
-                case 27:
-                    error_1 = _d.sent();
-                    console.error('❌ Error durante el seed:', error_1);
-                    throw error_1;
-                case 28: return [2 /*return*/];
-            }
-        });
-    });
-}
-if (require.main === module) {
-    seedDatabase()
-        .then(function () { return process.exit(0); })
-        .catch(function () { return process.exit(1); });
-}