Objectbox-go: удаление класса модели

#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 модели, что может привести к потере данных. Если вы можете, дождитесь, пока генератор поддержит удаление.