Skip to content

Commit 621ef77

Browse files
Added checks for invalid types
1 parent ac03fd7 commit 621ef77

File tree

1 file changed

+20
-8
lines changed

1 file changed

+20
-8
lines changed

internal/session/dbconv.go

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,13 @@ import (
1313

1414
/* converts project session struct into PostgreSQL supported format */
1515
func ConvertSessionToStoreParams(session *Session) (*postgresql.StoreSessionPQParams, error) {
16+
// Validate status
17+
status := string(session.Status)
18+
if status != string(StatusActive) && status != string(StatusExpired) && status != string(StatusPending) {
19+
return nil, fmt.Errorf("invalid session status: %q, must be one of: %q, %q, %q",
20+
status, StatusActive, StatusExpired, StatusPending)
21+
}
22+
1623
createdAt := pgtype.Timestamp{}
1724
if err := createdAt.Scan(session.CreatedAt); err != nil {
1825
return nil, err
@@ -28,15 +35,20 @@ func ConvertSessionToStoreParams(session *Session) (*postgresql.StoreSessionPQPa
2835
return nil, err
2936
}
3037

38+
completedCount := pgtype.Int4{Int32: int32(session.CompletedCount), Valid: true}
39+
failedCount := pgtype.Int4{Int32: int32(session.FailedCount), Valid: true}
40+
3141
return &postgresql.StoreSessionPQParams{
32-
ID: uuid.MustParse(session.ID.String()),
33-
Username: session.Username,
34-
Ip: pgtype.Text{String: session.IP, Valid: true},
35-
UserAgent: pgtype.Text{String: session.UserAgent, Valid: true},
36-
Status: string(session.Status),
37-
CreatedAt: createdAt,
38-
LastActiveAt: lastActiveAt,
39-
Expiry: expiry,
42+
ID: uuid.MustParse(session.ID.String()),
43+
Username: session.Username,
44+
Ip: pgtype.Text{String: session.IP, Valid: true},
45+
UserAgent: pgtype.Text{String: session.UserAgent, Valid: true},
46+
Status: status,
47+
CreatedAt: createdAt,
48+
LastActiveAt: lastActiveAt,
49+
Expiry: expiry,
50+
CompletedCount: completedCount,
51+
FailedCount: failedCount,
4052
}, nil
4153
}
4254

0 commit comments

Comments
 (0)