| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package postgres
- import (
- "context"
- e "errors"
- "fmt"
- "github.com/jackc/pgconn"
- "github.com/jackc/pgx/v4"
- "github.com/jackc/pgx/v4/pgxpool"
- "github.com/sirupsen/logrus"
- "video_course/errors"
- "video_course/global"
- )
- var writeDB *pgxpool.Pool
- func Init() {
- logrus.Info("初始化数据库")
- dbCfg, err := global.Config.GetPostgreSQL()
- if err != nil {
- panic(err)
- }
- writeCfg := dbCfg.Write
- connStr := fmt.Sprintf("host=%s port=%d user=%s dbname=%s password=%s sslmode=disable TimeZone=Asia/Shanghai",
- writeCfg.Host, writeCfg.Port, writeCfg.User, global.Project.DBName, writeCfg.Password)
- writeDB, err = pgxpool.Connect(context.Background(), connStr)
- if err != nil {
- logrus.Panicf("连接数据库失败:%v\n", err)
- panic(err)
- }
- }
- type base struct {
- c context.Context
- }
- func (b base) ctx() context.Context {
- if b.c == nil {
- b.c = context.Background()
- }
- return b.c
- }
- func (b base) writeDB() *pgxpool.Pool {
- return writeDB
- }
- func panicError(err error) {
- if err != nil {
- err = errors.NewFromError(err, errors.CodeDATABASE)
- panic(err)
- }
- }
- func panicExec(tag pgconn.CommandTag, err error) {
- if err != nil {
- if e.Is(err, pgx.ErrNoRows) {
- err = errors.NewFromError(err, errors.CodeNoRecord)
- } else {
- err = errors.NewFromError(err, errors.CodeDATABASE)
- }
- panic(err)
- }
- }
- func isRecordNotFound(err error) bool {
- if e.Is(err, pgx.ErrNoRows) {
- return true
- } else {
- panicError(err)
- return false
- }
- }
|