work in progress: move basic definitions from storage/tracking to shape

This commit is contained in:
Helmut Merz 2024-07-25 15:49:13 +02:00
parent 81ce777444
commit e8730daf79
5 changed files with 21 additions and 10 deletions

View file

@ -12,9 +12,10 @@
(:file "core/core"
:depends-on ("core/message" "config"
"forge/forge" "logging" "util"))
(:file "core/message")
(:file "core/message" :depends-on ("shape/shape"))
(:file "forge/forge")
(:file "logging" :depends-on ("config" "util"))
(:file "shape/shape")
(:file "util")
(:file "testing" :depends-on ("util")))
:long-description "scopes/core: The core packages of the scopes project."

View file

@ -1,4 +1,11 @@
;;;; cl-scopes/shape - really abstract basic data shape definitions.
(defpackage :scopes/shape
(:use :common-lisp))
(:use :common-lisp)
(:export #:record))
(in-package :scopes/shape)
(defclass record ()
((head :accessor head :initarg :head)
(data :accessor data :initform nil)))

View file

@ -15,7 +15,8 @@
(in-package :scopes/storage/tracking)
(defclass track ()
((trackid :accessor trackid :initform nil)
((head-fields :reader head-fields :initarg :head-fields :initform '(:taskid :username))
(trackid :accessor trackid :initform nil)
(head :accessor head :initarg :head)
(time-stamp :accessor time-stamp :initform nil)
(data :accessor data :initform nil)
@ -25,19 +26,20 @@
(funcall (getf (storage:params (storage (container tr))) :ts-sql) ts))
(defclass container ()
((item-factory :initform #'(lambda (cont head)
(make-instance 'track :container cont :head head)))
(head-fields :reader head-fields :initform '(:taskid :username))
((item-class :reader item-class :initarg :item-class :initform 'track)
(table-name :reader table-name :initform :tracks)
(indexes :reader indexes :initform '((taskid username) (username)))
(storage :reader storage :initarg :storage)))
(defmethod head-fields ((cont container))
(head-fields (make-instance (item-class cont))))
(defun make-item (cont &rest head)
(funcall (slot-value cont 'item-factory) cont head))
(make-instance (item-class cont) :head head :container cont))
(defun head-plist (track)
(let (pl (hv (head track)))
(dolist (hf (head-fields (container track)))
(dolist (hf (head-fields track))
(setf (getf pl hf) (if (car hv) (car hv) ""))
(setf hv (cdr hv)))
pl))

View file

@ -53,6 +53,6 @@
(deftest test-message (client)
(let ((msg (message:create '(:test :data :field :info) :data '(:info "test data"))))
(== (util:flatten-str (client:send-message client msg))
(== (client:send-message client msg)
"<div><div><label>info</label>: test data</div></div>")))
;"<dl><dt>info</dt><dd>test data</dd></dl>")))

View file

@ -40,6 +40,7 @@
(getf env :request-method)
(getf env :request-uri)
(gethash "accept" (getf env :headers)))
;(log:debug "request: ~s" env)
(funcall (select-app ctx env)))
(defun start (ctx)
@ -63,7 +64,7 @@
(setf (getf env :message-head) (nthcdr (length (car r)) path))
(return-from select-app
#'(lambda () (apply (cadr r) ctx env (cddr r)))))))
(message-handler ctx env))
#'(lambda () (message-handler ctx env)))
(defun match (pattern path)
(dolist (e pattern)