From 01c3a185b85c138397a9e29fefc4ee2dd21847b0 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Fri, 13 Jun 2008 15:35:40 -0500 Subject: [PATCH 01/23] Fixing tests --- core/vectors/vectors-tests.factor | 2 +- extra/sequences/lib/lib-tests.factor | 1 - extra/sorting/insertion/insertion-tests.factor | 4 ++++ 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 extra/sorting/insertion/insertion-tests.factor diff --git a/core/vectors/vectors-tests.factor b/core/vectors/vectors-tests.factor index 7f4abe3222..3b2c94b2e5 100755 --- a/core/vectors/vectors-tests.factor +++ b/core/vectors/vectors-tests.factor @@ -26,7 +26,7 @@ IN: vectors.tests [ V{ 1 2 } ] [ [ 1 2 ] >vector ] unit-test [ t ] [ - 100 [ 100 random ] V{ } map-as + 100 [ 100 random ] V{ } replicate-as dup >array >vector = ] unit-test diff --git a/extra/sequences/lib/lib-tests.factor b/extra/sequences/lib/lib-tests.factor index ee447decdf..019796c1a1 100755 --- a/extra/sequences/lib/lib-tests.factor +++ b/extra/sequences/lib/lib-tests.factor @@ -80,7 +80,6 @@ IN: sequences.lib.tests [ ] [ { } 0 firstn ] unit-test [ "a" ] [ { "a" } 1 firstn ] unit-test -[ { { 1 1 } { 1 2 } { 2 0 } } ] [ { { 2 0 } { 1 1 } { 1 2 } } dup [ first ] insertion-sort ] unit-test [ "empty" ] [ { } [ "not empty" ] [ "empty" ] if-seq ] unit-test [ { 1 } "not empty" ] [ { 1 } [ "not empty" ] [ "empty" ] if-seq ] unit-test diff --git a/extra/sorting/insertion/insertion-tests.factor b/extra/sorting/insertion/insertion-tests.factor new file mode 100644 index 0000000000..38b0082ade --- /dev/null +++ b/extra/sorting/insertion/insertion-tests.factor @@ -0,0 +1,4 @@ +IN: sorting.insertion +USING: sorting.insertion sequences kernel tools.test ; + +[ { { 1 1 } { 1 2 } { 2 0 } } ] [ { { 2 0 } { 1 1 } { 1 2 } } dup [ first ] insertion-sort ] unit-test From a949c1038745f34e43716e52d69f7b588bc8bfcd Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Fri, 13 Jun 2008 20:54:31 -0500 Subject: [PATCH 02/23] Minor DB cleanup, add an ensure-tables word --- extra/db/sqlite/sqlite.factor | 2 +- extra/db/tuples/tuples.factor | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/extra/db/sqlite/sqlite.factor b/extra/db/sqlite/sqlite.factor index c7c9065b43..38a3899fc4 100755 --- a/extra/db/sqlite/sqlite.factor +++ b/extra/db/sqlite/sqlite.factor @@ -53,7 +53,7 @@ M: sqlite-result-set dispose ( result-set -- ) M: sqlite-statement low-level-bind ( statement -- ) [ statement-bind-params ] [ statement-handle ] bi - swap [ [ key>> ] [ value>> ] [ type>> ] tri sqlite-bind-type ] with each ; + [ swap [ key>> ] [ value>> ] [ type>> ] tri sqlite-bind-type ] curry each ; M: sqlite-statement bind-statement* ( statement -- ) sqlite-maybe-prepare diff --git a/extra/db/tuples/tuples.factor b/extra/db/tuples/tuples.factor index 4903adff5c..e02e21cbe6 100755 --- a/extra/db/tuples/tuples.factor +++ b/extra/db/tuples/tuples.factor @@ -122,6 +122,9 @@ M: retryable execute-statement* ( statement type -- ) : ensure-table ( class -- ) [ create-table ] curry ignore-errors ; +: ensure-tables ( classes -- ) + [ ensure-table ] each ; + : insert-db-assigned-statement ( tuple -- ) dup class db get db-insert-statements [ ] cache From e7b786ecfa9ea6448df3d1ee747cb3d2d21a6df6 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Fri, 13 Jun 2008 20:54:52 -0500 Subject: [PATCH 03/23] New furnace.alloy vocab makes things easier; add expiration for asides and flash scopes --- extra/furnace/alloy/alloy.factor | 24 +++++++ extra/furnace/asides/asides.factor | 64 +++++++++++++------ .../furnace/auth/providers/db/db-tests.factor | 2 +- extra/furnace/auth/providers/db/db.factor | 2 - extra/furnace/cache/cache.factor | 36 +++++++++++ extra/furnace/flash/flash.factor | 53 ++++++++++----- extra/furnace/sessions/sessions-tests.factor | 4 +- extra/furnace/sessions/sessions.factor | 34 +++------- extra/http/http-tests.factor | 8 +-- extra/http/server/server.factor | 4 +- .../persistent-vectors-tests.factor | 2 +- extra/webapps/blogs/blogs.factor | 4 -- .../factor-website/factor-website.factor | 34 ++++------ extra/webapps/pastebin/pastebin.factor | 4 -- extra/webapps/planet/planet.factor | 4 -- extra/webapps/todo/todo.factor | 2 - extra/webapps/wee-url/wee-url.factor | 3 - extra/webapps/wiki/wiki.factor | 4 -- 18 files changed, 171 insertions(+), 117 deletions(-) create mode 100644 extra/furnace/alloy/alloy.factor create mode 100644 extra/furnace/cache/cache.factor diff --git a/extra/furnace/alloy/alloy.factor b/extra/furnace/alloy/alloy.factor new file mode 100644 index 0000000000..24b47cc4b8 --- /dev/null +++ b/extra/furnace/alloy/alloy.factor @@ -0,0 +1,24 @@ +! Copyright (C) 2008 Slava Pestov. +! See http://factorcode.org/license.txt for BSD license. +USING: kernel sequences db.tuples alarms calendar db fry +furnace.cache +furnace.asides +furnace.flash +furnace.sessions +furnace.db +furnace.auth.providers ; +IN: furnace.alloy + +: ( responder db params -- responder' ) + [ ] 2dip ; + +: state-classes { session flash-scope aside } ; inline + +: init-furnace-tables ( -- ) + state-classes ensure-tables + user ensure-table ; + +: start-expiring ( db params -- ) + '[ + , , [ state-classes [ expire-state ] each ] with-db + ] 5 minutes every drop ; diff --git a/extra/furnace/asides/asides.factor b/extra/furnace/asides/asides.factor index f6b4e2c15f..fc767e050d 100644 --- a/extra/furnace/asides/asides.factor +++ b/extra/furnace/asides/asides.factor @@ -2,37 +2,60 @@ ! See http://factorcode.org/license.txt for BSD license. USING: accessors namespaces sequences arrays kernel assocs assocs.lib hashtables math.parser urls combinators -furnace http http.server http.server.filters furnace.sessions -html.elements html.templates.chloe.syntax ; +html.elements html.templates.chloe.syntax db.types db.tuples +http http.server http.server.filters +furnace furnace.cache furnace.sessions ; IN: furnace.asides -TUPLE: asides < filter-responder ; +TUPLE: aside < server-state session method url post-data ; -C: asides +: