From f7d68d09e4b395ede031113eebfcfc7d93b0213d Mon Sep 17 00:00:00 2001 From: jvelilla Date: Tue, 15 Sep 2015 08:54:43 -0300 Subject: [PATCH 1/5] Updated CMS node and blog to remove extension data. --- .../cms_node_storage_sql_blog_extension.e | 11 ++++++++++ .../cms_page_node_type_webform_manager.e | 3 +-- .../persistence/cms_node_storage_extension.e | 7 +++++++ modules/node/persistence/cms_node_storage_i.e | 20 +++++++++++++++++++ .../node/persistence/cms_node_storage_sql.e | 5 +++++ .../cms_node_storage_sql_page_extension.e | 12 +++++++++++ 6 files changed, 56 insertions(+), 2 deletions(-) diff --git a/modules/blog/cms_node_storage_sql_blog_extension.e b/modules/blog/cms_node_storage_sql_blog_extension.e index 1793bd9..7dfc9d2 100644 --- a/modules/blog/cms_node_storage_sql_blog_extension.e +++ b/modules/blog/cms_node_storage_sql_blog_extension.e @@ -108,6 +108,16 @@ feature -- Persistence end end + delete_by_id (a_nid: INTEGER_64) + -- remove node extensions by id `a_nid'. + local + l_parameters: STRING_TABLE [ANY] + do + create l_parameters.make (1) + l_parameters.put (a_nid, "nid") + sql_change (sql_delete_node_data, l_parameters) + end + feature {NONE} -- Implementation node_data (a_node: CMS_NODE): detachable TUPLE [revision: INTEGER_64; tags: READABLE_STRING_32] @@ -145,5 +155,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_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_delete_node_data: STRING = "DELETE FROM blog_post_nodes WHERE nid=:nid;" end diff --git a/modules/node/handler/cms_page_node_type_webform_manager.e b/modules/node/handler/cms_page_node_type_webform_manager.e index 78a5686..9de71b3 100644 --- a/modules/node/handler/cms_page_node_type_webform_manager.e +++ b/modules/node/handler/cms_page_node_type_webform_manager.e @@ -30,7 +30,7 @@ feature -- Forms ... local ti: WSF_FORM_NUMBER_INPUT fs: WSF_FORM_FIELD_SET - l_parent_id, nid: INTEGER_64 + l_parent_id: INTEGER_64 do Precursor (response, f, a_node) @@ -102,7 +102,6 @@ feature -- Forms ... parent_validation (a_response: NODE_RESPONSE; fd: WSF_FORM_DATA) local - l_selected: BOOLEAN node_api: CMS_NODE_API l_parent_id: INTEGER_64 nid: INTEGER_64 diff --git a/modules/node/persistence/cms_node_storage_extension.e b/modules/node/persistence/cms_node_storage_extension.e index 5c73cac..dac37d4 100644 --- a/modules/node/persistence/cms_node_storage_extension.e +++ b/modules/node/persistence/cms_node_storage_extension.e @@ -49,6 +49,13 @@ feature -- Persistence end end + delete_by_id (a_nid: INTEGER_64) + -- remove node extensions by id `a_nid'. + require + valid_id: a_nid > 0 + deferred + end + feature {NONE} -- Persistence implementation store (a_node: G) diff --git a/modules/node/persistence/cms_node_storage_i.e b/modules/node/persistence/cms_node_storage_i.e index 688753e..140266a 100644 --- a/modules/node/persistence/cms_node_storage_i.e +++ b/modules/node/persistence/cms_node_storage_i.e @@ -61,6 +61,18 @@ feature {NONE} -- Implementation end end + + extended_delete (a_node: CMS_NODE) + -- Delete extended data related to node `a_id'. + require + not error_handler.has_error + do + if attached node_storage_extension (a_node) as ext then + ext.delete_by_id (a_node.id) + end + end + + feature -- Access nodes_count: NATURAL_64 @@ -166,8 +178,16 @@ feature -- Change: Node delete_node (a_node: CMS_NODE) -- Delete `a_node'. do + -- TODO + -- Check if we need to use a transaction + -- we delete a node + -- node_revisions + -- and extensions (PAGE, BLOG, etc) if a_node.has_id then delete_node_by_id (a_node.id) + if not error_handler.has_error then + extended_delete (a_node) + end end end diff --git a/modules/node/persistence/cms_node_storage_sql.e b/modules/node/persistence/cms_node_storage_sql.e index f159e7c..e92451f 100644 --- a/modules/node/persistence/cms_node_storage_sql.e +++ b/modules/node/persistence/cms_node_storage_sql.e @@ -349,6 +349,9 @@ feature -- Change: Node create l_parameters.make (1) l_parameters.put (a_id, "nid") sql_change (sql_delete_node, l_parameters) + + -- we remove node_revisions and pages. + sql_change (sql_delete_node_revisions, l_parameters) end restore_node_by_id (a_id: INTEGER_64) @@ -520,6 +523,8 @@ feature {NONE} -- Queries 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 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;" diff --git a/modules/node/persistence/cms_node_storage_sql_page_extension.e b/modules/node/persistence/cms_node_storage_sql_page_extension.e index bc98357..47b8a78 100644 --- a/modules/node/persistence/cms_node_storage_sql_page_extension.e +++ b/modules/node/persistence/cms_node_storage_sql_page_extension.e @@ -112,6 +112,17 @@ feature -- Persistence end end + + delete_by_id (a_nid: INTEGER_64) + -- remove node extensions by id `a_nid'. + local + l_parameters: STRING_TABLE [ANY] + do + create l_parameters.make (1) + l_parameters.put (a_nid, "nid") + sql_change (sql_delete_node_data, l_parameters) + end + feature {NONE} -- Implementation node_data (a_node: CMS_NODE): detachable TUPLE [revision: INTEGER_64; parent_id: INTEGER_64] @@ -143,5 +154,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_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_delete_node_data: STRING = "DELETE FROM page_nodes WHERE nid=:nid;" end From 458491787780975753488feb47034b7548d3e9e8 Mon Sep 17 00:00:00 2001 From: jvelilla Date: Tue, 15 Sep 2015 09:02:38 -0300 Subject: [PATCH 2/5] Comments: minor update. --- modules/node/persistence/cms_node_storage_i.e | 6 ++---- modules/node/persistence/cms_node_storage_sql.e | 1 + 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/modules/node/persistence/cms_node_storage_i.e b/modules/node/persistence/cms_node_storage_i.e index 140266a..ebfe7f0 100644 --- a/modules/node/persistence/cms_node_storage_i.e +++ b/modules/node/persistence/cms_node_storage_i.e @@ -61,9 +61,8 @@ feature {NONE} -- Implementation end end - extended_delete (a_node: CMS_NODE) - -- Delete extended data related to node `a_id'. + -- Delete extended data related to node `a_node'. require not error_handler.has_error do @@ -72,7 +71,6 @@ feature {NONE} -- Implementation end end - feature -- Access nodes_count: NATURAL_64 @@ -182,7 +180,7 @@ feature -- Change: Node -- Check if we need to use a transaction -- we delete a node -- node_revisions - -- and extensions (PAGE, BLOG, etc) + -- and extensions (PAGE, BLOG, etc). if a_node.has_id then delete_node_by_id (a_node.id) if not error_handler.has_error then diff --git a/modules/node/persistence/cms_node_storage_sql.e b/modules/node/persistence/cms_node_storage_sql.e index e92451f..ce825e5 100644 --- a/modules/node/persistence/cms_node_storage_sql.e +++ b/modules/node/persistence/cms_node_storage_sql.e @@ -351,6 +351,7 @@ feature -- Change: Node 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) end From ad9e908dc24d396301a46429b8099fcd8aef5c0a Mon Sep 17 00:00:00 2001 From: jvelilla Date: Tue, 15 Sep 2015 10:42:30 -0300 Subject: [PATCH 3/5] 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. --- .../cms_node_storage_sql_blog_extension.e | 12 ++++---- .../persistence/cms_node_storage_extension.e | 6 ++-- modules/node/persistence/cms_node_storage_i.e | 13 ++++----- .../node/persistence/cms_node_storage_null.e | 2 +- .../node/persistence/cms_node_storage_sql.e | 29 +++++++++---------- .../cms_node_storage_sql_page_extension.e | 12 ++++---- 6 files changed, 37 insertions(+), 37 deletions(-) diff --git a/modules/blog/cms_node_storage_sql_blog_extension.e b/modules/blog/cms_node_storage_sql_blog_extension.e index 7dfc9d2..24d6844 100644 --- a/modules/blog/cms_node_storage_sql_blog_extension.e +++ b/modules/blog/cms_node_storage_sql_blog_extension.e @@ -108,14 +108,16 @@ feature -- Persistence end end - delete_by_id (a_nid: INTEGER_64) - -- remove node extensions by id `a_nid'. + delete_node (a_node: CMS_BLOG) + -- local l_parameters: STRING_TABLE [ANY] do - create l_parameters.make (1) - l_parameters.put (a_nid, "nid") - sql_change (sql_delete_node_data, l_parameters) + 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 diff --git a/modules/node/persistence/cms_node_storage_extension.e b/modules/node/persistence/cms_node_storage_extension.e index dac37d4..4943ffa 100644 --- a/modules/node/persistence/cms_node_storage_extension.e +++ b/modules/node/persistence/cms_node_storage_extension.e @@ -49,10 +49,10 @@ feature -- Persistence end end - delete_by_id (a_nid: INTEGER_64) - -- remove node extensions by id `a_nid'. + delete_node (a_node: CMS_NODE) + -- remove node extensions. require - valid_id: a_nid > 0 + a_node_accepted: is_accepted (a_node) deferred end diff --git a/modules/node/persistence/cms_node_storage_i.e b/modules/node/persistence/cms_node_storage_i.e index ebfe7f0..26f1223 100644 --- a/modules/node/persistence/cms_node_storage_i.e +++ b/modules/node/persistence/cms_node_storage_i.e @@ -67,7 +67,7 @@ feature {NONE} -- Implementation not error_handler.has_error do if attached node_storage_extension (a_node) as ext then - ext.delete_by_id (a_node.id) + ext.delete_node (a_node) end end @@ -182,17 +182,14 @@ feature -- Change: Node -- node_revisions -- and extensions (PAGE, BLOG, etc). if a_node.has_id then - delete_node_by_id (a_node.id) - if not error_handler.has_error then - extended_delete (a_node) - end + delete_node_base (a_node) end end - delete_node_by_id (a_id: INTEGER_64) - -- Remove node by id `a_id'. + delete_node_base (a_node: CMS_NODE) + -- Remove node `a_node'. require - valid_node_id: a_id > 0 + valid_node_id: a_node.has_id deferred end diff --git a/modules/node/persistence/cms_node_storage_null.e b/modules/node/persistence/cms_node_storage_null.e index 497c11a..34cf6a3 100644 --- a/modules/node/persistence/cms_node_storage_null.e +++ b/modules/node/persistence/cms_node_storage_null.e @@ -106,7 +106,7 @@ feature -- Node do end - delete_node_by_id (a_id: INTEGER_64) + delete_node_base (a_node: CMS_NODE) -- do end diff --git a/modules/node/persistence/cms_node_storage_sql.e b/modules/node/persistence/cms_node_storage_sql.e index ce825e5..6305ca1 100644 --- a/modules/node/persistence/cms_node_storage_sql.e +++ b/modules/node/persistence/cms_node_storage_sql.e @@ -53,11 +53,6 @@ feature -- Access end sql_forth end --- across --- Result as ic --- loop --- fill_node (ic.item) --- end end node_revisions (a_node: CMS_NODE): LIST [CMS_NODE] @@ -95,7 +90,7 @@ feature -- Access create {ARRAYED_LIST [CMS_NODE]} Result.make (0) error_handler.reset - write_information_log (generator + ".trash_nodes") + write_information_log (generator + ".trashed_nodes") from create l_parameters.make (1) @@ -124,7 +119,7 @@ feature -- Access create {ARRAYED_LIST [CMS_NODE]} Result.make (0) error_handler.reset - write_information_log (generator + ".nodes") + write_information_log (generator + ".recent_nodes") from create l_parameters.make (2) @@ -150,7 +145,7 @@ feature -- Access create {ARRAYED_LIST [CMS_NODE]} Result.make (0) error_handler.reset - write_information_log (generator + ".nodes") + write_information_log (generator + ".recent_node_changes_before") from create l_parameters.make (3) @@ -176,7 +171,7 @@ feature -- Access l_parameters: STRING_TABLE [ANY] do error_handler.reset - write_information_log (generator + ".node") + write_information_log (generator + ".node_by_id") create l_parameters.make (1) l_parameters.put (a_id, "nid") sql_query (sql_select_node_by_id, l_parameters) @@ -191,7 +186,7 @@ feature -- Access l_parameters: STRING_TABLE [ANY] do error_handler.reset - write_information_log (generator + ".node") + write_information_log (generator + ".node_by_id_and_revision") create l_parameters.make (1) l_parameters.put (a_node_id, "nid") l_parameters.put (a_revision, "revision") @@ -326,7 +321,7 @@ feature -- Change: Node local l_parameters: STRING_TABLE [ANY] do - write_information_log (generator + ".delete_node {" + a_id.out + "}") + write_information_log (generator + ".trash_node_by_id {" + a_id.out + "}") error_handler.reset create l_parameters.make (3) @@ -336,23 +331,27 @@ feature -- Change: Node sql_change (sql_trash_node, l_parameters) end - delete_node_by_id (a_id: INTEGER_64) + delete_node_base (a_node: CMS_NODE) -- local l_parameters: STRING_TABLE [ANY] l_time: DATE_TIME do 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 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) -- 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 restore_node_by_id (a_id: INTEGER_64) @@ -362,7 +361,7 @@ feature -- Change: Node l_time: DATE_TIME do 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 create l_parameters.make (1) diff --git a/modules/node/persistence/cms_node_storage_sql_page_extension.e b/modules/node/persistence/cms_node_storage_sql_page_extension.e index 47b8a78..cdffa57 100644 --- a/modules/node/persistence/cms_node_storage_sql_page_extension.e +++ b/modules/node/persistence/cms_node_storage_sql_page_extension.e @@ -113,14 +113,16 @@ feature -- Persistence end - delete_by_id (a_nid: INTEGER_64) - -- remove node extensions by id `a_nid'. + delete_node (a_node: CMS_PAGE) + -- local l_parameters: STRING_TABLE [ANY] do - create l_parameters.make (1) - l_parameters.put (a_nid, "nid") - sql_change (sql_delete_node_data, l_parameters) + 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 From 9173ef2ded0e883d26bb9fa67e88bd22f6af6c7e Mon Sep 17 00:00:00 2001 From: jvelilla Date: Tue, 15 Sep 2015 11:40:13 -0300 Subject: [PATCH 4/5] Added precondition to delete node to accept nodes with a valid a id. --- modules/node/persistence/cms_node_storage_i.e | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/modules/node/persistence/cms_node_storage_i.e b/modules/node/persistence/cms_node_storage_i.e index 26f1223..625f19a 100644 --- a/modules/node/persistence/cms_node_storage_i.e +++ b/modules/node/persistence/cms_node_storage_i.e @@ -175,21 +175,19 @@ feature -- Change: Node delete_node (a_node: CMS_NODE) -- Delete `a_node'. + require + valid_node_id: a_node.has_id do -- TODO -- Check if we need to use a transaction -- we delete a node -- node_revisions -- and extensions (PAGE, BLOG, etc). - if a_node.has_id then - delete_node_base (a_node) - end + delete_node_base (a_node) end delete_node_base (a_node: CMS_NODE) -- Remove node `a_node'. - require - valid_node_id: a_node.has_id deferred end From d54ad59e5f6e327dcaf36c220872ea691d83a112 Mon Sep 17 00:00:00 2001 From: jvelilla Date: Tue, 15 Sep 2015 14:10:51 -0300 Subject: [PATCH 5/5] Added missing assertions tag names. --- modules/node/persistence/cms_node_storage_i.e | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/node/persistence/cms_node_storage_i.e b/modules/node/persistence/cms_node_storage_i.e index 625f19a..ef97a66 100644 --- a/modules/node/persistence/cms_node_storage_i.e +++ b/modules/node/persistence/cms_node_storage_i.e @@ -44,7 +44,7 @@ feature {NONE} -- Implementation extended_store (a_node: CMS_NODE) -- Store extended data from `a_node'. require - not error_handler.has_error + not_has_error: not error_handler.has_error do if attached node_storage_extension (a_node) as ext then ext.store_node (a_node) @@ -54,7 +54,7 @@ feature {NONE} -- Implementation extended_load (a_node: CMS_NODE) -- Load extended data into `a_node'. require - not error_handler.has_error + not_has_error: not error_handler.has_error do if attached node_storage_extension (a_node) as ext then ext.load_node (a_node) @@ -64,7 +64,7 @@ feature {NONE} -- Implementation extended_delete (a_node: CMS_NODE) -- Delete extended data related to node `a_node'. require - not error_handler.has_error + not_has_error: not error_handler.has_error do if attached node_storage_extension (a_node) as ext then ext.delete_node (a_node)