Yu-Gi-Oh! Deck Building and Card Inventory Management web interface written in Common Lisp, utilizing HTMX.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
- #|
-
- # File Attachments
-
- Attachment class for saving metadata into RDBMS
-
- See MITO-ATTACHMENT for more information: <https://github.com/fukamachi/mito-attachment>
-
- TODO AWS Storage / CC API Upload?
-
- Here's the bit of code for the FILEs:
-
- ;; (destructuring-bind (content filename content-type)
- ;; file
- ;; (if (and (eq (type-of content) 'flex::vector-input-stream)
- ;; (> (length (flex::vector-stream-vector content)) 0))
- ;; ...))
-
- |#
-
- (in-package #:cl-deck-builder2.models.attachment)
-
- (defclass attachment (mito-attachment:attachment) ()
- (:metaclass registered-table-class))
-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun create-attachment (content file-key content-type)
- "Use CREATE-DAO to construct a new ATTACHMENT instance. Return the instance if successful, NIL otherwise."
- (create-dao 'attachment
- :content content
- :file-key file-key
- :content-type content-type))
-
- (defun attachment-valid-p (file)
- "Helper function. Ensure FILE data from Caveman has valid:
-
- - Type: 'FLEX::VECTOR-INPUT-STREAM
- - Filename: Length > 0
- - File Length: Content Length > 0"
- (destructuring-bind (content filename content-type)
- file
- ;; XXX Don't ignore content type?
- (declare (ignore content-type))
- (and (eq (type-of content) 'flex::vector-input-stream)
- (> (length (flex::vector-stream-vector content)) 0)
- (> (length filename) 0))))
|