优化项目机构和服务端协程控制逻辑
This commit is contained in:
48
server/pkg/orm/orm.go
Normal file
48
server/pkg/orm/orm.go
Normal file
@@ -0,0 +1,48 @@
|
||||
package orm
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"os"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"gorm.io/driver/postgres"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/logger"
|
||||
)
|
||||
|
||||
var DB *gorm.DB
|
||||
|
||||
func Init() {
|
||||
Host := os.Getenv("DB_HOST")
|
||||
Port := os.Getenv("DB_PORT")
|
||||
Database := os.Getenv("DB_DATABASE")
|
||||
Username := os.Getenv("DB_USERNAME")
|
||||
Password := os.Getenv("DB_PASSWORD")
|
||||
Timezone := os.Getenv("DB_TIMEZONE")
|
||||
|
||||
dsn := fmt.Sprintf(
|
||||
"host=%s port=%s user=%s password=%s dbname=%s sslmode=disable TimeZone=%s",
|
||||
Host, Port, Username, Password, Database, Timezone,
|
||||
)
|
||||
|
||||
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{
|
||||
Logger: logger.Default,
|
||||
})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
DB = db
|
||||
}
|
||||
|
||||
func MaySingle[T any](results []T) (*T, error) {
|
||||
rsLen := len(results)
|
||||
if rsLen == 0 {
|
||||
return nil, errors.New("记录为空")
|
||||
}
|
||||
if rsLen > 1 {
|
||||
slog.Warn("记录不唯一", "ids")
|
||||
}
|
||||
return &results[0], nil
|
||||
}
|
||||
Reference in New Issue
Block a user