I'm learning go and I've recently learned how to leverage gorm to connect to a database. I can't figure out how to import said connection. Only open and defer it's closing in the scope of the func main()
What I have currently:
func main(){
db, _ := gorm.Open("postgres", "host=localhost port=5432 user=someUser dbname=someDB password=somePW sslmode=disable")
defer db.Close()
}
This works fine and I can create tables and do CRUD ... but all in the main function.
Is there anyway I can do something like this(it didn't work) and use it in main:
func db(){
db, _ := gorm.Open("postgres", "host=localhost port=5432 user=someUser dbname=someDB password=somePW sslmode=disable")
defer db.Close()
return db
}
Or define some kind of package that will also allow me to do this.
I know that defer will basically just close the connect once db returns, but hopefully you guys get what I'm going for.
Create a package to hold the database value:
In
main()
, open the database and close it on return:Any package can import the db package and access the database as
db.DB
.Another approach is to use what you currently have working. Open the database in main and pass it to the functions that need it: