From c5c6a0bc7f48ced215867a955d89a3ef86fd30ad Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Sun, 5 May 2024 22:25:42 +0200 Subject: [PATCH] more on storage/tracking: start constructing SQL with sxql --- storage/storage.lisp | 9 ++++++--- storage/tracking.lisp | 27 +++++++++++++++++++++------ test/test-storage.lisp | 12 ++++++------ 3 files changed, 33 insertions(+), 15 deletions(-) diff --git a/storage/storage.lisp b/storage/storage.lisp index 2d1bad4..a5ad0c0 100644 --- a/storage/storage.lisp +++ b/storage/storage.lisp @@ -1,11 +1,14 @@ -;;; cl-scopes/storage +;;; cl-scopes/storage/storage.lisp ;;;; Common layer for SQL storage functionality. (defpackage :scopes/storage (:use :common-lisp) - (:export #:query - #:track #:time-stamp #:data)) + (:export #:storage)) (in-package :scopes/storage) +(defclass storage () + ((db :initarg :db) + (config :initarg :config) + (schema :initarg :schema))) diff --git a/storage/tracking.lisp b/storage/tracking.lisp index 9cebde9..155b0fd 100644 --- a/storage/tracking.lisp +++ b/storage/tracking.lisp @@ -2,11 +2,26 @@ ;;;; A simple generic (SQL-based) storage for tracks, messages, and other stuff. -(in-package :scopes/storage) +(defpackage :scopes/storage/tracking + (:use :common-lisp) + (:export #:track #:time-stamp #:data + #:container + #:crtable)) -(defclass track () ( - (head) - (time-stamp :reader time-stamp :accessor time-stamp!) - (data :accessor data) - (container :initarg :container :initform nil))) +(in-package :scopes/storage/tracking) +(defclass track () + ((head) + (time-stamp :reader time-stamp :accessor time-stamp!) + (data :accessor data :initform nil) + (container :initarg :container))) + +(defclass container () + ((storage :initarg :storage))) + +(defun crtable (tn) + (sxql:yield + (sxql:make-statement :create-table tn + (list + (list 'trackid :type 'bigserial :primary-key t) + (list 'taskid :type 'text))))) diff --git a/test/test-storage.lisp b/test/test-storage.lisp index 82d9c99..b33cb0c 100644 --- a/test/test-storage.lisp +++ b/test/test-storage.lisp @@ -4,18 +4,18 @@ (defpackage :scopes/test-storage (:use :common-lisp) - (:local-nicknames (:scs :scopes/storage) - (:sct :scopes/testing)) + (:local-nicknames (:tracking :scopes/storage/tracking) + (:t :scopes/testing)) (:export #:run)) (in-package :scopes/test-storage) (defun run () - (let ((tst (sct:test-suite))) + (let ((tst (t:test-suite))) (test-track tst) - (sct:result tst))) + (t:result tst))) (defun test-track (tst) - (let ((tr (make-instance 'scs:track))) + (let ((tr (make-instance 'tracking:track))) ;(setf (scs:data tr) nil) - (sct:assert-eq tst (scs:data tr) nil))) + (t:assert-eq tst (tracking:data tr) nil)))