Added persistence support for Eiffel sqlite3 wrapper.

Updated existing persistency solution to be more generic to any db solution.
This commit is contained in:
2015-10-05 16:04:10 +02:00
parent 7fcacad5eb
commit eb5ae32e46
18 changed files with 859 additions and 160 deletions

View File

@@ -28,9 +28,10 @@ feature -- Access
error_handler.reset
write_information_log (generator + ".nodes_count")
sql_query (sql_select_nodes_count, Void)
if sql_rows_count = 1 then
if not has_error and not sql_after then
Result := sql_read_natural_64 (1)
end
sql_finalize
end
@@ -175,9 +176,10 @@ feature -- Access
create l_parameters.make (1)
l_parameters.put (a_id, "nid")
sql_query (sql_select_node_by_id, l_parameters)
if sql_rows_count = 1 then
if not has_error and not sql_after then
Result := fetch_node
end
sql_finalize
end
node_by_id_and_revision (a_node_id, a_revision: INTEGER_64): detachable CMS_NODE
@@ -191,9 +193,10 @@ feature -- Access
l_parameters.put (a_node_id, "nid")
l_parameters.put (a_revision, "revision")
sql_query (sql_select_node_by_id_and_revision, l_parameters)
if sql_rows_count = 1 then
if not has_error and not sql_after then
Result := fetch_node
end
sql_finalize
end
node_author (a_node: CMS_NODE): detachable CMS_USER
@@ -207,9 +210,10 @@ feature -- Access
l_parameters.put (a_node.id, "nid")
l_parameters.put (a_node.revision, "revision")
sql_query (Select_user_author, l_parameters)
if sql_rows_count >= 1 then
if not has_error and not sql_after then
Result := fetch_author
end
sql_finalize
end
last_inserted_node_id: INTEGER_64
@@ -218,9 +222,10 @@ feature -- Access
error_handler.reset
write_information_log (generator + ".last_inserted_node_id")
sql_query (Sql_last_insert_node_id, Void)
if sql_rows_count = 1 then
if not has_error and not sql_after then
Result := sql_read_integer_64 (1)
end
sql_finalize
end
last_inserted_node_revision (a_node: detachable CMS_NODE): INTEGER_64
@@ -234,11 +239,16 @@ feature -- Access
create l_parameters.make (1)
l_parameters.force (a_node.id, "nid")
sql_query (Sql_last_insert_node_revision_for_nid, l_parameters)
if sql_rows_count = 1 then
if not has_error and not sql_after then
if sql_item (1) /= Void then
Result := sql_read_integer_64 (1)
end
sql_forth
if not sql_after then
check no_more_than_one: False end
end
end
sql_finalize
end
-- if Result = 0 and not has_error then --| include the case a_node = Void
-- sql_query (Sql_last_insert_node_revision, Void)
@@ -328,7 +338,7 @@ feature -- Change: Node
l_parameters.put (create {DATE_TIME}.make_now_utc, "changed")
l_parameters.put ({CMS_NODE_API}.trashed, "status")
l_parameters.put (a_id, "nid")
sql_change (sql_trash_node, l_parameters)
sql_modify (sql_trash_node, l_parameters)
end
delete_node_base (a_node: CMS_NODE)
@@ -343,11 +353,11 @@ feature -- Change: Node
error_handler.reset
create l_parameters.make (1)
l_parameters.put (a_node.id, "nid")
sql_change (sql_delete_node, l_parameters)
sql_modify (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)
sql_modify (sql_delete_node_revisions, l_parameters)
if not error_handler.has_error then
extended_delete (a_node)
@@ -368,7 +378,7 @@ feature -- Change: Node
l_parameters.put (l_time, "changed")
l_parameters.put ({CMS_NODE_API}.not_published, "status")
l_parameters.put (a_id, "nid")
sql_change (sql_restore_node, l_parameters)
sql_modify (sql_restore_node, l_parameters)
end
@@ -412,7 +422,7 @@ feature {NONE} -- Implementation
create l_copy_parameters.make (2)
l_copy_parameters.force (a_node.id, "nid")
-- l_copy_parameters.force (l_rev - 1, "revision")
sql_change (sql_copy_node_to_revision, l_copy_parameters)
sql_insert (sql_copy_node_to_revision, l_copy_parameters)
if not has_error then
a_node.set_revision (l_rev)
@@ -420,7 +430,7 @@ feature {NONE} -- Implementation
-- Update
l_parameters.put (a_node.id, "nid")
l_parameters.put (a_node.revision, "revision")
sql_change (sql_update_node, l_parameters)
sql_modify (sql_update_node, l_parameters)
if not error_handler.has_error then
a_node.set_modification_date (now)
@@ -431,7 +441,7 @@ feature {NONE} -- Implementation
l_parameters.put (a_node.creation_date, "created")
l_parameters.put (l_rev, "revision")
sql_change (sql_insert_node, l_parameters)
sql_insert (sql_insert_node, l_parameters)
if not error_handler.has_error then
a_node.set_modification_date (now)
a_node.set_id (last_inserted_node_id)