Skip to content

Commit 4e4ca0a

Browse files
committed
Some fixes.
1 parent 5cb956c commit 4e4ca0a

2 files changed

Lines changed: 25 additions & 18 deletions

File tree

session/sqlite-store.lisp

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@
118118
Call this once during server startup, before using STORE for session operations."
119119
(check-type store sqlite-store)
120120
(with-store-lock (store)
121-
(let ((table-name (store-table-name store)))
121+
(let ((table-name (sqlite-store-table-name store)))
122122
(sqlite:execute-non-query
123123
(sqlite-store-connection store)
124124
(create-table-statement table-name))
@@ -136,15 +136,16 @@
136136
(defun %find-session (store session-id)
137137
(car (sqlite:execute-to-list
138138
(sqlite-store-connection store)
139-
(find-session-by-id-statement (store-table-name store))
139+
(find-session-by-id-statement (sqlite-store-table-name store))
140140
session-id)))
141141

142142
(defun %session-object-from-row (store row)
143-
(make-session-object (row-column row 0)
144-
(funcall (sqlite-store-data-deserializer store) (row-column row 1))
145-
(row-column row 2)
146-
(row-column row 3)
147-
(row-column row 4)))
143+
(%make-session-object (%row-column row 0)
144+
(funcall (sqlite-store-data-deserializer store)
145+
(%row-column row 1))
146+
(%row-column row 2)
147+
(%row-column row 3)
148+
(%row-column row 4)))
148149

149150
(defun %recover-session (store session-id)
150151
(let ((row (%find-session store session-id)))
@@ -159,7 +160,7 @@
159160
(sqlite-store-max-age-seconds store)))))
160161
(let ((row (car (sqlite:execute-to-list
161162
(sqlite-store-connection store)
162-
(insert-session-statement (store-table-name store))
163+
(insert-session-statement (sqlite-store-table-name store))
163164
session-id
164165
(funcall (sqlite-store-data-serializer store) data)
165166
created-at
@@ -169,12 +170,12 @@
169170

170171
(defmethod io.github.cl-sdk.wst.session:recover-session ((store sqlite-store) session-id &key &allow-other-keys)
171172
(with-store-lock (store)
172-
(cleanup-expired-sessions store)
173+
(io.github.cl-sdk.wst.session:cleanup-expired-sessions store :before-date (now))
173174
(%recover-session store session-id)))
174175

175176
(defmethod io.github.cl-sdk.wst.session:update-session ((store sqlite-store) session &key &allow-other-keys)
176177
(with-store-lock (store)
177-
(cleanup-expired-sessions store)
178+
(io.github.cl-sdk.wst.session:cleanup-expired-sessions store :before-date (now))
178179
(let* ((id (getf session :id))
179180
(data (getf session :data))
180181
(updated-at (now))
@@ -184,29 +185,29 @@
184185
(error "Session object must include :id when updating."))
185186
(let ((row (car (sqlite:execute-to-list
186187
(sqlite-store-connection store)
187-
(update-session-statement (store-table-name store))
188+
(update-session-statement (sqlite-store-table-name store))
188189
(funcall (sqlite-store-data-serializer store) data)
189190
updated-at
190191
expires-at
191192
id))))
192193
(%session-object-from-row store row)))))
193-
194+
o
194195
(defmethod io.github.cl-sdk.wst.session:session-exists-p ((store sqlite-store) session-id &key &allow-other-keys)
195196
(with-store-lock (store)
196-
(cleanup-expired-sessions store)
197+
(io.github.cl-sdk.wst.session:cleanup-expired-sessions store :before-date (now))
197198
(not (null (%find-session store session-id)))))
198199

199200
(defmethod io.github.cl-sdk.wst.session:renew-session ((store sqlite-store) session-id &optional additional-time &key &allow-other-keys)
200201
(with-store-lock (store)
201-
(cleanup-expired-sessions store)
202+
(io.github.cl-sdk.wst.session:cleanup-expired-sessions store :before-date (now))
202203
(let* ((row (%find-session store session-id)))
203204
(when row
204205
(let* ((new-expires-at (+ (now)
205206
(or additional-time
206207
(sqlite-store-max-age-seconds store))))
207208
(updated-row (car (sqlite:execute-to-list
208209
(sqlite-store-connection store)
209-
(renew-session-statement (store-table-name store))
210+
(renew-session-statement (sqlite-store-table-name store))
210211
new-expires-at
211212
(now)
212213
session-id))))
@@ -217,12 +218,12 @@
217218
(with-store-lock (store)
218219
(sqlite:execute-non-query
219220
(sqlite-store-connection store)
220-
(delete-session-statement (store-table-name store))
221+
(delete-session-statement (sqlite-store-table-name store))
221222
session-id)))
222223

223-
(defmethod io.github.cl-sdk.wst.session:cleanup-expired-sessions ((store sqlite-store) &key date)
224+
(defmethod io.github.cl-sdk.wst.session:cleanup-expired-sessions ((store sqlite-store) &key before-date)
224225
(with-slots (table-name connection)
225226
store
226227
(sqlite:execute-non-query connection
227228
(delete-expired-session-statement table-name)
228-
date)))
229+
before-date)))

t/session-sqlite-store-tests.lisp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
(in-package :io.github.cl-sdk.wst.session.sqlite.test)
55

6+
(5am:run! 'io.github.cl-sdk.wst.session.sqlite-store.suite)
7+
68
(5am:def-suite io.github.cl-sdk.wst.session.sqlite-store.suite
79
:description "Tests for SQLite-backed io.github.cl-sdk.wst.session store.")
810

@@ -37,6 +39,8 @@
3739
(when (probe-file db-path)
3840
(delete-file db-path)))))
3941

42+
(5am:run! 'sqlite-store-create-and-recover-session)
43+
4044
(5am:def-test sqlite-store-create-and-recover-session ()
4145
(with-sqlite-session-store (store)
4246
(let* ((created (io.github.cl-sdk.wst.session:create-session store
@@ -81,6 +85,8 @@
8185
(5am:is-false (io.github.cl-sdk.wst.session:session-exists-p store session-id))
8286
(5am:is-false (io.github.cl-sdk.wst.session:recover-session store session-id)))))
8387

88+
(5am:run! 'sqlite-store-does-not-recover-expired-session)
89+
8490
(5am:def-test sqlite-store-does-not-recover-expired-session ()
8591
(with-sqlite-session-store (store)
8692
(let* ((created (io.github.cl-sdk.wst.session:create-session

0 commit comments

Comments
 (0)