mirror of
https://github.com/gabehf/Koito.git
synced 2026-03-17 03:06:42 -07:00
chore: initial public commit
This commit is contained in:
commit
fc9054b78c
250 changed files with 32809 additions and 0 deletions
59
internal/db/psql/sessions.go
Normal file
59
internal/db/psql/sessions.go
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
package psql
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"time"
|
||||
|
||||
"github.com/gabehf/koito/internal/models"
|
||||
"github.com/gabehf/koito/internal/repository"
|
||||
"github.com/google/uuid"
|
||||
"github.com/jackc/pgx/v5"
|
||||
)
|
||||
|
||||
func (d *Psql) SaveSession(ctx context.Context, userID int32, expiresAt time.Time, persistent bool) (*models.Session, error) {
|
||||
session, err := d.q.InsertSession(ctx, repository.InsertSessionParams{
|
||||
ID: uuid.New(),
|
||||
UserID: userID,
|
||||
ExpiresAt: expiresAt,
|
||||
Persistent: persistent,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &models.Session{
|
||||
ID: session.ID,
|
||||
UserID: session.UserID,
|
||||
CreatedAt: session.CreatedAt,
|
||||
ExpiresAt: session.ExpiresAt,
|
||||
Persistent: session.Persistent,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (d *Psql) RefreshSession(ctx context.Context, sessionId uuid.UUID, expiresAt time.Time) error {
|
||||
return d.q.UpdateSessionExpiry(ctx, repository.UpdateSessionExpiryParams{
|
||||
ID: sessionId,
|
||||
ExpiresAt: expiresAt,
|
||||
})
|
||||
}
|
||||
|
||||
func (d *Psql) DeleteSession(ctx context.Context, sessionId uuid.UUID) error {
|
||||
return d.q.DeleteSession(ctx, sessionId)
|
||||
}
|
||||
|
||||
// Returns nil, nil when no database entries are found
|
||||
func (d *Psql) GetUserBySession(ctx context.Context, sessionId uuid.UUID) (*models.User, error) {
|
||||
row, err := d.q.GetUserBySession(ctx, sessionId)
|
||||
if errors.Is(err, pgx.ErrNoRows) {
|
||||
return nil, nil
|
||||
} else if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &models.User{
|
||||
ID: row.ID,
|
||||
Username: row.Username,
|
||||
Password: row.Password,
|
||||
Role: models.UserRole(row.Role),
|
||||
}, nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue