summaryrefslogtreecommitdiff
path: root/server/models.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'server/models.lisp')
-rw-r--r--server/models.lisp35
1 files changed, 35 insertions, 0 deletions
diff --git a/server/models.lisp b/server/models.lisp
new file mode 100644
index 0000000..8ee7f4d
--- /dev/null
+++ b/server/models.lisp
@@ -0,0 +1,35 @@
+(defpackage :cl-bbs/models
+ (:use :cl)
+ (:export #:thread
+ #:post
+ #:board
+ #:headline
+ #:posts
+ #:truncated
+ #:content
+ #:date
+ #:messages
+ #:vip
+ #:name))
+
+(in-package :cl-bbs/models)
+
+(defclass post ()
+ ((id :initarg :id :accessor post-id)
+ (date :initarg :date :accessor post-date)
+ (vip :initarg :vip :accessor post-vip :initform nil)
+ (content :initarg :content :accessor post-content))
+ (:documentation "Represents a single post on a message board."))
+
+(defclass thread ()
+ ((id :initarg :id :accessor thread-id)
+ (headline :initarg :headline :accessor thread-headline)
+ (date :initarg :date :accessor thread-date)
+ (messages :initarg :messages :accessor thread-messages :initform 1)
+ (truncated :initarg :truncated :accessor thread-truncated :initform nil)
+ (posts :initarg :posts :accessor thread-posts :initform nil))
+ (:documentation "Represents a thread consisting of a series of posts."))
+
+(defclass board ()
+ ((name :initarg :name :accessor board-name))
+ (:documentation "Represents a message board."))