Изменено: загрузка расписания одним запросом и проверка дупликатов
This commit is contained in:
parent
160e08a52a
commit
e9cad18cb3
|
@ -5,7 +5,8 @@ import (
|
||||||
"xorm.io/xorm"
|
"xorm.io/xorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
func uploadShedule(db *xorm.Engine, sh Shedule) {
|
func uploadShedule(db *xorm.Engine, sh Shedule) error {
|
||||||
|
var pairs []database.Lesson
|
||||||
for _, line := range sh.Lessons {
|
for _, line := range sh.Lessons {
|
||||||
for _, lesson := range line {
|
for _, lesson := range line {
|
||||||
var pair database.Lesson
|
var pair database.Lesson
|
||||||
|
@ -16,15 +17,27 @@ func uploadShedule(db *xorm.Engine, sh Shedule) {
|
||||||
Type: subLesson.Type,
|
Type: subLesson.Type,
|
||||||
Name: subLesson.Name,
|
Name: subLesson.Name,
|
||||||
TeacherId: subLesson.TeacherId,
|
TeacherId: subLesson.TeacherId,
|
||||||
Place: subLesson.Place,
|
|
||||||
Comment: subLesson.Comment,
|
|
||||||
SubGroup: subLesson.SubGroup,
|
|
||||||
}
|
}
|
||||||
for _, groupId := range subLesson.GroupId {
|
for _, groupId := range subLesson.GroupId {
|
||||||
pair.GroupId = groupId
|
pair.GroupId = groupId
|
||||||
db.InsertOne(pair)
|
var existsLessons []database.Lesson
|
||||||
|
err := db.Find(&existsLessons, pair)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if len(existsLessons) == 0 {
|
||||||
|
pair.Place = subLesson.Place
|
||||||
|
pair.Comment = subLesson.Comment
|
||||||
|
pair.SubGroup = subLesson.SubGroup
|
||||||
|
pairs = append(pairs, pair)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if len(pairs) > 0 {
|
||||||
|
_, err := db.Insert(pairs)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,5 +49,8 @@ func TestParse(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
engine := database.Connect(os.Getenv("MYSQL_USER"), os.Getenv("MYSQL_PASS"), os.Getenv("MYSQL_DB"))
|
engine := database.Connect(os.Getenv("MYSQL_USER"), os.Getenv("MYSQL_PASS"), os.Getenv("MYSQL_DB"))
|
||||||
uploadShedule(engine, *shedule)
|
err = uploadShedule(engine, *shedule)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue