;;;; cl-scopes/storage/msgstore - storing message data in a SQL database (defpackage :scopes/storage/msgstore (:use :common-lisp) (:local-nicknames (:message :scopes/core/message) (:shape :scopes/shape) (:storage :scopes/storage) (:tracking :scopes/storage/tracking)) (:export #:make-container #:save)) (in-package :scopes/storage/msgstore) (defclass pmsg (message:message tracking:track) ()) (defun indexes (cont) '((domain action class item) (domain class item))) (defun make-container (storage) (make-instance 'tracking:container :item-class 'pmsg :table-name :messages :index-factory #'indexes :storage storage)) (defun save (msg cont) (let ((pm (make-instance 'pmsg :head (shape:head msg) :data (shape:data msg) :container cont))) (tracking:insert pm)))