优化项目机构和服务端协程控制逻辑

This commit is contained in:
2025-02-25 14:48:50 +08:00
parent 83fd749d50
commit 7f23e2741f
21 changed files with 732 additions and 440 deletions

48
server/pkg/orm/orm.go Normal file
View 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
}