MCPcopy Create free account
hub / github.com/OpenListTeam/OpenList / InitDB

Function InitDB

internal/bootstrap/db.go:20–88  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

18)
19
20func InitDB() {
21 logLevel := logger.Silent
22 if flags.Debug || flags.Dev {
23 logLevel = logger.Info
24 }
25 newLogger := logger.New(
26 stdlog.New(log.StandardLogger().Out, "\r\n", stdlog.LstdFlags),
27 logger.Config{
28 SlowThreshold: time.Second,
29 LogLevel: logLevel,
30 IgnoreRecordNotFoundError: true,
31 Colorful: true,
32 },
33 )
34 gormConfig := &gorm.Config{
35 NamingStrategy: schema.NamingStrategy{
36 TablePrefix: conf.Conf.Database.TablePrefix,
37 },
38 Logger: newLogger,
39 }
40 var dB *gorm.DB
41 var err error
42 if flags.Dev {
43 dB, err = gorm.Open(openSQLite("file::memory:?cache=shared"), gormConfig)
44 conf.Conf.Database.Type = "sqlite3"
45 } else {
46 database := conf.Conf.Database
47 switch database.Type {
48 case "sqlite3":
49 {
50 if !(strings.HasSuffix(database.DBFile, ".db") && len(database.DBFile) > 3) {
51 log.Fatalf("db name error.")
52 }
53 dB, err = gorm.Open(openSQLite(fmt.Sprintf("%s?_journal=WAL&_vacuum=incremental",
54 database.DBFile)), gormConfig)
55 }
56 case "mysql":
57 {
58 dsn := database.DSN
59 if dsn == "" {
60 //[username[:password]@][protocol[(address)]]/dbname[?param1=value1&...&paramN=valueN]
61 dsn = fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local&tls=%s",
62 database.User, database.Password, database.Host, database.Port, database.Name, database.SSLMode)
63 }
64 dB, err = gorm.Open(mysql.Open(dsn), gormConfig)
65 }
66 case "postgres":
67 {
68 dsn := database.DSN
69 if dsn == "" {
70 if database.Password != "" {
71 dsn = fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%d sslmode=%s TimeZone=Asia/Shanghai",
72 database.Host, database.User, database.Password, database.Name, database.Port, database.SSLMode)
73 } else {
74 dsn = fmt.Sprintf("host=%s user=%s dbname=%s port=%d sslmode=%s TimeZone=Asia/Shanghai",
75 database.Host, database.User, database.Name, database.Port, database.SSLMode)
76 }
77 }

Callers 1

InitFunction · 0.85

Calls 4

InitFunction · 0.92
openSQLiteFunction · 0.70
OpenMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected