Изменено: загрузка расписания одним запросом и проверка дупликатов

This commit is contained in:
far-galaxy 2023-03-07 13:27:18 +04:00
parent 160e08a52a
commit e9cad18cb3
2 changed files with 22 additions and 6 deletions

View File

@ -5,7 +5,8 @@ import (
"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 _, lesson := range line {
var pair database.Lesson
@ -16,15 +17,27 @@ func uploadShedule(db *xorm.Engine, sh Shedule) {
Type: subLesson.Type,
Name: subLesson.Name,
TeacherId: subLesson.TeacherId,
Place: subLesson.Place,
Comment: subLesson.Comment,
SubGroup: subLesson.SubGroup,
}
for _, groupId := range subLesson.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
}

View File

@ -49,5 +49,8 @@ func TestParse(t *testing.T) {
}
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)
}
}