Severity: major Commit:00b12cd — upd store Затронутые места:
service/version.go строки 40–41
В чём проблема
В методе CreateDocument передается указатель на локальную переменную doc в метод CreateDocument хранилища. Однако, в store/gorm.go реализация CreateDocument принимает *models.Document и вызывает s.db.Create(&doc). Поскольку doc уже является указателем, передача &doc в GORM приводит к созданию записи с некорректными данными или ошибкой, так как GORM ожидает объект или указатель на объект, а не указатель на указатель.
Вариант 1 — Исправить вызов в store/gorm.go, чтобы передавать объект напрямую, так как он уже является указателем.
GORM Create метод принимает interface{}, но для работы с моделями обычно передается либо сам объект, либо указатель на него. Передача &doc (где doc это *models.Document) создает **models.Document, что некорректно.
func (s *GormStorage) CreateDocument(doc *models.Document) error {
return s.db.Create(doc).Error
}
Автоматическая проверка commit-keeper · модель gemma4:31b · sha=00b12cd
**Severity:** major
**Commit:** [`00b12cd`](https://git.gm6.ru/icewind/seadoc/commit/00b12cdf7dbee7b9d54a1075acfdc0666ff6aa30) — upd store
**Затронутые места:**
- `service/version.go` строки 40–41
## В чём проблема
В методе `CreateDocument` передается указатель на локальную переменную `doc` в метод `CreateDocument` хранилища. Однако, в `store/gorm.go` реализация `CreateDocument` принимает `*models.Document` и вызывает `s.db.Create(&doc)`. Поскольку `doc` уже является указателем, передача `&doc` в GORM приводит к созданию записи с некорректными данными или ошибкой, так как GORM ожидает объект или указатель на объект, а не указатель на указатель.
## Цитата кода
```
if err := s.storage.CreateDocument(&doc); err != nil {
return nil, err
}
```
## Как исправить
### Вариант 1 — Исправить вызов в `store/gorm.go`, чтобы передавать объект напрямую, так как он уже является указателем.
GORM `Create` метод принимает `interface{}`, но для работы с моделями обычно передается либо сам объект, либо указатель на него. Передача `&doc` (где `doc` это `*models.Document`) создает `**models.Document`, что некорректно.
```
func (s *GormStorage) CreateDocument(doc *models.Document) error {
return s.db.Create(doc).Error
}
```
---
<sub><sup>Автоматическая проверка commit-keeper · модель `gemma4:31b` · `sha=00b12cd`</sup></sub>
<!-- commit-keeper -->
В файле store/gorm.go была исправлена ошибка передачи указателя на указатель в метод Create библиотеки GORM. Ранее вызывался Create(&doc), где doc уже был типа *models.Document, что приводило к передаче **models.Document. В фиксе изменен вызов на Create(doc), что соответствует ожиданиям GORM и полностью устраняет проблему, описанную в issue.
## Подтверждаю — проблема устранена коммитом `3e05ab6`
**Уверенность:** high
В файле `store/gorm.go` была исправлена ошибка передачи указателя на указатель в метод `Create` библиотеки GORM. Ранее вызывался `Create(&doc)`, где `doc` уже был типа `*models.Document`, что приводило к передаче `**models.Document`. В фиксе изменен вызов на `Create(doc)`, что соответствует ожиданиям GORM и полностью устраняет проблему, описанную в issue.
<!-- commit-keeper -->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Severity: major
Commit:
00b12cd— upd storeЗатронутые места:
service/version.goстроки 40–41В чём проблема
В методе
CreateDocumentпередается указатель на локальную переменнуюdocв методCreateDocumentхранилища. Однако, вstore/gorm.goреализацияCreateDocumentпринимает*models.Documentи вызываетs.db.Create(&doc). Посколькуdocуже является указателем, передача&docв GORM приводит к созданию записи с некорректными данными или ошибкой, так как GORM ожидает объект или указатель на объект, а не указатель на указатель.Цитата кода
Как исправить
Вариант 1 — Исправить вызов в
store/gorm.go, чтобы передавать объект напрямую, так как он уже является указателем.GORM
Createметод принимаетinterface{}, но для работы с моделями обычно передается либо сам объект, либо указатель на него. Передача&doc(гдеdocэто*models.Document) создает**models.Document, что некорректно.Автоматическая проверка commit-keeper · модель
gemma4:31b·sha=00b12cdПочинил коммитом
3e05ab6— убрал лишний амперсанд. Проверь, пожалуйста.Подтверждаю — проблема устранена коммитом
3e05ab6Уверенность: high
В файле
store/gorm.goбыла исправлена ошибка передачи указателя на указатель в методCreateбиблиотеки GORM. Ранее вызывалсяCreate(&doc), гдеdocуже был типа*models.Document, что приводило к передаче**models.Document. В фиксе изменен вызов наCreate(doc), что соответствует ожиданиям GORM и полностью устраняет проблему, описанную в issue.