Added list of posts of a specific user

Similar to the blog handler the blog user handler routes /blogs/users/{id}. Pagination is implemented as well
This commit is contained in:
Dario Bösch
2015-05-22 17:31:30 +02:00
parent 9b169f70a7
commit 0bd75e7c59
8 changed files with 230 additions and 7 deletions

View File

@@ -16,13 +16,23 @@ feature -- Access
deferred
end
blogs_count_from_user (user_id: INTEGER_64) : INTEGER_64
-- Number of nodes of type blog from user with user_id
deferred
end
blogs: LIST [CMS_NODE]
-- List of nodes ordered by creation date (descending).
deferred
end
blogs_limited (limit:NATURAL_32; offset:NATURAL_32) : LIST[CMS_NODE]
-- List of nodes ordered by creation date from limit to limit + offset
-- List of posts ordered by creation date from offset to offset + limit
deferred
end
blogs_from_user_limited (user_id: INTEGER_32; limit:NATURAL_32; offset:NATURAL_32) : LIST[CMS_NODE]
-- List of posts from user_id ordered by creation date from offset to offset + limit
deferred
end

View File

@@ -22,6 +22,11 @@ feature -- Access
do
end
blogs_count_from_user (user_id: INTEGER_64) : INTEGER_64
-- Number of nodes of type blog from user with user_id
do
end
blogs: LIST[CMS_NODE]
-- List of nodes.
do
@@ -29,7 +34,13 @@ feature -- Access
end
blogs_limited (limit:NATURAL_32; offset:NATURAL_32) : LIST[CMS_NODE]
-- List of nodes ordered by creation date from limit to limit + offset
-- List of posts ordered by creation date from offset to offset + limit
do
create {ARRAYED_LIST [CMS_NODE]} Result.make (0)
end
blogs_from_user_limited (user_id: INTEGER_32; limit:NATURAL_32; offset:NATURAL_32) : LIST[CMS_NODE]
-- List of posts from user_id ordered by creation date from offset to offset + limit
do
create {ARRAYED_LIST [CMS_NODE]} Result.make (0)
end

View File

@@ -28,6 +28,21 @@ feature -- Access
end
end
blogs_count_from_user (user_id: INTEGER_64) : INTEGER_64
-- Number of nodes of type blog from user with user_id
local
l_parameters: STRING_TABLE [detachable ANY]
do
error_handler.reset
write_information_log (generator + ".nodes_count")
create l_parameters.make (2)
l_parameters.put (user_id, "user")
sql_query (sql_select_blog_count_from_user, l_parameters)
if sql_rows_count = 1 then
Result := sql_read_integer_64 (1)
end
end
blogs: LIST [CMS_NODE]
-- List of nodes ordered by creation date (descending).
do
@@ -75,16 +90,51 @@ feature -- Access
end
end
blogs_from_user_limited (a_user_id:INTEGER_32; a_limit:NATURAL_32; a_offset:NATURAL_32) : LIST[CMS_NODE]
-- List of posts of the author with a_user_id ordered by creation date starting at offset and limited by limit
local
l_parameters: STRING_TABLE [detachable ANY]
do
create {ARRAYED_LIST [CMS_NODE]} Result.make (0)
error_handler.reset
write_information_log (generator + ".nodes")
from
create l_parameters.make (2)
l_parameters.put (a_limit, "limit")
l_parameters.put (a_offset, "offset")
l_parameters.put (a_user_id, "user")
sql_query (sql_blogs_from_user_limited, l_parameters)
sql_start
until
sql_after
loop
if attached fetch_node as l_node then
Result.force (l_node)
end
sql_forth
end
end
feature {NONE} -- Queries
sql_select_blog_count: STRING = "SELECT count(*) FROM Nodes WHERE status != -1 AND type = %"blog%";"
-- Nodes count (Published and not Published)
--| note: {CMS_NODE_API}.trashed = -1
sql_select_blog_count_from_user: STRING = "SELECT count(*) FROM Nodes WHERE status != -1 AND type = %"blog%" AND author = :user ;"
-- Nodes count (Published and not Published)
--| note: {CMS_NODE_API}.trashed = -1
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.
sql_blogs_limited: STRING = "SELECT * FROM Nodes WHERE status != -1 AND type = %"blog%" ORDER BY created DESC LIMIT :limit OFFSET :offset ;"
--- SQL Query to retrieve all node of type "blog" from limit to limit + offset
--- SQL Query to retrieve all node of type "blog" limited by limit and starting at offset
sql_blogs_from_user_limited: STRING = "SELECT * FROM Nodes WHERE status != -1 AND type = %"blog%" AND author = :user ORDER BY created DESC LIMIT :limit OFFSET :offset ;"
--- SQL Query to retrieve all node of type "blog" from author with id limited by limit + offset
end