init
This commit is contained in:
commit
d69342b2e9
160 changed files with 28681 additions and 0 deletions
62
internal/db/users.go
Normal file
62
internal/db/users.go
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
package db
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/jackc/pgx/v5"
|
||||
)
|
||||
|
||||
func (db *DB) GetUserByID(ctx context.Context, id string) (*User, error) {
|
||||
var u User
|
||||
err := db.pool.QueryRow(ctx,
|
||||
`SELECT id, email, name, avatar_url, created_at FROM users WHERE id = $1`,
|
||||
id).Scan(&u.ID, &u.Email, &u.Name, &u.AvatarURL, &u.CreatedAt)
|
||||
if err == pgx.ErrNoRows {
|
||||
return nil, nil
|
||||
}
|
||||
return &u, err
|
||||
}
|
||||
|
||||
func (db *DB) GetUserByEmail(ctx context.Context, email string) (*User, error) {
|
||||
var u User
|
||||
err := db.pool.QueryRow(ctx,
|
||||
`SELECT id, email, name, avatar_url, created_at FROM users WHERE email = $1`,
|
||||
email).Scan(&u.ID, &u.Email, &u.Name, &u.AvatarURL, &u.CreatedAt)
|
||||
if err == pgx.ErrNoRows {
|
||||
return nil, nil
|
||||
}
|
||||
return &u, err
|
||||
}
|
||||
|
||||
func (db *DB) GetUserByIdentity(ctx context.Context, provider, providerID string) (*User, error) {
|
||||
var u User
|
||||
err := db.pool.QueryRow(ctx,
|
||||
`SELECT u.id, u.email, u.name, u.avatar_url, u.created_at
|
||||
FROM users u
|
||||
JOIN user_identities i ON i.user_id = u.id
|
||||
WHERE i.provider = $1 AND i.provider_id = $2`,
|
||||
provider, providerID).Scan(&u.ID, &u.Email, &u.Name, &u.AvatarURL, &u.CreatedAt)
|
||||
if err == pgx.ErrNoRows {
|
||||
return nil, nil
|
||||
}
|
||||
return &u, err
|
||||
}
|
||||
|
||||
func (db *DB) CreateUser(ctx context.Context, email, name, avatarURL string) (*User, error) {
|
||||
var u User
|
||||
err := db.pool.QueryRow(ctx,
|
||||
`INSERT INTO users (email, name, avatar_url)
|
||||
VALUES ($1, $2, $3)
|
||||
RETURNING id, email, name, avatar_url, created_at`,
|
||||
email, name, avatarURL).Scan(&u.ID, &u.Email, &u.Name, &u.AvatarURL, &u.CreatedAt)
|
||||
return &u, err
|
||||
}
|
||||
|
||||
func (db *DB) AddUserIdentity(ctx context.Context, userID, provider, providerID, providerEmail string) error {
|
||||
_, err := db.pool.Exec(ctx,
|
||||
`INSERT INTO user_identities (user_id, provider, provider_id, provider_email)
|
||||
VALUES ($1, $2, $3, $4)
|
||||
ON CONFLICT (provider, provider_id) DO NOTHING`,
|
||||
userID, provider, providerID, providerEmail)
|
||||
return err
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue