Skip to content

Commit

Permalink
重构 initDB 和 createTables
Browse files Browse the repository at this point in the history
  • Loading branch information
summerblue committed Aug 16, 2022
1 parent 8484e14 commit 84c454b
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 2 deletions.
5 changes: 3 additions & 2 deletions main.go
Expand Up @@ -3,6 +3,7 @@ package main
import (
"database/sql"
"fmt"
"goblog/pkg/database"
"goblog/pkg/logger"
"goblog/pkg/route"
"goblog/pkg/types"
Expand Down Expand Up @@ -498,8 +499,8 @@ func (a Article) Delete() (rowsAffected int64, err error) {
}

func main() {
initDB()
createTables()
database.Initialize()
db = database.DB

route.Initialize()
router = route.Router
Expand Down
60 changes: 60 additions & 0 deletions pkg/database/database.go
@@ -0,0 +1,60 @@
package database

import (
"database/sql"
"time"

"github.com/go-sql-driver/mysql"

"goblog/pkg/logger"
)

// DB 数据库对象
var DB *sql.DB

// Initialize 初始化数据库
func Initialize() {
initDB()
createTables()
}

func initDB() {

var err error

// 设置数据库连接信息
config := mysql.Config{
User: "root",
Passwd: "secret",
Addr: "127.0.0.1:3306",
Net: "tcp",
DBName: "goblog",
AllowNativePasswords: true,
}

// 准备数据库连接池
DB, err = sql.Open("mysql", config.FormatDSN())
logger.LogError(err)

// 设置最大连接数
DB.SetMaxOpenConns(100)
// 设置最大空闲连接数
DB.SetMaxIdleConns(25)
// 设置每个链接的过期时间
DB.SetConnMaxLifetime(5 * time.Minute)

// 尝试连接,失败会报错
err = DB.Ping()
logger.LogError(err)
}

func createTables() {
createArticlesSQL := `CREATE TABLE IF NOT EXISTS articles(
id bigint(20) PRIMARY KEY AUTO_INCREMENT NOT NULL,
title varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
body longtext COLLATE utf8mb4_unicode_ci
); `

_, err := DB.Exec(createArticlesSQL)
logger.LogError(err)
}

0 comments on commit 84c454b

Please sign in to comment.