github.com/nais/knorten@v0.0.0-20240104110906-55926958e361/pkg/database/sessions.go (about)

     1  package database
     2  
     3  import (
     4  	"context"
     5  	"database/sql"
     6  	"errors"
     7  	"strings"
     8  
     9  	"github.com/nais/knorten/pkg/api/auth"
    10  	"github.com/nais/knorten/pkg/database/gensql"
    11  )
    12  
    13  func (r *Repo) SessionCreate(ctx context.Context, session *auth.Session) error {
    14  	return r.querier.SessionCreate(ctx, gensql.SessionCreateParams{
    15  		Name:        session.Name,
    16  		Email:       strings.ToLower(session.Email),
    17  		Token:       session.Token,
    18  		AccessToken: session.AccessToken,
    19  		Expires:     session.Expires,
    20  		IsAdmin:     session.IsAdmin,
    21  	})
    22  }
    23  
    24  func (r *Repo) SessionGet(ctx context.Context, token string) (*auth.Session, error) {
    25  	dbSession, err := r.querier.SessionGet(ctx, token)
    26  	if err != nil {
    27  		return nil, err
    28  	}
    29  
    30  	return &auth.Session{
    31  		Email:       dbSession.Email,
    32  		Name:        dbSession.Name,
    33  		AccessToken: dbSession.AccessToken,
    34  		Token:       dbSession.Token,
    35  		Expires:     dbSession.Expires,
    36  		IsAdmin:     dbSession.IsAdmin,
    37  	}, nil
    38  }
    39  
    40  func (r *Repo) SessionDelete(ctx context.Context, token string) error {
    41  	err := r.querier.SessionDelete(ctx, token)
    42  	if err != nil {
    43  		if errors.Is(err, sql.ErrNoRows) {
    44  			r.log.Info("no session exists")
    45  			return nil
    46  		}
    47  		return err
    48  	}
    49  
    50  	return nil
    51  }