123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- package orm
- import (
- "path"
- "reflect"
- "strings"
- "github.com/jinzhu/inflection"
- )
- var (
- Get map[string]GetFn = map[string]GetFn{
- // Teacher
- "/teachers": GetTeachersFast,
- "/teachers/{id}": GetTeacherAll,
- "/teachers/{id}/update": GetTeacher,
- "/teachers/add/": GetNothing,
- "/api/teachers": GetTeachersAll,
- "/api/teachers/{id}": GetTeacherAll,
- "/api/teachers/{id}/update": GetTeacher,
- "/api/teachers/add/": GetNothing,
- // Student
- "/students": GetStudentsFast,
- "/students/{id}": GetStudentAll,
- "/students/{id}/update": GetStudentForUpdate,
- "/students/add/": GetStudentForAdd,
- "/api/students": GetStudentsAll,
- "/api/students/{id}": GetStudentAll,
- "/api/students/{id}/update": GetStudentForUpdate,
- "/api/students/add/": GetStudentForAdd,
- // Classes
- "/classes": GetClassesAll,
- "/classes/{id}": GetClassAll,
- "/classes/{id}/update": GetClassForUpdate,
- "/classes/add/": GetClassForAdd,
- "/api/classes": GetClassesAll,
- "/api/classes/{id}": GetClassAll,
- "/api/classes/{id}/update": GetClassForUpdate,
- "/api/classes/add/": GetClassForAdd,
- // Subjects
- "/subjects": GetSubjectsAll,
- "/subjects/{id}": GetSubjectAll,
- "/subjects/{id}/update": GetSubjectForUpdate,
- "/subjects/add/": GetSubjectForAdd,
- "/api/subjects": GetSubjectsAll,
- "/api/subjects/{id}": GetSubjectAll,
- "/api/subjects/{id}/update": GetSubjectForUpdate,
- "/api/subjects/add/": GetSubjectForAdd,
- // Departments
- "/departments": GetDepartmentsAll,
- "/departments/{id}": GetDepartmentAll,
- "/departments/{id}/update": GetDepartmentForUpdate,
- "/departments/add/": GetDepartmentForAdd,
- "/api/departments": GetDepartmentsAll,
- "/api/departments/{id}": GetDepartmentAll,
- "/api/departments/{id}/update": GetDepartment,
- "/api/departments/add/": GetNothing,
- // Activity
- "/activities": GetActivitiesAll,
- "/activities/{id}": GetActivityAll,
- "/activities/{id}/update": GetActivityForUpdate,
- "/activities/add/": GetActivityForAdd,
- "/api/activities": GetActivitiesAll,
- "/api/activities/{id}": GetActivityAll,
- "/api/activities/{id}/update": GetActivityForUpdate,
- "/api/activities/add/": GetActivityForAdd,
- // Offices
- "/offices": GetOfficesAll,
- "/offices/{id}": GetOfficeAll,
- "/offices/{id}/update": GetOfficeForUpdate,
- "/offices/add/": GetOfficeForAdd,
- "/api/offices": GetOfficesAll,
- "/api/offices/{id}": GetOfficeAll,
- "/api/offices/{id}/update": GetOffice,
- "/api/offices/add/": GetNothing,
- // Administratives
- "/administratives": GetAdministrativesAll,
- "/administratives/{id}": GetAdministrativeAll,
- "/administratives/{id}/update": GetAdministrativeForUpdate,
- "/administratives/add/": GetAdministrativeForAdd,
- "/api/administratives": GetAdministrativesAll,
- "/api/administratives/{id}": GetAdministrativeAll,
- "/api/administratives/{id}/update": GetAdministrative,
- "/api/administratives/add/": GetNothing,
- // Documents
- "/documents": GetDocumentsAll,
- "/documents/{id}": GetDocumentAll,
- "/documents/{id}/update": GetDocumentForUpdate,
- "/documents/{id}/execute": GetDocumentExecute,
- "/documents/add/": GetDocumentForAdd,
- "/api/documents": GetDocumentsAll,
- "/api/documents/{id}": GetDocumentAll,
- "/api/documents/{id}/update": GetDocument,
- "/api/documents/add/": GetNothing,
- // Jobs
- "/jobs": GetJobs,
- "/jobs/{id}": GetJob,
- "/jobs/{id}/files/{filename}": GetFile,
- "/api/jobs/{id}": GetJob,
- "/api/jobs/add/": GetNothing,
- }
- Post map[string]PostFn = map[string]PostFn{
- // Teacher
- "/teachers/{id}/update": UpdateTeacher,
- "/teachers/{id}/delete": DeleteTeacher,
- "/teachers/add/": AddTeacher,
- "/api/teachers/add": AddTeacher,
- "/api/teachers/{id}/update": UpdateTeacher,
- "/api/teachers/{id}/delete": DeleteTeacher,
- "/api/teachers/add/": AddTeacher,
- // Student
- "/students/{id}/update": UpdateStudent,
- "/students/{id}/delete": DeleteStudent,
- "/students/add/": AddStudent,
- "/api/students/add": AddStudent,
- "/api/students/{id}/update": UpdateStudent,
- "/api/students/{id}/delete": DeleteStudent,
- "/api/students/add/": AddStudent,
- // Classes
- "/classes/{id}/update": UpdateClass,
- "/classes/{id}/delete": DeleteClass,
- "/classes/add/": AddClass,
- "/api/classes/{id}/update": UpdateClass,
- "/api/classes/{id}/delete": DeleteClass,
- "/api/classes/add/": AddClass,
- // Subjects
- "/subjects/{id}/update": UpdateSubject,
- "/subjects/{id}/delete": DeleteSubject,
- "/subjects/add/": AddSubject,
- "/api/subjects/{id}/update": UpdateSubject,
- "/api/subjects/{id}/delete": DeleteSubject,
- "/api/subjects/add/": AddSubject,
- // Departments
- "/departments/{id}/update": UpdateDepartment,
- "/departments/{id}/delete": DeleteDepartment,
- "/departments/add/": AddDepartment,
- "/api/departments/{id}/update": UpdateDepartment,
- "/api/departments/{id}/delete": DeleteDepartment,
- "/api/departments/add/": AddDepartment,
- // Activity
- "/activities/{id}/update": UpdateActivity,
- "/activities/{id}/delete": DeleteActivity,
- "/activities/add/": AddActivity,
- "/api/activities/{id}/update": UpdateActivity,
- "/api/activities/{id}/delete": DeleteActivity,
- "/api/activities/add/": AddActivity,
- // Offices
- "/offices/{id}/update": UpdateOffice,
- "/offices/{id}/delete": DeleteOffice,
- "/offices/add/": AddOffice,
- "/api/offices/{id}/update": UpdateOffice,
- "/api/offices/{id}/delete": DeleteOffice,
- "/api/offices/add/": AddOffice,
- // Administratives
- "/administratives/{id}/update": UpdateAdministrative,
- "/administratives/{id}/delete": DeleteAdministrative,
- "/administratives/add/": AddAdministrative,
- "/api/administratives/{id}/update": UpdateAdministrative,
- "/api/administratives/{id}/delete": DeleteAdministrative,
- "/api/administratives/add/": AddAdministrative,
- // Documents
- "/documents/{id}/update": UpdateDocument,
- "/documents/{id}/delete": DeleteDocument,
- "/documents/add/": AddDocument,
- "/api/documents/{id}/update": UpdateDocument,
- "/api/documents/{id}/delete": DeleteDocument,
- "/api/documents/add/": AddDocument,
- // Jobs
- "/jobs/{id}/delete": DeleteJob,
- "/api/jobs/{id}/update": UpdateJob,
- "/api/jobs/{id}/delete": DeleteJob,
- }
- )
- func MapModels(models []interface{}, handlers map[string]string) {
- for _, model := range models {
- name := inflection.Plural(strings.ToLower(modelName(model)))
- for p, action := range map[string]string{
- "": "GetAll",
- "create": "Create",
- "{id}": "Get",
- "{id}/udpate": "Update",
- } {
- getFns[path.Join("/", name, p)] = reflect.ValueOf(model).MethodByName(action).Interface().(func(map[string]string) (interface{}, error))
- }
- }
- }
- func modelName(s interface{}) string {
- if t := reflect.TypeOf(s); t.Kind() == reflect.Ptr {
- return t.Elem().Name()
- } else {
- return t.Name()
- }
- }
|