package
0.0.0-20241208111954-a31dccbd36d2
Repository: https://github.com/ashik80/oauth2jwtgen.git
Documentation: pkg.go.dev
# README
Example implementation with pgx
package store
import (
"context"
"fmt"
"github.com/jackc/pgx/v5/pgxpool"
)
type PgTokenStore struct {
Db *pgxpool.Pool
}
func NewPgTokenStore(ctx context.Context, databaseUrl string) (*PgTokenStore, error) {
dbpool, err := pgxpool.New(ctx, databaseUrl)
if err != nil {
return nil, fmt.Errorf("failed to connect to database: %w", err)
}
return &PgTokenStore{
Db: dbpool,
}, nil
}
func (s *PgTokenStore) CreateStore(ctx context.Context) error {
query := `
CREATE TABLE IF NOT EXISTS oauth_access_tokens (
id SERIAL PRIMARY KEY,
resource_owner_id UUID NOT NULL,
access_token TEXT NOT NULL,
expiry TIMESTAMPTZ NOT NULL
);
`
_, err := s.Db.Exec(ctx, query)
if err != nil {
return fmt.Errorf("failed to create table: %w", err)
}
return nil
}
func (s *PgTokenStore) StoreToken(ctx context.Context, tokenInfo *TokenInfo) error {
query := "INSERT INTO oauth_access_tokens (resource_owner_id, access_token, expiry) VALUES ($1, $2, $3)"
_, err := s.Db.Exec(ctx, query, tokenInfo.ResourceOwnerId, tokenInfo.AccessToken, tokenInfo.Expiry)
if err != nil {
return fmt.Errorf("failed to store token info: %w", err)
}
return nil
}
func (s *PgTokenStore) CloseConnection() error {
if err := s.Db.Close(); err != nil {
return err
}
}
Usage
s, _ = store.NewPgTokenStore(ctx, "postgresql://<username>:<password>@<host>:<port>/auth_db")
s.CreateStore(ctx)
# Interfaces
No description provided by the author