fix: add data-model-save wrapper
This tries to bypass a weird error where native "dm:save" fails with lambdalite.
This commit is contained in:
parent
74088ca47b
commit
8245917b28
|
|
@ -52,3 +52,21 @@
|
|||
(unless (dm:hull-p model)
|
||||
(loop for field in (dm:fields model)
|
||||
collect (cons field (dm:field model field)))))
|
||||
|
||||
(defun lambdalite-db-p ()
|
||||
"Checks if application is using lambdalite as database backend"
|
||||
(string= (string-upcase (package-name (db:implementation)))
|
||||
"I-LAMBDALITE"))
|
||||
|
||||
(defun data-model-save (data-model)
|
||||
"Wrapper on data-model save method to bypass error using dm:save on lambdalite.
|
||||
It uses the same approach as dm:save under the hood through db:save."
|
||||
(if (lambdalite-db-p)
|
||||
(progn
|
||||
(format t "Updating lambdalite collection '~a'~%" (dm:collection data-model))
|
||||
(db:update (dm:collection data-model)
|
||||
(db:query (:= '_id (dm:id data-model)))
|
||||
(dm:field-table data-model)))
|
||||
(progn
|
||||
(format t "Updating database table '~a'~%" (dm:collection data-model))
|
||||
(dm:save data-model))))
|
||||
|
|
|
|||
|
|
@ -68,7 +68,8 @@
|
|||
(verify-password password user-password))
|
||||
;; Update last login
|
||||
(setf (dm:field user "last-login") (local-time:timestamp-to-unix (local-time:now)))
|
||||
(dm:save user)
|
||||
;; (dm:save user)
|
||||
(data-model-save user)
|
||||
user)))))
|
||||
|
||||
(defun hash-password (password)
|
||||
|
|
@ -97,7 +98,8 @@
|
|||
(format t "New hash: ~a~%" new-hash)
|
||||
;; Try direct update with uppercase field name to match stored case
|
||||
(setf (dm:field user "password-hash") new-hash)
|
||||
(dm:save user)
|
||||
;; (dm:save user)
|
||||
(data-model-save user)
|
||||
;; Verify the update worked
|
||||
(let ((updated-user (find-user-by-username username)))
|
||||
(format t "Verification - fetching user again...~%")
|
||||
|
|
@ -203,7 +205,8 @@
|
|||
(if user
|
||||
(progn
|
||||
(setf (dm:field user "role") (string-downcase (symbol-name new-role)))
|
||||
(dm:save user)
|
||||
;; (dm:save user)
|
||||
(data-model-save user)
|
||||
t)
|
||||
(format t "Could not find user with id #~a~%" user-id)))
|
||||
(error (e)
|
||||
|
|
@ -215,7 +218,8 @@
|
|||
(handler-case
|
||||
(let ((user (find-user-by-id user-id)))
|
||||
(setf (dm:field user "active") 0)
|
||||
(dm:save user)
|
||||
;; (dm:save user)
|
||||
(data-model-save user)
|
||||
(format t "Deactivated user ~a~%" user-id)
|
||||
t)
|
||||
(error (e)
|
||||
|
|
@ -227,7 +231,8 @@
|
|||
(handler-case
|
||||
(let ((user (find-user-by-id user-id)))
|
||||
(setf (dm:field user "active") 1)
|
||||
(dm:save user)
|
||||
;; (dm:save user)
|
||||
(data-model-save user)
|
||||
(format t "Activated user ~a~%" user-id)
|
||||
t)
|
||||
(error (e)
|
||||
|
|
|
|||
Loading…
Reference in New Issue