Skip to content

Commit c39c897

Browse files
committed
fix
1 parent 4abb079 commit c39c897

File tree

5 files changed

+22
-40
lines changed

5 files changed

+22
-40
lines changed

db/db.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,6 @@ func NewDb(config Config) (*gorm.DB, error) {
1717
slog.Error("Can't migrate TestingResult", "err", err)
1818
return nil, err
1919
}
20-
if err = db.AutoMigrate(&models.ProblemConfig{}); err != nil {
21-
slog.Error("Can't migrate ProblemConfig", "err", err)
22-
return nil, err
23-
}
2420
if err = db.AutoMigrate(&models.Problem{}); err != nil {
2521
slog.Error("Can't migrate Problem", "err", err)
2622
return nil, err

db/models/problem.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,14 @@ package models
22

33
import "gorm.io/gorm"
44

5+
type ProblemType int
6+
7+
const (
8+
ProblemType_ICPC ProblemType = iota + 1
9+
ProblemType_IOI
10+
)
11+
512
type Problem struct {
613
gorm.Model
7-
ProblemConfigId int
8-
ProblemConfig ProblemConfig
14+
ProblemType ProblemType
915
}

db/models/problem_config.go

Lines changed: 0 additions & 16 deletions
This file was deleted.

db/models/submission.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@ import "gorm.io/gorm"
44

55
type Submission struct {
66
gorm.Model
7-
ContentId uint64 // id of submission in the storage
8-
TaskId uint64
9-
TaskVersionId uint64
10-
TestingResultId int
11-
TestingResult TestingResult
7+
ProblemID uint64
8+
ProblemVersionID uint64
9+
TestingResultID int
10+
TestingResult TestingResult
1211
}

db/readme.md

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -41,20 +41,17 @@ conn.Find(&problems) // все объекты
4141

4242
https://gorm.io/docs/query.html
4343

44-
### Продвинутые штуки
45-
46-
Если просто вытащить задачу, то не вытащится ее конфиг. Для этого надо сделать join:
47-
48-
``conn.Joins("ProblemConfig").Find(&problems)``
49-
50-
Вообще gorm это какой-то полный пиздец. Например, чтобы вытащить все ICPC задачи, надо сделать так:
44+
### Условия
5145

5246
```go
53-
conn.
54-
Model(&models.Problem{}).
55-
InnerJoins("ProblemConfig", conn.Where(&models.ProblemConfig{ProblemType: models.ProblemType_ICPC})).
47+
// все IOI задачи
48+
conn.Where(models.Problem{ProblemType: models.ProblemType_IOI}).Find(&problems)
49+
conn.Find(&problems, "problem_type = ?", models.ProblemType_IOI)
50+
conn.Find(&problems, map[string]any{"problem_type": models.ProblemType_IOI})
51+
conn.Not("problem_type = ?", models.ProblemType_ICPC).Find(&problems)
52+
// все IOI задачи или с id == 1
53+
conn.
54+
Where("problem_type = ?", models.ProblemType_IOI).
55+
Or(1).
5656
Find(&problems)
5757
```
58-
59-
Выглядит легко, но это одна из самых простых вещей...)
60-
Все равно придется писать запросы (наполовину) руками и молиться, чтобы оно работало

0 commit comments

Comments
 (0)