gorm: аннотации к базе данных
Мы используем gorm, и я хотел бы иметь возможность указывать аннотации для конкретных баз данных. Для удобства при разработке / тестировании мы используем базу данных sqlite3, а затем MySQL на производстве.
К сожалению sqlite3 не принимает CHARACTER SET
а также COLLATE
ключевые слова. Это означает, что следующие перерывы:
type User struct {
Name string `gorm:"primary_key;type:varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci"`
}
Кто-нибудь нашел решение этой проблемы? Я бы предпочел не использовать MySQL в тесте, а также я бы не стал вручную управлять столбцами.
2 ответа
Лучше всего здесь протестировать с MySQL. Если бы вы могли указать разные теги для тестирования, вы бы никогда не узнали, будет ли ваш код работать на самом деле, потому что вы никогда не будете тестировать код, который там работает.
Вы должны стараться сохранить как можно больше паритета между вашими тестами и производством. Как еще вы узнаете, правильны ли ваши аннотации?
Я думаю, что решение заключается в использовании тегов сборки.
Объявить два разных User
в двух разных файлах, например user_sqlite3.go
а также user_mysql.go
, И в файле sqlite3, перед package
объявление, поместите тег сборки:
// +build test
А при сборке на локальной машине: go buiid -tags=test
,