Formalize errors and error handling
[candle] / src / main / base.lisp
index 3fe9dbe1fa5749f90e42157f418aeccf63c290ee..871da36596bc4939a5cf924cb1c5df7b839defba 100644 (file)
@@ -2,8 +2,22 @@
 
 (defvar *candle-dir*)
 
+(define-condition candle-error (error) ((reason :initarg :reason :reader candle-error-reason)))
+(defun raise-candle-error (reason) (error (make-instance 'candle-error :reason reason)))
+
 (lame-db:defdbstruct project name src)
-(lame-db:defdbstruct job status sha when-run (project :join project))
+
+; Status here is:
+; - :queued - to be run
+; - :failed - job failed
+; - :succeeded - job succeeded
+; - :no-candle-file - no candle file was found
+; - :in-progress - job is running
+(lame-db:defdbstruct job status sha create-date log (project :join project))
+
+; in-git here refers to whether the branch exists in git.  As branches get deleted,
+; this will get set to nil but we keep them around for historical reference
+(lame-db:defdbstruct branch name in-git (project :join project) (job :join job))
 
 (defun project-dir (project)
  (format nil "~Arepos/~A/" *candle-dir* (project-name project)))