@@ -13,6 +13,13 @@ import (
1313
1414/* converts project session struct into PostgreSQL supported format */
1515func 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