From 7ead89d56e2d54bf65779f35ddfc63155fcce753 Mon Sep 17 00:00:00 2001 From: ckonstanski Date: Sun, 30 May 2021 22:01:56 -0600 Subject: initial commit --- src/postgres-record.lisp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/postgres-record.lisp (limited to 'src/postgres-record.lisp') diff --git a/src/postgres-record.lisp b/src/postgres-record.lisp new file mode 100644 index 0000000..5115a68 --- /dev/null +++ b/src/postgres-record.lisp @@ -0,0 +1,37 @@ +;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*- +(declaim (optimize (speed 0) (safety 3) (debug 3))) + +(in-package :org-ckons-sql) + +(defclass postgres-record (record) ()) + +(defun sysdate () + (simple-date-to-date (caar (execute-query (format nil "select now()"))))) + +(defun date-or-nothing (value) + (handler-case + (simple-date-to-date value) + (error (e) + (declare (ignore e)) + nil))) + +(defmethod to-date ((postgres-record postgres-record) date-string) + (quote-string date-string)) + +(defmethod sanitize ((postgres-record postgres-record) field) + (cond ((numberp field) + (if (integerp field) + (format nil "~a" (parse-integer (format nil "~a" field) :junk-allowed t)) + (org-ckons-core::real-to-string field :places 4))) + ((org-ckons-core::null-or-empty-p field) + "NULL") + ((stringp field) + (cond ((org-ckons-core::match-it "^\\d\\d\\d\\d-\\d\\d-\\d\\d \\d\\d:\\d\\d:\\d\\d" field) + (to-date postgres-record field)) + (t + (quote-string field)))) + (t + field))) + +(defmethod call-pg-function* ((postgres-record postgres-record)) + (execute-query (format nil "select * from ~a" (*table postgres-record)))) -- cgit v1.3