62 lines
1.2 KiB
Go
62 lines
1.2 KiB
Go
package repository
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
dbgen "github.com/SamuelTariku/FortuneBet-Backend/gen/db"
|
|
"github.com/jackc/pgx/v5"
|
|
"github.com/jackc/pgx/v5/pgxpool"
|
|
// "golang.org/x/net/websocket"
|
|
)
|
|
|
|
type Store struct {
|
|
queries *dbgen.Queries
|
|
conn *pgxpool.Pool
|
|
}
|
|
|
|
func NewStore(conn *pgxpool.Pool) *Store {
|
|
|
|
queries := dbgen.New(conn)
|
|
return &Store{
|
|
queries: queries,
|
|
conn: conn,
|
|
}
|
|
}
|
|
|
|
func OpenDB(url string) (*pgxpool.Pool, func(), error) {
|
|
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
|
defer cancel()
|
|
|
|
conn, err := pgxpool.New(ctx, url)
|
|
if err != nil {
|
|
return nil, func() {}, err
|
|
}
|
|
|
|
if err := conn.Ping(ctx); err != nil {
|
|
return nil, func() {}, err
|
|
}
|
|
|
|
return conn, func() {
|
|
conn.Close()
|
|
}, nil
|
|
}
|
|
|
|
func (s *Store) BeginTx(ctx context.Context) (*dbgen.Queries, pgx.Tx, error) {
|
|
tx, err := s.conn.Begin(ctx)
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
q := s.queries.WithTx(tx)
|
|
return q, tx, nil
|
|
}
|
|
|
|
// func (s *Store) ConnectWebSocket(ctx context.Context, recipientID int64, c *websocket.Conn) error {
|
|
// // Implement WebSocket connection logic
|
|
// return nil
|
|
// }
|
|
|
|
// func (s *Store) DisconnectWebSocket(recipientID int64) {
|
|
// // Implement WebSocket disconnection logic
|
|
// }
|