読者です 読者をやめる 読者になる 読者になる

find-kahua-instance

kahua

(find-kahua-instance class slot-name slot-value)で使うときは、slot-nameが:indexでかつ:uniqueでないといけないらしい。

blog(3sq:59mvs)> (find-kahua-instance <article> 'title "test2")
*** ERROR: value for key :index is not provided: (:allocation :persistent :init-keyword :title :init-value "")
Stack Trace:
_______________________________________
  0  (kahua-error-string e #t)
        At line 285 of "/home/troter/c/kahua/lib/kahua/kahua/server.scm"
  1  (slot-definition-option slot :index)
        At line 1664 of "/home/troter/c/kahua/lib/kahua/kahua/persistence.scm"
  2  (index-slot-type class slot-name)
        At line 1670 of "/home/troter/c/kahua/lib/kahua/kahua/persistence.scm"
  3  (eval body env)
        At line 287 of "/home/troter/c/kahua/lib/kahua/kahua/server.scm"
  4  (with-error-to-port error-output (cut with-output-to-port std-outp ...
        At line 212 of "/home/troter/c/kahua/lib/kahua/kahua/server.scm"
  5  (kahua-default-handler header body reply-cont default-handler :err ...
        At line 116 of "/home/troter/c/kahua/lib/kahua/kahua-server.scm"
  6  proc

  7  (with-error-handler (lambda (e) (let ((e e)) (%guard-rec e e (else ...
        [unknown location]
  8  (for-each (lambda (h) (apply (car h) (cdr h))) (append (pick-handl ...
        At line 130 of "/home/troter/local/share/gauche/0.8.9/lib/gauche/selector.scm"
  9  (selector-select selector)
        At line 165 of "/home/troter/c/kahua/lib/kahua/kahua-server.scm"
 10  (do ((limit 100) (_ 0 (+ _ 1))) ((>= _ limit)) (selector-select se ...
        [unknown location]
 11  proc

 12  (run-server worker-id sockaddr profile)
        At line 245 of "/home/troter/c/kahua/lib/kahua/kahua-server.scm"
 13  (call/cc (lambda (bye) (define (finish-server sig) (log-format "[~ ...
        At line 231 of "/home/troter/c/kahua/lib/kahua/kahua-server.scm"

blog(3sq:59mvs)> (find-kahua-instance <article> 'title "test2")
*** KAHUA-PERSISTENCE-ERROR: title is not a unique index slot
Stack Trace:
_______________________________________
  0  (kahua-error-string e #t)
        At line 285 of "/home/troter/c/kahua/lib/kahua/kahua/server.scm"
  1  (eval body env)
        At line 287 of "/home/troter/c/kahua/lib/kahua/kahua/server.scm"
  2  (with-error-to-port error-output (cut with-output-to-port std-outp ...
        At line 212 of "/home/troter/c/kahua/lib/kahua/kahua/server.scm"
  3  (kahua-default-handler header body reply-cont default-handler :err ...
        At line 116 of "/home/troter/c/kahua/lib/kahua/kahua-server.scm"
  4  proc

  5  (with-error-handler (lambda (e) (let ((e e)) (%guard-rec e e (else ...
        [unknown location]
  6  (for-each (lambda (h) (apply (car h) (cdr h))) (append (pick-handl ...
        At line 130 of "/home/troter/local/share/gauche/0.8.9/lib/gauche/selector.scm"
  7  (selector-select selector)
        At line 165 of "/home/troter/c/kahua/lib/kahua/kahua-server.scm"
  8  (do ((limit 100) (_ 0 (+ _ 1))) ((>= _ limit)) (selector-select se ...
        [unknown location]
  9  proc

 10  (run-server worker-id sockaddr profile)
        At line 245 of "/home/troter/c/kahua/lib/kahua/kahua-server.scm"
 11  (call/cc (lambda (bye) (define (finish-server sig) (log-format "[~ ...
        At line 231 of "/home/troter/c/kahua/lib/kahua/kahua-server.scm"

make-kahua-collectionで:indexを使うときはslot-nameは:indexである必要があるけど、:uniqueを指定しなくてもよい。