summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorckonstanski <kostcarl@isu.edu>2026-07-27 21:54:30 -0600
committerckonstanski <kostcarl@isu.edu>2026-07-27 21:54:30 -0600
commit5e4d73370cce03c6f0ca54738110611e487d7a40 (patch)
tree3c58459135d88d317af6ff41157116c496287c20 /src
parent971073a01f4793f0f6165f7bd53a110c6ce6ed9f (diff)
stuff
Diffstat (limited to 'src')
-rw-r--r--src/generics.lisp1
-rw-r--r--src/record-pkg.lisp3
-rw-r--r--src/record.lisp12
3 files changed, 16 insertions, 0 deletions
diff --git a/src/generics.lisp b/src/generics.lisp
index 59dbc12..feda1ea 100644
--- a/src/generics.lisp
+++ b/src/generics.lisp
@@ -14,6 +14,7 @@
:get-records
:insert-record
:update-record
+ :update-record-no-nulls
:delete-record
:call-pg-function
:intersect-slots
diff --git a/src/record-pkg.lisp b/src/record-pkg.lisp
index 7a5ceb2..38bb77d 100644
--- a/src/record-pkg.lisp
+++ b/src/record-pkg.lisp
@@ -13,6 +13,9 @@
(defmethod update-record ((record-pkg record-pkg) (record record))
(update-record* record))
+(defmethod update-record-no-nulls ((record-pkg record-pkg) (record record))
+ (update-record-no-nulls* record))
+
(defmethod delete-record ((record-pkg record-pkg) (record record))
(delete-record* record))
diff --git a/src/record.lisp b/src/record.lisp
index 9502899..cbd79e2 100644
--- a/src/record.lisp
+++ b/src/record.lisp
@@ -160,6 +160,15 @@ on those slots."
(field-value-pairs record)
(expand-where-expression record (*where-expression record)))))
+(defmethod update-query-no-nulls ((record record))
+ (if (null (*where-expression record))
+ (error 'org-ckons-condition::handled-error (format nil "Attempting to update a record of type ~a, but it has no *WHERE-EXPRESSION" (type-of record)))
+ (format nil
+ "UPDATE ~a SET ~a~a"
+ (org-ckons-core::format-list (if (slot-exists-p record '*write-table) (slot-value record '*write-table) (slot-value record '*table)) `(,(*project record)))
+ (field-value-pairs-no-nulls record)
+ (expand-where-expression record (*where-expression record)))))
+
(defmethod select-query ((record record))
(format nil
"SELECT ~a FROM ~a"
@@ -180,6 +189,9 @@ on those slots."
(defmethod update-record* ((record record))
(execute-command (update-query record)))
+(defmethod update-record-no-nulls* ((record record))
+ (execute-command (update-query-no-nulls record)))
+
(defmethod select-records-impl* ((record record) where-expression order-by-clause)
(let* ((where-string (expand-where-expression record where-expression))
(order-by-string (if (org-ckons-core::null-or-empty-p order-by-clause)