Jelajahi Sumber

Add fast getters for students and teachers

Andrea Fazzi 6 tahun lalu
induk
melakukan
9305f7cd3d
3 mengubah file dengan 24 tambahan dan 2 penghapusan
  1. 2 2
      orm/mappings.go
  2. 8 0
      orm/student.go
  3. 14 0
      orm/teacher.go

+ 2 - 2
orm/mappings.go

@@ -3,7 +3,7 @@ package orm
 var (
 	Get map[string]GetFn = map[string]GetFn{
 		// Teacher
-		"/teachers":             GetTeachersAll,
+		"/teachers":             GetTeachersFast,
 		"/teachers/{id}":        GetTeacherAll,
 		"/teachers/{id}/update": GetTeacher,
 		"/teachers/add/":        GetNothing,
@@ -14,7 +14,7 @@ var (
 		"/api/teachers/add/":        GetNothing,
 
 		// Student
-		"/students":             GetStudentsAll,
+		"/students":             GetStudentsFast,
 		"/students/{id}":        GetStudentAll,
 		"/students/{id}/update": GetStudentForUpdate,
 		"/students/add/":        GetStudentForAdd,

+ 8 - 0
orm/student.go

@@ -75,6 +75,14 @@ func GetStudents(args map[string]string) (interface{}, error) {
 	return students, nil
 }
 
+func GetStudentsFast(args map[string]string) (interface{}, error) {
+	var students []*Student
+	if err := DB().Preload("Class").Order("surname,name").Find(&students).Error; err != nil {
+		return nil, err
+	}
+	return students, nil
+}
+
 func GetStudentsAll(args map[string]string) (interface{}, error) {
 	var students []*Student
 	if err := DB().Preload("Class").Order("surname,name").Find(&students).Error; err != nil {

+ 14 - 0
orm/teacher.go

@@ -107,6 +107,20 @@ func GetTeachersAll(args map[string]string) (interface{}, error) {
 	return teachers, nil
 }
 
+func GetTeachersFast(args map[string]string) (interface{}, error) {
+	var teachers []*Teacher
+	if err := DB().Order("surname,name").Find(&teachers).Error; err != nil {
+		return nil, err
+	}
+	for _, teacher := range teachers {
+		teacher.GetClasses()
+	}
+	for _, teacher := range teachers {
+		teacher.GetSubjects()
+	}
+	return teachers, nil
+}
+
 func SaveTeacher(teacher interface{}) (interface{}, error) {
 	if err := DB().Omit("Classes", "Subjects", "Activities").Save(teacher).Error; err != nil {
 		return nil, err