aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/guff.cr40
1 files changed, 31 insertions, 9 deletions
diff --git a/src/guff.cr b/src/guff.cr
index 8ea29fa..87e58ad 100644
--- a/src/guff.cr
+++ b/src/guff.cr
@@ -858,6 +858,8 @@ module Guff
-- TODO: handle posted_at and expired_at
ORDER BY COALESCE(b.posted_at, b.created_at) DESC
+
+ LIMIT ? OFFSET ?
",
add: "
@@ -896,14 +898,18 @@ module Guff
(ids.size > 0) ? ids.first : nil
end
+ # TODO: make this configurable
+ LIMIT = 50
+
def get_ids(
site_id : Int64,
year : Int32? = nil,
month : Int32? = nil,
day : Int32? = nil,
- slug : String? = nil
+ slug : String? = nil,
+ page : Int32? = nil
) : Array(Int64)
- sql = [] of String
+ sql = ["1"]
args = [site_id.to_s]
# STDERR.puts "DEBUG: site_id = #{site_id}, year = #{year}, month = #{month}, day = #{day}, slug = \"#{slug}\""
@@ -932,6 +938,12 @@ module Guff
args << slug
end
+ page ||= 1
+ raise "invalid page: #{page}" if page < 1
+
+ args << LIMIT.to_s
+ args << ((page - 1) * LIMIT).to_s
+
# STDERR.puts "DEBUG: args = #{args.to_json}"
# exec query, build result
@@ -2109,6 +2121,10 @@ module Guff
class LogoutPageView < HTMLView
ECR.def_to_s("src/views/logout-page.ecr")
end
+
+ class BlogListView < HTMLView
+ ECR.def_to_s("src/views/blog-list.ecr")
+ end
end
module Handlers
@@ -2522,6 +2538,7 @@ module Guff
class BlogPostHandler < Handler
PATH_RE = %r{^
+ (/blog)?
/(?<year>\d{4})
/(?<month>\d{2})
/(?<day>\d{2})
@@ -2564,11 +2581,15 @@ module Guff
end
class BlogListHandler < Handler
- PATH_RE = %r{^
- /(?<year>\d{4})/
+ # TODO: make index page configurable
+ PATH_RE = %r{^/
+ (blog/?)?
(
- (?<month>\d{2})/
- ((?<day>\d{2})/)?
+ (?<year>\d{4})/
+ (
+ (?<month>\d{2})/
+ ((?<day>\d{2})/)?
+ )?
)?
$}x
@@ -2593,9 +2614,10 @@ module Guff
if site_id = get_site_id(request.headers["host"]?)
r = @context.models.blog.get_ids(
site_id: site_id,
- year: md["year"].to_i,
+ year: md["year"]? ? md["year"].to_i : nil,
month: md["month"]? ? md["month"].to_i : nil,
day: md["day"]? ? md["day"].to_i : nil,
+ page: md["page"]? ? md["page"].to_i : nil,
)
end
end
@@ -2685,12 +2707,12 @@ module Guff
LogoutPageHandler.new(context)
when :page
PageHandler.new(context)
- when :project
- ProjectHandler.new(context)
when :blog_post
BlogPostHandler.new(context)
when :blog_list
BlogListHandler.new(context)
+ when :project
+ ProjectHandler.new(context)
else
raise "unknown handler id: #{handler_id}"
end