ShadowEditor/server/helper/postgresql.go
2020-05-01 09:43:36 +08:00

76 lines
1.8 KiB
Go

// +build ignore
// Copyright 2017-2020 The ShadowEditor Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
//
// For more information, please visit: https://github.com/tengge1/ShadowEditor
// You can also visit: https://gitee.com/tengge1/ShadowEditor
package helper
import (
"context"
"fmt"
"github.com/jackc/pgconn"
"github.com/jackc/pgx/v4"
)
// NewPostgreSQL create a new postgreSQL connection
func NewPostgreSQL(host string, port uint16, user, password, database string) (*PostgreSQL, error) {
connConfig, err := pgx.ParseConfig("")
if err != nil {
return nil, err
}
connConfig.Host = host
connConfig.Port = port
connConfig.User = user
connConfig.Password = password
connConfig.Database = database
conn, err := pgx.ConnectConfig(context.Background(), connConfig)
if err != nil {
return nil, err
}
err = conn.Ping(context.TODO())
if err != nil {
return nil, err
}
return &PostgreSQL{conn}, nil
}
// PostgreSQL postgreSQL connection
type PostgreSQL struct {
Connection *pgx.Conn
}
// Query query records with sql string
func (p PostgreSQL) Query(sql string, args ...interface{}) (pgx.Rows, error) {
if p.Connection == nil {
return nil, fmt.Errorf("connection is not created")
}
return p.Connection.Query(context.Background(), sql, args...)
}
// Exec execute a sql
func (p PostgreSQL) Exec(sql string, args ...interface{}) (pgconn.CommandTag, error) {
if p.Connection == nil {
return nil, fmt.Errorf("connection is not created")
}
return p.Connection.Exec(context.TODO(), sql, args...)
}
// Close close connection
func (p PostgreSQL) Close() error {
if p.Connection == nil {
return fmt.Errorf("connection is not created")
}
return p.Connection.Close(context.TODO())
}