我有一個包含以下代碼的數據庫包。如何使數據庫代碼乾涸
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並在每個func中設置LogMode看起來很糟糕。我只是不知道如何做得更好。有人可以幫忙嗎?
我重新安排了我的代碼,就像你上面提到的,但我現在得到一個錯誤src/database/database.go:48:不能分配gorm.DB db(類型* gorm.DB)在多個任務 – gregf
我'我做了一個編輯。 'gorm'返回一個值而不是一個指針,與大多數其他包裝數據庫/ sql的包不同。 – elithrar
第48行是db,err = gorm.Open(「sqlite3」,「cache.db」) – gregf