summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcolin <colin@cicadas.surf>2022-12-28 12:56:20 -0800
committercolin <colin@cicadas.surf>2022-12-28 12:56:20 -0800
commitab0d667b3776786461d15112b648aafc3f00280f (patch)
treefe6224e48667f3a620033c5660e6bf63b34c5576
parent72bcf7e66269af588d9daa9064de23d257cbd053 (diff)
Refactor: to embrace the new dnd.api package more fully
The defendpoint* form installs the new endpoint into the default app, which is just hte name of the package. In this case, the GET "/heroes" endpoint is installed into the app called 'dnd.api:dnd.api It is a bit wierd but that's the full name of the app that you'll need to install into your http server instances. I moved *dnd-arena* to the dnd package b/c the site/view app will also be installed there. In addition, the conjure-arena function should also be part of the "top level" dnd package. In the package.lisp file, I reformatted the file a bit for legibility. More importantly, I exported dnd.api and init-db from the dnd.api package. In particular, the second export sends a clear signal that the view/site code will not touch the model at all.
-rw-r--r--api.lisp2
-rw-r--r--dnd.lisp16
-rw-r--r--init.lisp6
-rw-r--r--package.lisp47
4 files changed, 42 insertions, 29 deletions
diff --git a/api.lisp b/api.lisp
index ca60f21..f43127a 100644
--- a/api.lisp
+++ b/api.lisp
@@ -13,7 +13,7 @@
(declare (ignore ignore))
t)
-(defendpoint api :get "/heroes" ()
+(defendpoint* :get "/heroes" ()
(:auth t)
"Get a list of heros sorted by renown"
(json:to-json
diff --git a/dnd.lisp b/dnd.lisp
index a5cb0a4..4933d85 100644
--- a/dnd.lisp
+++ b/dnd.lisp
@@ -1,3 +1,19 @@
;;;; dnd.lisp
(in-package #:dnd)
+
+
+(defvar *dnd-arena* nil
+ "The instance of the HTTP server.")
+
+(defun conjure-arena ()
+ (setf *dnd-arena* (lzb:create-server))
+ (lzb:install-app
+ *dnd-arena*
+ (lzb:app 'dnd.api:dnd.api)) ; annoying but needed for now
+ (lzb:start-server *dnd-arena*))
+
+
+(defun start ()
+ (api:init-db)
+ (conjure-arena))
diff --git a/init.lisp b/init.lisp
index c3382aa..67e1fb9 100644
--- a/init.lisp
+++ b/init.lisp
@@ -10,12 +10,6 @@
:directory (merge-pathnames "dnd-store/" (user-homedir-pathname))
:subsystems (list (make-instance 'db:store-object-subsystem)))))
-(defvar *dnd-arena* nil
- "The instance of the HTTP server.")
-(defun conjure-arena ()
- (setf *dnd-arena* (lzb:create-server))
- (lzb:install-app *dnd-arena* 'api)
- (lzb:start-server *dnd-arena*))
diff --git a/package.lisp b/package.lisp
index ff06a36..16473c5 100644
--- a/package.lisp
+++ b/package.lisp
@@ -1,27 +1,30 @@
;;;; package.lisp
-(defpackage #:dnd
+(defpackage #:dnd.api
(:use #:cl)
- (:local-nicknames (#:db #:bknr.datastore)
- (#:idx #:bknr.indices)
- (#:lzb #:lazybones)
- (#:re #:cl-ppcre)
- (#:json #:jonathan))
- (:import-from #:lazybones
- #:defendpoint
- #:defendpoint*)
- (:import-from #:derrida
- #:with-plist))
+ (:local-nicknames
+ (#:db #:bknr.datastore)
+ (#:idx #:bknr.indices)
+ (#:lzb #:lazybones)
+ (#:re #:cl-ppcre)
+ (#:json #:jonathan))
+ (:import-from
+ #:lazybones
+ #:defendpoint
+ #:defendpoint*)
+ (:import-from
+ #:derrida
+ #:with-plist)
+ (:export
+ #:dnd.api
+ #:init-db))
-(defpackage #:dnd.api
+(defpackage #:dnd
(:use #:cl)
- (:local-nicknames (#:db #:bknr.datastore)
- (#:idx #:bknr.indices)
- (#:lzb #:lazybones)
- (#:re #:cl-ppcre)
- (#:json #:jonathan))
- (:import-from #:lazybones
- #:defendpoint
- #:defendpoint*)
- (:import-from #:derrida
- #:with-plist))
+ (:local-nicknames
+ (#:lzb #:lazybones)
+ (#:api #:dnd.api))
+ (:export
+ #:start))
+
+ ; the app's name