Skip to content

Commit

Permalink
Switch to startkey/endkey slices of dates rather than map-reduce.
Browse files Browse the repository at this point in the history
  • Loading branch information
eee-c committed Jul 19, 2009
1 parent 2d8df93 commit 91db5d9
Show file tree
Hide file tree
Showing 7 changed files with 39 additions and 40 deletions.
2 changes: 1 addition & 1 deletion couch/_design/meals/views/by_date/map.js
@@ -1,5 +1,5 @@
function (doc) {
if (doc['type'] == 'Meal') {
emit(doc['date'], [doc['_id'], doc['title']]);
emit(doc['date'], doc);
}
}
12 changes: 8 additions & 4 deletions eee.rb
Expand Up @@ -70,9 +70,11 @@
end

get %r{/meals/(\d+)/(\d+)} do |year, month|
url = "#{@@db}/_design/meals/_view/by_month?group=true&key=%22#{year}-#{month}%22"
url = "#{@@db}/_design/meals/_view/by_date?" +
"startkey=%22#{year}/#{month}/00%22&" +
"endkey=%22#{year}/#{month}/99%22"
data = RestClient.get url
@meals = JSON.parse(data)
@meals = JSON.parse(data)['rows'].map{|r| r['value']}
@month = "#{year}-#{month}"

url = "#{@@db}/_design/meals/_view/count_by_month?group=true"
Expand All @@ -83,9 +85,11 @@
end

get %r{/meals/(\d+)} do |year|
url = "#{@@db}/_design/meals/_view/by_year?group=true&key=%22#{year}%22"
url = "#{@@db}/_design/meals/_view/by_date?" +
"startkey=%22#{year}/00/00%22&" +
"endkey=%22#{year}/99/99%22"
data = RestClient.get url
@meals = JSON.parse(data)
@meals = JSON.parse(data)['rows'].map{|r| r['value']}
@year = year

url = "#{@@db}/_design/meals/_view/count_by_year?group=true"
Expand Down
6 changes: 3 additions & 3 deletions spec/eee_spec.rb
Expand Up @@ -148,7 +148,7 @@
it "should ask CouchDB for meal from year YYYY" do
RestClient.
should_receive(:get).
with(/key=...2009/).
with(%r{by_date.+startkey=.+2009/00/00.+endkey=.+2009/99/99}).
and_return('{"rows": [] }')

get "/meals/2009"
Expand All @@ -171,10 +171,10 @@
last_response.should be_ok
end

it "should ask CouchDB for meal from year YYYY and month MM" do
it "should ask CouchDB for meals from year YYYY and month MM" do
RestClient.
should_receive(:get).
with(/key=...2009-05/).
with(%r{by_date.+startkey=.+2009/05/00.+endkey=.+2009/05/99}).
and_return('{"rows": [] }')

get "/meals/2009/05"
Expand Down
38 changes: 17 additions & 21 deletions spec/views/meal_by_month.haml_spec.rb
Expand Up @@ -2,26 +2,22 @@

describe "meal_by_month.haml" do
before(:each) do
assigns[:meals] = {
'rows' => [
{ "value" => [{ "_id" => '2009-05-14',
"date" => '2009-05-14',
"title" => 'Meal 1',
"summary" => 'Meal 1 Summary',
"menu" => [],
"_attachments" => {"image1.jpg" => { }}
}]
},
{ "value" => [{ "_id" => '2009-05-15',
"date" => '2009-05-15',
"title" => 'Meal 2',
"summary" => 'Meal 2 Summary',
"menu" => %w(foo bar baz),
"_attachments" => {"image2.jpg" => { }}
}]
}
]
}
assigns[:meals] =
[{ "_id" => '2009-05-14',
"date" => '2009-05-14',
"title" => 'Meal 1',
"summary" => 'Meal 1 Summary',
"menu" => [],
"_attachments" => {"image1.jpg" => { }}
},
{ "_id" => '2009-05-15',
"date" => '2009-05-15',
"title" => 'Meal 2',
"summary" => 'Meal 2 Summary',
"menu" => %w(foo bar baz),
"_attachments" => {"image2.jpg" => { }}
}]

assigns[:year] = 2009
assigns[:month] = '05'
assigns[:count_by_year] = [{"key" => "2009-04", "value" => 3},
Expand Down Expand Up @@ -63,7 +59,7 @@
end

it "should include recipe titles in the menu items" do
assigns[:meals]['rows'][0]['value'][0]["menu"] =
assigns[:meals][0]["menu"] =
[" Salad with [recipe:2009/05/23/lemon_dressing] "]

self.stub!(:_db).and_return("")
Expand Down
12 changes: 6 additions & 6 deletions spec/views/meal_by_year.haml_spec.rb
Expand Up @@ -2,12 +2,12 @@

describe "meal_by_year.haml" do
before(:each) do
assigns[:meals] = {
'rows' => [
{ "value" => [['2009-05-14', 'Meal 1']]},
{ "value" => [['2009-05-15', 'Meal 2']]},
]
}
assigns[:meals] =
[{ 'date' => '2009-05-14',
'title' => 'Meal 1'},
{ 'date' => '2009-05-15',
'title' => 'Meal 2'}]

assigns[:year] = 2009
assigns[:count_by_year] = [{"key" => "2008", "value" => 3},
{"key" => "2009", "value" => 3}]
Expand Down
3 changes: 1 addition & 2 deletions views/meal_by_month.haml
Expand Up @@ -12,8 +12,7 @@
=link_to_adjacent_view_date(@month, @count_by_year) { |d,v| month_text(d) }

.meals
- @meals["rows"].each do |meal_result|
- meal = meal_result['value'][0]
- @meals.each do |meal|
- date = Date.parse(meal['date'])
= image_link meal, :width => 200, :height => 150
%h2
Expand Down
6 changes: 3 additions & 3 deletions views/meal_by_year.haml
Expand Up @@ -12,7 +12,7 @@
=link_to_adjacent_view_date(@year, @count_by_year)

%ul.meals
- @meals["rows"].each do |meal|
-date = Date.parse(meal['value'][0][0])
- @meals.each do |meal|
-date = Date.parse(meal['date'])
%li
%a{:href => date.strftime("/meals/%Y/%m/%d")}= meal['value'][0][1]
%a{:href => date.strftime("/meals/%Y/%m/%d")}= meal['title']

0 comments on commit 91db5d9

Please sign in to comment.