У меня есть пакет базы данных, содержащий следующий код.Как высушить код базы данных
package database
import (
"log"
"github.com/jinzhu/gorm"
// required by gorm
_ "github.com/mattn/go-sqlite3"
)
type Podcast struct {
ID int `sql:"index"`
Title string
RssURL string `sql:"unique_index"`
Paused bool
Episodes []Episode
}
type Episode struct {
ID int `sql:"index"`
PodcastID int
Title string
EnclosureURL string `sql:"unique_index"`
Downloaded bool
GUID string `sql:"unique_index"`
PubDate string
}
func DBSession() (db gorm.DB) {
sqliteSession, err := gorm.Open("sqlite3", cache.db)
if err != nil {
log.Fatal(err)
}
return sqliteSession
}
Вслед за кучей методов, которые начинаются со следующего кода.
FindSomethingByID(id int) {
db := DBSession()
db.LogMode(false)
// code
}
FindSomethingElse {
db := DBSession()
db.LogMode(false)
// code
}
Вызов DBSession и настройка LogMode в каждой функции кажется плохим. Я просто не знаю, как это сделать лучше. Может ли кто-нибудь помочь?
Я изменил свой код, как вы упомянули выше, но я получаю сообщение об ошибке сейчас src/database/database.go: 48: не могу назначить gorm.DB для db (type * gorm.DB) в нескольких присваиваниях – gregf
I ' Ве сделал редактирование. 'gorm' возвращает значение, а не указатель, в отличие от большинства других пакетов, которые обертывают базу данных/sql. – elithrar
Строка 48 - это db, err = gorm.Open («sqlite3», «cache.db») – gregf