#objectbox
#objectbox
Вопрос:
К сожалению, документы ObjectBox Go не предоставляют никакой информации об удалении всей структуры типа, «поддерживаемой» ObjectBox.
Допустим, у нас есть структура
//go:generate go run github.com/objectbox/objectbox-go/cmd/objectbox-gogen
type Test struct {
Id uint64
Name string
}
Через некоторое время я решаю удалить весь тест из проекта (удалил test.go и test.obx.go). К сожалению, go generate все еще «запоминает» этот фантомный класс и продолжает добавлять его в objectbox-model.go
model.RegisterBinding(TestBinding)
Как я могу безопасно удалить эту структуру (и ее данные)?
Ответ №1:
В настоящее время генератор кода ObjectBox не удаляет объекты, поскольку он работает с частичной входной информацией (по одному файлу за раз), и поэтому он не знает, удалили ли вы объект или он будет в следующем файле, для которого вызывается генератор.
Я создал последующую проблему / запрос функции на GH:https://github.com/objectbox/objectbox-generator/issues/22
Если вам действительно нужно удалить объект СЕЙЧАС, пока функция удаления не будет добавлена в генератор: текущий обходной путь заключался бы в том, чтобы вручную обновить objectbox-model.json
, удалив определяющий его блок кода entity JSON и добавив его uid
в retiredEntityUids
список, чтобы избежать повторного использования одного и того же UID (что нарушило бы работу). Кроме того, то же самое необходимо сделать для удаленных свойств, индексов и отношений (у каждого есть свой retired*Uids
список). После повторного запуска генератора объект будет удален из objectbox-model.go
.
Я не рекомендую делать это, так как легко допустить ошибку при ручном редактировании файла JSON модели, что может привести к потере данных. Если вы можете, дождитесь, пока генератор поддержит удаление.