gorm — определение функции значений по умолчанию

# #go #go-gorm #pq

Вопрос:

Я пытаюсь следовать документации Горма, чтобы создать сгенерированное поле, определяемое функцией:

 type Foo struct {
    ID            int64  `json:"id"`
    AmountOfBars  string `json:"amount_of_bars" gorm:"default:amount_of_bars()"`
}

type RelatedBar struct {
    FooId int64 `json:"foo_id"`
}
 

Однако я не понимаю, где и как определить amount_of_bars, поэтому я смогу вернуть сумму строк, связанных с RelatedBar.

Комментарии:

1. Если посмотреть на uuid_generate_v3() функцию из документации, amount_of_bars() то она должна быть функцией, определенной в вашей базе данных.

Ответ №1:

Вы не определяете такую функцию в Go, вы определяете ее в своей базе данных с помощью CREATE FUNCTION . Видишь https://www.postgresql.org/docs/9.1/sql-createfunction.html.

Комментарии:

1. Звучит неплохо, можно ли добавить эту функцию программно через pq голанга или gorm? Я не хочу, чтобы в моей базе данных что-либо настраивалось вручную…

2. @idik Вы можете использовать Exec для запуска произвольного SQL в вашей базе данных.