mirror of
https://github.com/lordmathis/lemma.git
synced 2025-11-05 23:44:22 +00:00
Update sessions to query builder
This commit is contained in:
@@ -10,11 +10,11 @@ import (
|
|||||||
|
|
||||||
// CreateSession inserts a new session record into the database
|
// CreateSession inserts a new session record into the database
|
||||||
func (db *database) CreateSession(session *models.Session) error {
|
func (db *database) CreateSession(session *models.Session) error {
|
||||||
_, err := db.Exec(`
|
query := NewQuery(db.dbType).
|
||||||
INSERT INTO sessions (id, user_id, refresh_token, expires_at, created_at)
|
Insert("sessions", "id", "user_id", "refresh_token", "expires_at", "created_at").
|
||||||
VALUES (?, ?, ?, ?, ?)`,
|
Values(5).
|
||||||
session.ID, session.UserID, session.RefreshToken, session.ExpiresAt, session.CreatedAt,
|
AddArgs(session.ID, session.UserID, session.RefreshToken, session.ExpiresAt, session.CreatedAt)
|
||||||
)
|
_, err := db.Exec(query.String(), query.Args()...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to store session: %w", err)
|
return fmt.Errorf("failed to store session: %w", err)
|
||||||
}
|
}
|
||||||
@@ -25,12 +25,14 @@ func (db *database) CreateSession(session *models.Session) error {
|
|||||||
// GetSessionByRefreshToken retrieves a session by its refresh token
|
// GetSessionByRefreshToken retrieves a session by its refresh token
|
||||||
func (db *database) GetSessionByRefreshToken(refreshToken string) (*models.Session, error) {
|
func (db *database) GetSessionByRefreshToken(refreshToken string) (*models.Session, error) {
|
||||||
session := &models.Session{}
|
session := &models.Session{}
|
||||||
err := db.QueryRow(`
|
query := NewQuery(db.dbType).
|
||||||
SELECT id, user_id, refresh_token, expires_at, created_at
|
Select("id", "user_id", "refresh_token", "expires_at", "created_at").
|
||||||
FROM sessions
|
From("sessions").
|
||||||
WHERE refresh_token = ? AND expires_at > ?`,
|
Where("refresh_token = ").
|
||||||
refreshToken, time.Now(),
|
Placeholder(refreshToken).
|
||||||
).Scan(&session.ID, &session.UserID, &session.RefreshToken, &session.ExpiresAt, &session.CreatedAt)
|
And("expires_at >").
|
||||||
|
Placeholder(time.Now())
|
||||||
|
err := db.QueryRow(query.String(), query.Args()...).Scan(&session.ID, &session.UserID, &session.RefreshToken, &session.ExpiresAt, &session.CreatedAt)
|
||||||
|
|
||||||
if err == sql.ErrNoRows {
|
if err == sql.ErrNoRows {
|
||||||
return nil, fmt.Errorf("session not found or expired")
|
return nil, fmt.Errorf("session not found or expired")
|
||||||
@@ -45,12 +47,14 @@ func (db *database) GetSessionByRefreshToken(refreshToken string) (*models.Sessi
|
|||||||
// GetSessionByID retrieves a session by its ID
|
// GetSessionByID retrieves a session by its ID
|
||||||
func (db *database) GetSessionByID(sessionID string) (*models.Session, error) {
|
func (db *database) GetSessionByID(sessionID string) (*models.Session, error) {
|
||||||
session := &models.Session{}
|
session := &models.Session{}
|
||||||
err := db.QueryRow(`
|
query := NewQuery(db.dbType).
|
||||||
SELECT id, user_id, refresh_token, expires_at, created_at
|
Select("id", "user_id", "refresh_token", "expires_at", "created_at").
|
||||||
FROM sessions
|
From("sessions").
|
||||||
WHERE id = ? AND expires_at > ?`,
|
Where("id = ").
|
||||||
sessionID, time.Now(),
|
Placeholder(sessionID).
|
||||||
).Scan(&session.ID, &session.UserID, &session.RefreshToken, &session.ExpiresAt, &session.CreatedAt)
|
And("expires_at >").
|
||||||
|
Placeholder(time.Now())
|
||||||
|
err := db.QueryRow(query.String(), query.Args()...).Scan(&session.ID, &session.UserID, &session.RefreshToken, &session.ExpiresAt, &session.CreatedAt)
|
||||||
|
|
||||||
if err == sql.ErrNoRows {
|
if err == sql.ErrNoRows {
|
||||||
return nil, fmt.Errorf("session not found")
|
return nil, fmt.Errorf("session not found")
|
||||||
@@ -64,7 +68,13 @@ func (db *database) GetSessionByID(sessionID string) (*models.Session, error) {
|
|||||||
|
|
||||||
// DeleteSession removes a session from the database
|
// DeleteSession removes a session from the database
|
||||||
func (db *database) DeleteSession(sessionID string) error {
|
func (db *database) DeleteSession(sessionID string) error {
|
||||||
result, err := db.Exec("DELETE FROM sessions WHERE id = ?", sessionID)
|
query := NewQuery(db.dbType).
|
||||||
|
Delete().
|
||||||
|
From("sessions").
|
||||||
|
Where("id = ").
|
||||||
|
Placeholder(sessionID)
|
||||||
|
|
||||||
|
result, err := db.Exec(query.String(), query.Args()...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to delete session: %w", err)
|
return fmt.Errorf("failed to delete session: %w", err)
|
||||||
}
|
}
|
||||||
@@ -84,7 +94,12 @@ func (db *database) DeleteSession(sessionID string) error {
|
|||||||
// CleanExpiredSessions removes all expired sessions from the database
|
// CleanExpiredSessions removes all expired sessions from the database
|
||||||
func (db *database) CleanExpiredSessions() error {
|
func (db *database) CleanExpiredSessions() error {
|
||||||
log := getLogger().WithGroup("sessions")
|
log := getLogger().WithGroup("sessions")
|
||||||
result, err := db.Exec("DELETE FROM sessions WHERE expires_at <= ?", time.Now())
|
query := NewQuery(db.dbType).
|
||||||
|
Delete().
|
||||||
|
From("sessions").
|
||||||
|
Where("expires_at <=").
|
||||||
|
Placeholder(time.Now())
|
||||||
|
result, err := db.Exec(query.String(), query.Args()...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to clean expired sessions: %w", err)
|
return fmt.Errorf("failed to clean expired sessions: %w", err)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user