-
Notifications
You must be signed in to change notification settings - Fork 0
/
db-actions.js
56 lines (52 loc) · 1.56 KB
/
db-actions.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import { COURSE, PERSON, STUDENT, STUDENT_TO_COURSE, TEACHER } from "./tables.js";
import {randomCourses} from './data.js';
export async function defineTables(sequalize) {
const Person = sequalize.define(...PERSON);
const Student = sequalize.define(...STUDENT(Person));
const Teacher = sequalize.define(...TEACHER(Person));
const Course = sequalize.define(...COURSE(Teacher));
const StudentToCourse = sequalize.define(
...STUDENT_TO_COURSE(Student, Course)
);
await sequalize.sync();
return { Person, Student, Teacher, Course, StudentToCourse };
}
export async function createStudents({ students, Person, Student }) {
for (let student of students) {
let { stipend, ...studentPerson } = student;
await Person.create(studentPerson);
await Student.create({ stipend, personId: studentPerson.uuid });
}
}
export async function createTeachersCourses({
teachers,
Person,
Teacher,
Course,
}) {
for (let teacher of teachers) {
let { salary, course, ...teacherPerson } = teacher;
await Person.create(teacherPerson);
await Teacher.create({ salary, personId: teacherPerson.uuid });
let courseDB = await Course.create({
...course,
teacherId: teacherPerson.uuid,
});
course.id = courseDB.id;
}
}
export async function assignStudentsToCourses({
students,
teachers,
StudentToCourse,
}) {
for (let student of students) {
let courses = randomCourses(teachers);
for (let course of courses) {
await StudentToCourse.create({
studentId: student.uuid,
courseId: course.id,
});
}
}
}