我有一个包含以下代码的数据库包。如何使数据库代码干涸
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