Updated CMS node and blog to remove extension data.

Comments: minor update.

Updated CMS_NODE_STORAGE_I API.
Delete a node using a node as formal parameter instead of node id.
Clean code and update log information.

Added precondition to delete node to accept nodes with a valid a id.

Added missing assertions tag names.
This commit is contained in:
jvelilla
2015-09-15 08:54:43 -03:00
parent f9ecd4956f
commit ed614a662c
7 changed files with 78 additions and 27 deletions

View File

@@ -108,6 +108,18 @@ feature -- Persistence
end end
end end
delete_node (a_node: CMS_BLOG)
-- <Precursor>
local
l_parameters: STRING_TABLE [ANY]
do
if a_node.has_id then
create l_parameters.make (1)
l_parameters.put (a_node.id, "nid")
sql_change (sql_delete_node_data, l_parameters)
end
end
feature {NONE} -- Implementation feature {NONE} -- Implementation
node_data (a_node: CMS_NODE): detachable TUPLE [revision: INTEGER_64; tags: READABLE_STRING_32] node_data (a_node: CMS_NODE): detachable TUPLE [revision: INTEGER_64; tags: READABLE_STRING_32]
@@ -145,5 +157,6 @@ feature -- SQL
sql_select_node_data: STRING = "SELECT nid, revision, tags FROM blog_post_nodes WHERE nid=:nid AND revision<=:revision ORDER BY revision DESC LIMIT 1;" sql_select_node_data: STRING = "SELECT nid, revision, tags FROM blog_post_nodes WHERE nid=:nid AND revision<=:revision ORDER BY revision DESC LIMIT 1;"
sql_insert_node_data: STRING = "INSERT INTO blog_post_nodes (nid, revision, tags) VALUES (:nid, :revision, :tags);" sql_insert_node_data: STRING = "INSERT INTO blog_post_nodes (nid, revision, tags) VALUES (:nid, :revision, :tags);"
sql_update_node_data: STRING = "UPDATE blog_post_nodes SET nid=:nid, revision=:revision, tags=:tags WHERE nid=:nid AND revision=:revision;" sql_update_node_data: STRING = "UPDATE blog_post_nodes SET nid=:nid, revision=:revision, tags=:tags WHERE nid=:nid AND revision=:revision;"
sql_delete_node_data: STRING = "DELETE FROM blog_post_nodes WHERE nid=:nid;"
end end

View File

@@ -30,7 +30,7 @@ feature -- Forms ...
local local
ti: WSF_FORM_NUMBER_INPUT ti: WSF_FORM_NUMBER_INPUT
fs: WSF_FORM_FIELD_SET fs: WSF_FORM_FIELD_SET
l_parent_id, nid: INTEGER_64 l_parent_id: INTEGER_64
do do
Precursor (response, f, a_node) Precursor (response, f, a_node)
@@ -102,7 +102,6 @@ feature -- Forms ...
parent_validation (a_response: NODE_RESPONSE; fd: WSF_FORM_DATA) parent_validation (a_response: NODE_RESPONSE; fd: WSF_FORM_DATA)
local local
l_selected: BOOLEAN
node_api: CMS_NODE_API node_api: CMS_NODE_API
l_parent_id: INTEGER_64 l_parent_id: INTEGER_64
nid: INTEGER_64 nid: INTEGER_64

View File

@@ -49,6 +49,13 @@ feature -- Persistence
end end
end end
delete_node (a_node: CMS_NODE)
-- remove node extensions.
require
a_node_accepted: is_accepted (a_node)
deferred
end
feature {NONE} -- Persistence implementation feature {NONE} -- Persistence implementation
store (a_node: G) store (a_node: G)

View File

@@ -44,7 +44,7 @@ feature {NONE} -- Implementation
extended_store (a_node: CMS_NODE) extended_store (a_node: CMS_NODE)
-- Store extended data from `a_node'. -- Store extended data from `a_node'.
require require
not error_handler.has_error not_has_error: not error_handler.has_error
do do
if attached node_storage_extension (a_node) as ext then if attached node_storage_extension (a_node) as ext then
ext.store_node (a_node) ext.store_node (a_node)
@@ -54,13 +54,23 @@ feature {NONE} -- Implementation
extended_load (a_node: CMS_NODE) extended_load (a_node: CMS_NODE)
-- Load extended data into `a_node'. -- Load extended data into `a_node'.
require require
not error_handler.has_error not_has_error: not error_handler.has_error
do do
if attached node_storage_extension (a_node) as ext then if attached node_storage_extension (a_node) as ext then
ext.load_node (a_node) ext.load_node (a_node)
end end
end end
extended_delete (a_node: CMS_NODE)
-- Delete extended data related to node `a_node'.
require
not_has_error: not error_handler.has_error
do
if attached node_storage_extension (a_node) as ext then
ext.delete_node (a_node)
end
end
feature -- Access feature -- Access
nodes_count: NATURAL_64 nodes_count: NATURAL_64
@@ -165,16 +175,19 @@ feature -- Change: Node
delete_node (a_node: CMS_NODE) delete_node (a_node: CMS_NODE)
-- Delete `a_node'. -- Delete `a_node'.
require
valid_node_id: a_node.has_id
do do
if a_node.has_id then -- TODO
delete_node_by_id (a_node.id) -- Check if we need to use a transaction
end -- we delete a node
-- node_revisions
-- and extensions (PAGE, BLOG, etc).
delete_node_base (a_node)
end end
delete_node_by_id (a_id: INTEGER_64) delete_node_base (a_node: CMS_NODE)
-- Remove node by id `a_id'. -- Remove node `a_node'.
require
valid_node_id: a_id > 0
deferred deferred
end end

View File

@@ -106,7 +106,7 @@ feature -- Node
do do
end end
delete_node_by_id (a_id: INTEGER_64) delete_node_base (a_node: CMS_NODE)
-- <Precursor> -- <Precursor>
do do
end end

View File

@@ -53,11 +53,6 @@ feature -- Access
end end
sql_forth sql_forth
end end
-- across
-- Result as ic
-- loop
-- fill_node (ic.item)
-- end
end end
node_revisions (a_node: CMS_NODE): LIST [CMS_NODE] node_revisions (a_node: CMS_NODE): LIST [CMS_NODE]
@@ -95,7 +90,7 @@ feature -- Access
create {ARRAYED_LIST [CMS_NODE]} Result.make (0) create {ARRAYED_LIST [CMS_NODE]} Result.make (0)
error_handler.reset error_handler.reset
write_information_log (generator + ".trash_nodes") write_information_log (generator + ".trashed_nodes")
from from
create l_parameters.make (1) create l_parameters.make (1)
@@ -124,7 +119,7 @@ feature -- Access
create {ARRAYED_LIST [CMS_NODE]} Result.make (0) create {ARRAYED_LIST [CMS_NODE]} Result.make (0)
error_handler.reset error_handler.reset
write_information_log (generator + ".nodes") write_information_log (generator + ".recent_nodes")
from from
create l_parameters.make (2) create l_parameters.make (2)
@@ -150,7 +145,7 @@ feature -- Access
create {ARRAYED_LIST [CMS_NODE]} Result.make (0) create {ARRAYED_LIST [CMS_NODE]} Result.make (0)
error_handler.reset error_handler.reset
write_information_log (generator + ".nodes") write_information_log (generator + ".recent_node_changes_before")
from from
create l_parameters.make (3) create l_parameters.make (3)
@@ -176,7 +171,7 @@ feature -- Access
l_parameters: STRING_TABLE [ANY] l_parameters: STRING_TABLE [ANY]
do do
error_handler.reset error_handler.reset
write_information_log (generator + ".node") write_information_log (generator + ".node_by_id")
create l_parameters.make (1) create l_parameters.make (1)
l_parameters.put (a_id, "nid") l_parameters.put (a_id, "nid")
sql_query (sql_select_node_by_id, l_parameters) sql_query (sql_select_node_by_id, l_parameters)
@@ -191,7 +186,7 @@ feature -- Access
l_parameters: STRING_TABLE [ANY] l_parameters: STRING_TABLE [ANY]
do do
error_handler.reset error_handler.reset
write_information_log (generator + ".node") write_information_log (generator + ".node_by_id_and_revision")
create l_parameters.make (1) create l_parameters.make (1)
l_parameters.put (a_node_id, "nid") l_parameters.put (a_node_id, "nid")
l_parameters.put (a_revision, "revision") l_parameters.put (a_revision, "revision")
@@ -326,7 +321,7 @@ feature -- Change: Node
local local
l_parameters: STRING_TABLE [ANY] l_parameters: STRING_TABLE [ANY]
do do
write_information_log (generator + ".delete_node {" + a_id.out + "}") write_information_log (generator + ".trash_node_by_id {" + a_id.out + "}")
error_handler.reset error_handler.reset
create l_parameters.make (3) create l_parameters.make (3)
@@ -336,19 +331,27 @@ feature -- Change: Node
sql_change (sql_trash_node, l_parameters) sql_change (sql_trash_node, l_parameters)
end end
delete_node_by_id (a_id: INTEGER_64) delete_node_base (a_node: CMS_NODE)
-- <Precursor> -- <Precursor>
local local
l_parameters: STRING_TABLE [ANY] l_parameters: STRING_TABLE [ANY]
l_time: DATE_TIME l_time: DATE_TIME
do do
create l_time.make_now_utc create l_time.make_now_utc
write_information_log (generator + ".trash_node {" + a_id.out + "}") write_information_log (generator + ".delete_node_base {" + a_node.id.out + "}")
error_handler.reset error_handler.reset
create l_parameters.make (1) create l_parameters.make (1)
l_parameters.put (a_id, "nid") l_parameters.put (a_node.id, "nid")
sql_change (sql_delete_node, l_parameters) sql_change (sql_delete_node, l_parameters)
-- we remove node_revisions and pages.
-- Check: maybe we need a transaction.
sql_change (sql_delete_node_revisions, l_parameters)
if not error_handler.has_error then
extended_delete (a_node)
end
end end
restore_node_by_id (a_id: INTEGER_64) restore_node_by_id (a_id: INTEGER_64)
@@ -358,7 +361,7 @@ feature -- Change: Node
l_time: DATE_TIME l_time: DATE_TIME
do do
create l_time.make_now_utc create l_time.make_now_utc
write_information_log (generator + ".restore_node {" + a_id.out + "}") write_information_log (generator + ".restore_node_by_id {" + a_id.out + "}")
error_handler.reset error_handler.reset
create l_parameters.make (1) create l_parameters.make (1)
@@ -520,6 +523,8 @@ feature {NONE} -- Queries
WHERE pn.parent = :nid AND node.status != -1 GROUP BY node.nid, node.revision; WHERE pn.parent = :nid AND node.status != -1 GROUP BY node.nid, node.revision;
]" ]"
sql_delete_node_revisions: STRING = "DELETE FROM node_revisions WHERE nid=:nid;"
feature {NONE} -- Sql Queries: USER_ROLES collaborators, author feature {NONE} -- Sql Queries: USER_ROLES collaborators, author
Select_user_author: STRING = "SELECT uid, name, password, salt, email, users.status, users.created, signed FROM nodes INNER JOIN users ON nodes.author=users.uid AND nodes.nid = :nid AND nodes.revision = :revision;" Select_user_author: STRING = "SELECT uid, name, password, salt, email, users.status, users.created, signed FROM nodes INNER JOIN users ON nodes.author=users.uid AND nodes.nid = :nid AND nodes.revision = :revision;"

View File

@@ -112,6 +112,19 @@ feature -- Persistence
end end
end end
delete_node (a_node: CMS_PAGE)
-- <Precursor>
local
l_parameters: STRING_TABLE [ANY]
do
if a_node.has_id then
create l_parameters.make (1)
l_parameters.put (a_node.id, "nid")
sql_change (sql_delete_node_data, l_parameters)
end
end
feature {NONE} -- Implementation feature {NONE} -- Implementation
node_data (a_node: CMS_NODE): detachable TUPLE [revision: INTEGER_64; parent_id: INTEGER_64] node_data (a_node: CMS_NODE): detachable TUPLE [revision: INTEGER_64; parent_id: INTEGER_64]
@@ -143,5 +156,6 @@ feature -- SQL
sql_select_node_data: STRING = "SELECT nid, revision, parent FROM page_nodes WHERE nid=:nid AND revision<=:revision ORDER BY revision DESC LIMIT 1;" sql_select_node_data: STRING = "SELECT nid, revision, parent FROM page_nodes WHERE nid=:nid AND revision<=:revision ORDER BY revision DESC LIMIT 1;"
sql_insert_node_data: STRING = "INSERT INTO page_nodes (nid, revision, parent) VALUES (:nid, :revision, :parent);" sql_insert_node_data: STRING = "INSERT INTO page_nodes (nid, revision, parent) VALUES (:nid, :revision, :parent);"
sql_update_node_data: STRING = "UPDATE page_nodes SET nid=:nid, revision=:revision, parent=:parent WHERE nid=:nid AND revision=:revision;" sql_update_node_data: STRING = "UPDATE page_nodes SET nid=:nid, revision=:revision, parent=:parent WHERE nid=:nid AND revision=:revision;"
sql_delete_node_data: STRING = "DELETE FROM page_nodes WHERE nid=:nid;"
end end