The controller (cb_tutorial_greeting_controller.erl):
-module(cb_tutorial_greeting_controller, [Req]).
-compile(export_all).
hello('GET', []) ->
{ok, [{greeting, "Hello, world!"}]}.
list('GET', []) ->
Greetings = boss_db:find(greeting, []),
{ok, [{greetings, Greetings}]}.
create('GET', []) ->
ok;
create('POST', []) ->
GreetingText = Req:post_param("greeting_text"),
NewGreeting = greeting:new(id, GreetingText),
case NewGreeting:save() of
{ok, SavedGreeting} ->
{redirect, [{action, "list"}]};
{error, ErrorList} ->
{ok, [{errors, ErrorList}, {new_msg, NewGreeting}]}
end.
goodbye('POST', []) ->
boss_db:delete(Req:post_param("greeting_id")),
{redirect, [{action, "list"}]}.
send_test_message('GET', []) ->
TestMessage = "Free at last!",
boss_mq:push("test-channel", TestMessage),
{output, TestMessage}.
pull('GET', [LastTimestamp]) ->
{ok, Timestamp, Greetings} = boss_mq:pull("new-greetings",
list_to_integer(LastTimestamp)),
{json, [{timestamp, Timestamp}, {greetings, Greetings}]}.
live('GET', []) ->
Greetings = boss_db:find(greeting, []),
Timestamp = boss_mq:now("new-greetings"),
{ok, [{greetings, Greetings}, {timestamp, Timestamp}]}.
And the model (greeting.erl):
-module(greeting, [Id, GreetingText]).
-compile(export_all).
validation_tests() ->
[{fun() -> length(GreetingText) > 0 end,
"Greeting must be non-empty!"},
{fun() -> length(GreetingText) =< 140 end,
"Greeting must be tweetable"}].
before_create() ->
ModifiedRecord = set(greeting_text,
re:replace(GreetingText,
"masticate", "chew",
[{return, list}])),
{ok, ModifiedRecord}.
after_create() ->
boss_mq:push("new-greetings", THIS).
Thanks
Romu
can2nac於 2014年1月14日星期二UTC+8下午10時05分09秒寫道: