Move to Donetick Org, first commit
This commit is contained in:
commit
c13dd9addb
42 changed files with 7463 additions and 0 deletions
44
internal/database/database.go
Normal file
44
internal/database/database.go
Normal file
|
@ -0,0 +1,44 @@
|
|||
package database
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"gorm.io/driver/postgres"
|
||||
"gorm.io/driver/sqlite" // Sqlite driver based on CGO
|
||||
"gorm.io/gorm/logger"
|
||||
|
||||
// "github.com/glebarez/sqlite" // Pure go SQLite driver, checkout https://github.com/glebarez/sqlite for details
|
||||
"donetick.com/core/config"
|
||||
"donetick.com/core/logging"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func NewDatabase(cfg *config.Config) (*gorm.DB, error) {
|
||||
var db *gorm.DB
|
||||
var err error
|
||||
switch cfg.Database.Type {
|
||||
case "postgres":
|
||||
dsn := fmt.Sprintf("host=%s port=%v user=%s password=%s dbname=%s sslmode=disable TimeZone=Asia/Shanghai", cfg.Database.Host, cfg.Database.Port, cfg.Database.User, cfg.Database.Password, cfg.Database.Name)
|
||||
for i := 0; i <= 30; i++ {
|
||||
db, err = gorm.Open(postgres.Open(dsn), &gorm.Config{
|
||||
Logger: logger.Default.LogMode(logger.Info),
|
||||
})
|
||||
if err == nil {
|
||||
break
|
||||
}
|
||||
logging.DefaultLogger().Warnf("failed to open database: %v", err)
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
}
|
||||
|
||||
default:
|
||||
|
||||
db, err = gorm.Open(sqlite.Open("donetick.db"), &gorm.Config{})
|
||||
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return db, nil
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue