factor/extra/http/server/crud/crud.factor

68 lines
1.5 KiB
Factor
Raw Normal View History

2008-03-05 22:38:15 -05:00
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
2008-04-14 08:53:54 -04:00
USING: kernel namespaces db.tuples math.parser
accessors fry locals hashtables
http.server
http.server.actions
http.server.components
http.server.forms
http.server.validators ;
2008-03-05 22:38:15 -05:00
IN: http.server.crud
2008-03-11 04:39:09 -04:00
:: <view-action> ( form ctor -- action )
<action>
{ { "id" [ v-number ] } } >>get-params
[ "id" get ctor call select-tuple from-tuple ] >>init
[ form view-form ] >>display ;
2008-03-11 04:39:09 -04:00
: <id-redirect> ( id next -- response )
swap number>string "id" associate <standard-redirect> ;
2008-03-11 04:39:09 -04:00
2008-04-15 07:10:08 -04:00
:: <edit-action> ( form ctor next -- action )
2008-03-11 04:39:09 -04:00
<action>
2008-04-15 07:10:08 -04:00
{ { "id" [ [ v-number ] v-optional ] } } >>get-params
2008-03-11 04:39:09 -04:00
[
2008-04-15 07:10:08 -04:00
"id" get ctor call
2008-03-11 04:39:09 -04:00
2008-04-15 07:10:08 -04:00
"id" get
[ select-tuple from-tuple ]
[ from-tuple form set-defaults ]
if
] >>init
2008-03-11 04:39:09 -04:00
[ form edit-form ] >>display
2008-03-11 04:39:09 -04:00
[
f ctor call from-tuple
form validate-form
2008-04-15 07:10:08 -04:00
values-tuple
"id" value [ update-tuple ] [ insert-tuple ] if
2008-03-11 04:39:09 -04:00
"id" value next <id-redirect>
] >>submit ;
:: <delete-action> ( ctor next -- action )
2008-03-05 22:38:15 -05:00
<action>
2008-03-11 04:39:09 -04:00
{ { "id" [ v-number ] } } >>post-params
[
2008-04-29 22:04:06 -04:00
"id" get ctor call delete-tuples
2008-03-11 04:39:09 -04:00
next f <standard-redirect>
2008-03-11 04:39:09 -04:00
] >>submit ;
2008-04-15 07:10:08 -04:00
:: <list-action> ( form ctor -- action )
<action>
[
blank-values
2008-04-15 07:10:08 -04:00
f ctor call select-tuples "list" set-value
2008-04-15 07:10:08 -04:00
form view-form
2008-04-15 07:10:08 -04:00
] >>display ;