From 4dd980963a594b27125a7607f5c010a832980240 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dario=20B=C3=B6sch?= Date: Thu, 21 May 2015 14:06:08 +0200 Subject: [PATCH] Moved filter of nodes of type blog to the node storage layer. This is more efficient because the result set from the query will be smaller and it will be easier to implement the pagination --- modules/node/cms_node_api.e | 4 +- modules/node/handler/blog_handler.e | 77 ++++++++++--------- modules/node/persistence/cms_node_storage_i.e | 2 +- .../node/persistence/cms_node_storage_null.e | 4 +- .../node/persistence/cms_node_storage_sql.e | 8 +- 5 files changed, 51 insertions(+), 44 deletions(-) diff --git a/modules/node/cms_node_api.e b/modules/node/cms_node_api.e index ab990ea..c811ebd 100644 --- a/modules/node/cms_node_api.e +++ b/modules/node/cms_node_api.e @@ -212,10 +212,10 @@ feature -- Access: Node Result := node_storage.nodes end - nodes_order_created_desc: LIST[CMS_NODE] + blogs_order_created_desc: LIST[CMS_NODE] -- List of nodes ordered by creation date (descending) do - Result := node_storage.nodes_order_created_desc + Result := node_storage.blogs end recent_nodes (a_offset, a_rows: INTEGER): LIST [CMS_NODE] diff --git a/modules/node/handler/blog_handler.e b/modules/node/handler/blog_handler.e index 58e50cf..1e8d67d 100644 --- a/modules/node/handler/blog_handler.e +++ b/modules/node/handler/blog_handler.e @@ -16,6 +16,15 @@ inherit create make +feature -- Settings + entries_per_page : INTEGER + -- The numbers of posts that are shown on one page. If there are more post a pagination is generated + do + -- For test reasons this is 2, so we don't have to create a lot of blog entries. + -- TODO: Set to bigger constant or load from global configuration file. + Result := 2 + end + feature -- HTTP Methods do_get (req: WSF_REQUEST; res: WSF_RESPONSE) -- @@ -35,8 +44,8 @@ feature -- HTTP Methods -- NOTE: for development purposes we have the following hardcode output. - create s.make_from_string ("

Blog entries:

") - if attached node_api.nodes_order_created_desc as lst then + create s.make_from_string ("

Blog

") + if attached node_api.blogs_order_created_desc as lst then -- Filter out blog entries from all nodes --if n.content_type.is_equal ("blog") then s.append ("%N") --end diff --git a/modules/node/persistence/cms_node_storage_i.e b/modules/node/persistence/cms_node_storage_i.e index 2a2051b..9b68303 100644 --- a/modules/node/persistence/cms_node_storage_i.e +++ b/modules/node/persistence/cms_node_storage_i.e @@ -70,7 +70,7 @@ feature -- Access deferred end - nodes_order_created_desc: LIST [CMS_NODE] + blogs: LIST [CMS_NODE] -- List of nodes ordered by creation date (descending). deferred end diff --git a/modules/node/persistence/cms_node_storage_null.e b/modules/node/persistence/cms_node_storage_null.e index a917ec5..c574235 100644 --- a/modules/node/persistence/cms_node_storage_null.e +++ b/modules/node/persistence/cms_node_storage_null.e @@ -41,12 +41,12 @@ feature -- Access: node create {ARRAYED_LIST [CMS_NODE]} Result.make (0) end - nodes_order_created_desc: LIST[CMS_NODE] + blogs: LIST[CMS_NODE] -- List of nodes ordered descending by creation date do create {ARRAYED_LIST [CMS_NODE]} Result.make (0) end - + recent_nodes (a_lower: INTEGER; a_count: INTEGER): LIST [CMS_NODE] -- List of the `a_count' most recent nodes, starting from `a_lower'. do diff --git a/modules/node/persistence/cms_node_storage_sql.e b/modules/node/persistence/cms_node_storage_sql.e index 5d9c7f2..7365f80 100644 --- a/modules/node/persistence/cms_node_storage_sql.e +++ b/modules/node/persistence/cms_node_storage_sql.e @@ -33,7 +33,7 @@ feature -- Access end end - nodes_order_created_desc: LIST [CMS_NODE] + blogs: LIST [CMS_NODE] -- List of nodes ordered by creation date (descending). do create {ARRAYED_LIST [CMS_NODE]} Result.make (0) @@ -42,7 +42,7 @@ feature -- Access write_information_log (generator + ".nodes") from - sql_query (sql_select_nodes_order_created_desc, Void) + sql_query (sql_select_blogs_order_created_desc, Void) sql_start until sql_after @@ -254,8 +254,8 @@ feature {NONE} -- Queries -- SQL Query to retrieve all nodes. --| note: {CMS_NODE_API}.trashed = -1 - sql_select_nodes_order_created_desc: STRING = "SELECT * FROM Nodes WHERE status != -1 ORDER BY created DESC;" - -- SQL Query to retrieve all nodes order by descending creation date. + sql_select_blogs_order_created_desc: STRING = "SELECT * FROM Nodes WHERE status != -1 AND type = %"blog%" ORDER BY created DESC;" + -- SQL Query to retrieve all nodes that are from the type "blog" ordered by descending creation date. --| note: {CMS_NODE_API}.trashed = -1 sql_select_node_by_id: STRING = "SELECT nid, revision, type, title, summary, content, format, author, publish, created, changed, status FROM Nodes WHERE nid =:nid ORDER BY revision DESC, publish DESC LIMIT 1;"