mirror of
https://github.com/mistergibson/gxg-framework.git
synced 2026-08-15 03:46:00 -07:00
8853 lines
979 KiB
HTML
8853 lines
979 KiB
HTML
<!DOCTYPE html>
|
|
|
|
<html>
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
|
|
<title>class GxG::Database::Database - RDoc Documentation</title>
|
|
|
|
<script type="text/javascript">
|
|
var rdoc_rel_prefix = "../../";
|
|
var index_rel_prefix = "../../";
|
|
</script>
|
|
|
|
<script src="../../js/navigation.js" defer></script>
|
|
<script src="../../js/search.js" defer></script>
|
|
<script src="../../js/search_index.js" defer></script>
|
|
<script src="../../js/searcher.js" defer></script>
|
|
<script src="../../js/darkfish.js" defer></script>
|
|
|
|
<link href="../../css/fonts.css" rel="stylesheet">
|
|
<link href="../../css/rdoc.css" rel="stylesheet">
|
|
|
|
|
|
|
|
<body id="top" role="document" class="class">
|
|
<nav role="navigation">
|
|
<div id="project-navigation">
|
|
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
|
|
<h2>
|
|
<a href="../../index.html" rel="home">Home</a>
|
|
</h2>
|
|
|
|
<div id="table-of-contents-navigation">
|
|
<a href="../../table_of_contents.html#pages">Pages</a>
|
|
<a href="../../table_of_contents.html#classes">Classes</a>
|
|
<a href="../../table_of_contents.html#methods">Methods</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="search-section" role="search" class="project-section initially-hidden">
|
|
<form action="#" method="get" accept-charset="utf-8">
|
|
<div id="search-field-wrapper">
|
|
<input id="search-field" role="combobox" aria-label="Search"
|
|
aria-autocomplete="list" aria-controls="search-results"
|
|
type="text" name="search" placeholder="Search" spellcheck="false"
|
|
title="Type to search, Up and Down to navigate, Enter to load">
|
|
</div>
|
|
|
|
<ul id="search-results" aria-label="Search Results"
|
|
aria-busy="false" aria-expanded="false"
|
|
aria-atomic="false" class="initially-hidden"></ul>
|
|
</form>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div id="class-metadata">
|
|
|
|
<div id="parent-class-section" class="nav-section">
|
|
<h3>Parent</h3>
|
|
|
|
|
|
<p class="link"><a href="../../Object.html">Object</a>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Method Quickref -->
|
|
<div id="method-list-section" class="nav-section">
|
|
<h3>Methods</h3>
|
|
|
|
<ul class="link-list" role="directory">
|
|
|
|
<li ><a href="#method-c-element_table_by_index">::element_table_by_index</a>
|
|
|
|
<li ><a href="#method-c-element_table_for_instance">::element_table_for_instance</a>
|
|
|
|
<li ><a href="#method-c-element_table_index">::element_table_index</a>
|
|
|
|
<li ><a href="#method-c-element_tables">::element_tables</a>
|
|
|
|
<li class="calls-super" ><a href="#method-c-new">::new</a>
|
|
|
|
<li ><a href="#method-c-valid_field_classes">::valid_field_classes</a>
|
|
|
|
<li ><a href="#method-i-5B-5D">#[]</a>
|
|
|
|
<li ><a href="#method-i-5B-5D-3D">#[]=</a>
|
|
|
|
<li ><a href="#method-i-assign_element_permission">#assign_element_permission</a>
|
|
|
|
<li ><a href="#method-i-byte_size_by_uuid">#byte_size_by_uuid</a>
|
|
|
|
<li ><a href="#method-i-clear_all_element_locks">#clear_all_element_locks</a>
|
|
|
|
<li ><a href="#method-i-clone">#clone</a>
|
|
|
|
<li ><a href="#method-i-close">#close</a>
|
|
|
|
<li ><a href="#method-i-connector">#connector</a>
|
|
|
|
<li ><a href="#method-i-create_vfs_permission">#create_vfs_permission</a>
|
|
|
|
<li ><a href="#method-i-db_format">#db_format</a>
|
|
|
|
<li ><a href="#method-i-db_formatted-3F">#db_formatted?</a>
|
|
|
|
<li ><a href="#method-i-db_list">#db_list</a>
|
|
|
|
<li ><a href="#method-i-db_migration">#db_migration</a>
|
|
|
|
<li ><a href="#method-i-db_permissions">#db_permissions</a>
|
|
|
|
<li ><a href="#method-i-db_register">#db_register</a>
|
|
|
|
<li ><a href="#method-i-db_unregister">#db_unregister</a>
|
|
|
|
<li ><a href="#method-i-destroy_by_uuid">#destroy_by_uuid</a>
|
|
|
|
<li ><a href="#method-i-destroy_vfs_permission">#destroy_vfs_permission</a>
|
|
|
|
<li ><a href="#method-i-dup">#dup</a>
|
|
|
|
<li ><a href="#method-i-effective_element_permission">#effective_element_permission</a>
|
|
|
|
<li ><a href="#method-i-effective_uuid_permission">#effective_uuid_permission</a>
|
|
|
|
<li ><a href="#method-i-effective_vfs_permission">#effective_vfs_permission</a>
|
|
|
|
<li ><a href="#method-i-element_byte_size">#element_byte_size</a>
|
|
|
|
<li ><a href="#method-i-element_create">#element_create</a>
|
|
|
|
<li ><a href="#method-i-element_destroy">#element_destroy</a>
|
|
|
|
<li ><a href="#method-i-element_exists-3F">#element_exists?</a>
|
|
|
|
<li ><a href="#method-i-element_in_trash-3F">#element_in_trash?</a>
|
|
|
|
<li ><a href="#method-i-element_in_use-3F">#element_in_use?</a>
|
|
|
|
<li ><a href="#method-i-element_manifest">#element_manifest</a>
|
|
|
|
<li ><a href="#method-i-element_parent_address">#element_parent_address</a>
|
|
|
|
<li ><a href="#method-i-element_permissions">#element_permissions</a>
|
|
|
|
<li ><a href="#method-i-element_permissions_by_uuid">#element_permissions_by_uuid</a>
|
|
|
|
<li ><a href="#method-i-element_permissions_manifest">#element_permissions_manifest</a>
|
|
|
|
<li ><a href="#method-i-element_recover">#element_recover</a>
|
|
|
|
<li ><a href="#method-i-element_retrieve">#element_retrieve</a>
|
|
|
|
<li ><a href="#method-i-element_update">#element_update</a>
|
|
|
|
<li ><a href="#method-i-empty_trash">#empty_trash</a>
|
|
|
|
<li ><a href="#method-i-enforce_permission_policy">#enforce_permission_policy</a>
|
|
|
|
<li ><a href="#method-i-extend_element_permissions">#extend_element_permissions</a>
|
|
|
|
<li ><a href="#method-i-format_create">#format_create</a>
|
|
|
|
<li ><a href="#method-i-format_destroy">#format_destroy</a>
|
|
|
|
<li ><a href="#method-i-format_list">#format_list</a>
|
|
|
|
<li ><a href="#method-i-format_load">#format_load</a>
|
|
|
|
<li ><a href="#method-i-format_template">#format_template</a>
|
|
|
|
<li ><a href="#method-i-format_update">#format_update</a>
|
|
|
|
<li ><a href="#method-i-group_create">#group_create</a>
|
|
|
|
<li ><a href="#method-i-group_credential">#group_credential</a>
|
|
|
|
<li ><a href="#method-i-group_delete">#group_delete</a>
|
|
|
|
<li ><a href="#method-i-group_exist-3F">#group_exist?</a>
|
|
|
|
<li ><a href="#method-i-group_fetch">#group_fetch</a>
|
|
|
|
<li ><a href="#method-i-group_manifest">#group_manifest</a>
|
|
|
|
<li ><a href="#method-i-group_roles">#group_roles</a>
|
|
|
|
<li ><a href="#method-i-group_update">#group_update</a>
|
|
|
|
<li ><a href="#method-i-import">#import</a>
|
|
|
|
<li ><a href="#method-i-initialize_clone">#initialize_clone</a>
|
|
|
|
<li ><a href="#method-i-initialize_dup">#initialize_dup</a>
|
|
|
|
<li ><a href="#method-i-inspect">#inspect</a>
|
|
|
|
<li ><a href="#method-i-iterative_persist">#iterative_persist</a>
|
|
|
|
<li ><a href="#method-i-new_structure_from_format">#new_structure_from_format</a>
|
|
|
|
<li ><a href="#method-i-open-3F">#open?</a>
|
|
|
|
<li ><a href="#method-i-permission_policy">#permission_policy</a>
|
|
|
|
<li ><a href="#method-i-permission_policy_load">#permission_policy_load</a>
|
|
|
|
<li ><a href="#method-i-permission_policy_save">#permission_policy_save</a>
|
|
|
|
<li ><a href="#method-i-persistable-3F">#persistable?</a>
|
|
|
|
<li ><a href="#method-i-release_element_locks">#release_element_locks</a>
|
|
|
|
<li ><a href="#method-i-remove_element_permissions">#remove_element_permissions</a>
|
|
|
|
<li ><a href="#method-i-reservation_add_element">#reservation_add_element</a>
|
|
|
|
<li ><a href="#method-i-reservation_remove_element">#reservation_remove_element</a>
|
|
|
|
<li ><a href="#method-i-reserve_element_locks">#reserve_element_locks</a>
|
|
|
|
<li ><a href="#method-i-retrieve_by_address">#retrieve_by_address</a>
|
|
|
|
<li ><a href="#method-i-retrieve_by_uuid">#retrieve_by_uuid</a>
|
|
|
|
<li ><a href="#method-i-revoke_element_permissions">#revoke_element_permissions</a>
|
|
|
|
<li ><a href="#method-i-revoke_permissions_by_uuid">#revoke_permissions_by_uuid</a>
|
|
|
|
<li ><a href="#method-i-role_add_user">#role_add_user</a>
|
|
|
|
<li ><a href="#method-i-role_create">#role_create</a>
|
|
|
|
<li ><a href="#method-i-role_destroy">#role_destroy</a>
|
|
|
|
<li ><a href="#method-i-role_exist-3F">#role_exist?</a>
|
|
|
|
<li ><a href="#method-i-role_fetch">#role_fetch</a>
|
|
|
|
<li ><a href="#method-i-role_group">#role_group</a>
|
|
|
|
<li ><a href="#method-i-role_member-3F">#role_member?</a>
|
|
|
|
<li ><a href="#method-i-role_members">#role_members</a>
|
|
|
|
<li ><a href="#method-i-role_remove_user">#role_remove_user</a>
|
|
|
|
<li ><a href="#method-i-role_update">#role_update</a>
|
|
|
|
<li ><a href="#method-i-search_database">#search_database</a>
|
|
|
|
<li ><a href="#method-i-serialize">#serialize</a>
|
|
|
|
<li ><a href="#method-i-setting_keys">#setting_keys</a>
|
|
|
|
<li ><a href="#method-i-structural_link">#structural_link</a>
|
|
|
|
<li ><a href="#method-i-structure_attached-3F">#structure_attached?</a>
|
|
|
|
<li ><a href="#method-i-structure_detach">#structure_detach</a>
|
|
|
|
<li ><a href="#method-i-sync_export">#sync_export</a>
|
|
|
|
<li ><a href="#method-i-sync_import">#sync_import</a>
|
|
|
|
<li ><a href="#method-i-synchronize_records">#synchronize_records</a>
|
|
|
|
<li ><a href="#method-i-to_uri">#to_uri</a>
|
|
|
|
<li ><a href="#method-i-try_persist">#try_persist</a>
|
|
|
|
<li ><a href="#method-i-update_vfs_permission">#update_vfs_permission</a>
|
|
|
|
<li ><a href="#method-i-user_create">#user_create</a>
|
|
|
|
<li ><a href="#method-i-user_credential">#user_credential</a>
|
|
|
|
<li ><a href="#method-i-user_destroy">#user_destroy</a>
|
|
|
|
<li ><a href="#method-i-user_exist-3F">#user_exist?</a>
|
|
|
|
<li ><a href="#method-i-user_fetch">#user_fetch</a>
|
|
|
|
<li ><a href="#method-i-user_id_available-3F">#user_id_available?</a>
|
|
|
|
<li ><a href="#method-i-user_manifest">#user_manifest</a>
|
|
|
|
<li ><a href="#method-i-user_roles">#user_roles</a>
|
|
|
|
<li ><a href="#method-i-user_set_password">#user_set_password</a>
|
|
|
|
<li ><a href="#method-i-user_update">#user_update</a>
|
|
|
|
<li ><a href="#method-i-uuid_list">#uuid_list</a>
|
|
|
|
<li ><a href="#method-i-vfs_permission">#vfs_permission</a>
|
|
|
|
<li ><a href="#method-i-vfs_permission_exist-3F">#vfs_permission_exist?</a>
|
|
|
|
<li ><a href="#method-i-vfs_permission_manifest">#vfs_permission_manifest</a>
|
|
|
|
</ul>
|
|
</div>
|
|
|
|
</div>
|
|
</nav>
|
|
|
|
<main role="main" aria-labelledby="class-GxG::Database::Database">
|
|
<h1 id="class-GxG::Database::Database" class="class">
|
|
class GxG::Database::Database
|
|
</h1>
|
|
|
|
<section class="description">
|
|
|
|
<p><a href="Database.html"><code>Database</code></a> class proper</p>
|
|
|
|
</section>
|
|
|
|
|
|
<section id="5Buntitled-5D" class="documentation-section">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<section id="public-class-5Buntitled-5D-method-details" class="method-section">
|
|
<header>
|
|
<h3>Public Class Methods</h3>
|
|
</header>
|
|
|
|
|
|
<div id="method-c-element_table_by_index" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">element_table_by_index</span><span
|
|
class="method-args">(the_index=0)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="element_table_by_index-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 97</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">element_table_by_index</span>(<span class="ruby-identifier">the_index</span>=<span class="ruby-value">0</span>)
|
|
(<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_tables</span>().<span class="ruby-identifier">keys</span>[(<span class="ruby-identifier">the_index</span>)] <span class="ruby-operator">||</span> <span class="ruby-value">:unspecified</span>)
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-c-element_table_for_instance" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">element_table_for_instance</span><span
|
|
class="method-args">(the_instance=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="element_table_for_instance-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 101</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">element_table_for_instance</span>(<span class="ruby-identifier">the_instance</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-comment"># Review : rewrite - in use</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-value">:unspecified</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">table</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_tables</span>()
|
|
<span class="ruby-identifier">table</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_key</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_key</span> <span class="ruby-operator">==</span> <span class="ruby-value">:unspecified</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_instance</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-identifier">table</span>[(<span class="ruby-identifier">the_key</span>)])
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">the_key</span>
|
|
<span class="ruby-keyword">break</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-c-element_table_index" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">element_table_index</span><span
|
|
class="method-args">(the_key=:unspecified)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="element_table_index-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 93</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">element_table_index</span>(<span class="ruby-identifier">the_key</span>=<span class="ruby-value">:unspecified</span>)
|
|
(<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_tables</span>().<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">index</span>(<span class="ruby-identifier">the_key</span>.<span class="ruby-identifier">to_sym</span>) <span class="ruby-operator">||</span> <span class="ruby-value">0</span>)
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-c-element_tables" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">element_tables</span><span
|
|
class="method-args">()</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="element_tables-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 74</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">element_tables</span>()
|
|
{
|
|
<span class="ruby-value">:unspecified</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">nil</span>,
|
|
<span class="ruby-value">:element_boolean</span> <span class="ruby-operator">=></span> [<span class="ruby-operator">::</span><span class="ruby-constant">TrueClass</span>, <span class="ruby-operator">::</span><span class="ruby-constant">FalseClass</span>, <span class="ruby-operator">::</span><span class="ruby-constant">NilClass</span>],
|
|
<span class="ruby-value">:element_integer</span> <span class="ruby-operator">=></span> [<span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>],
|
|
<span class="ruby-value">:element_float</span> <span class="ruby-operator">=></span> [<span class="ruby-operator">::</span><span class="ruby-constant">Float</span>],
|
|
<span class="ruby-value">:element_bigdecimal</span> <span class="ruby-operator">=></span> [<span class="ruby-operator">::</span><span class="ruby-constant">BigDecimal</span>],
|
|
<span class="ruby-value">:element_datetime</span> <span class="ruby-operator">=></span> [<span class="ruby-operator">::</span><span class="ruby-constant">DateTime</span>],
|
|
<span class="ruby-value">:element_text</span> <span class="ruby-operator">=></span> [<span class="ruby-operator">::</span><span class="ruby-constant">String</span>],
|
|
<span class="ruby-value">:element_binary</span> <span class="ruby-operator">=></span> [<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">ByteArray</span>],
|
|
<span class="ruby-value">:element_array</span> <span class="ruby-operator">=></span> [<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>],
|
|
<span class="ruby-value">:element_hash</span> <span class="ruby-operator">=></span> [<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>]
|
|
}
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-c-new" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">new</span><span
|
|
class="method-args">(connection = nil, options={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
<div class="method-calls-super">
|
|
Calls superclass method
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="method-source-code" id="new-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 5111</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">connection</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={})
|
|
<span class="ruby-comment"># TODO: require :credential (access privs)</span>
|
|
<span class="ruby-keyword">super</span>()
|
|
<span class="ruby-ivar">@credential</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-ivar">@url</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:url</span>]
|
|
<span class="ruby-ivar">@base_permissions</span> = {<span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:move</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">connection</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Sequel</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span>)
|
|
<span class="ruby-ivar">@connector</span> = <span class="ruby-identifier">connection</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-ivar">@active</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">open?</span>()
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Unable to connect with the database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-ivar">@scheme</span> = <span class="ruby-ivar">@url</span>.<span class="ruby-identifier">scheme</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">case</span> <span class="ruby-ivar">@scheme</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:sqlite</span>, <span class="ruby-value">:sqlite3</span>
|
|
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">run</span>(<span class="ruby-string">"PRAGMA page_size=65536"</span>)
|
|
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">run</span>(<span class="ruby-string">"PRAGMA max_page_count=281474976710656"</span>)
|
|
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">run</span>(<span class="ruby-string">"PRAGMA encoding='UTF-8'"</span>)
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:mysql</span>, <span class="ruby-value">:mysql2</span>
|
|
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">run</span>(<span class="ruby-string">"SET GLOBAL max_allowed_packet=17825792;"</span>)
|
|
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">run</span>(<span class="ruby-string">"SET NAMES 'utf8' COLLATE 'utf8_general_ci';"</span>)
|
|
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">run</span>(<span class="ruby-string">"SET collation_connection = 'utf8_general_ci';"</span>)
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:postgres</span>
|
|
<span class="ruby-comment"># place holder</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Invalid db connection"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># characterize basic effective permissions</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-identifier">formatted</span> = <span class="ruby-identifier">db_formatted?</span>()
|
|
<span class="ruby-ivar">@base_permissions</span>[<span class="ruby-value">:read</span>] = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-ivar">@base_permissions</span>[<span class="ruby-value">:execute</span>] = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">formatted</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Lack read permissions to the database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:read_only</span>]
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">formatted</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-identifier">dbid</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">insert</span>()
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">dbid</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">dbid</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>)
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">dbid</span>)}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-ivar">@base_permissions</span>[<span class="ruby-value">:write</span>] = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-ivar">@base_permissions</span>[<span class="ruby-value">:create</span>] = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-ivar">@base_permissions</span>[<span class="ruby-value">:destroy</span>] = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-ivar">@base_permissions</span>[<span class="ruby-value">:rename</span>] = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-ivar">@base_permissions</span>[<span class="ruby-value">:move</span>] = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-identifier">test_table_name</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>().<span class="ruby-identifier">gsub</span>(<span class="ruby-string">"-"</span>,<span class="ruby-string">""</span>)
|
|
<span class="ruby-keyword">while</span> (<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">table_exists?</span>(<span class="ruby-identifier">test_table_name</span>.<span class="ruby-identifier">to_sym</span>)) <span class="ruby-keyword">do</span>
|
|
<span class="ruby-identifier">test_table_name</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>().<span class="ruby-identifier">gsub</span>(<span class="ruby-string">"-"</span>,<span class="ruby-string">""</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">create_table</span>(<span class="ruby-identifier">test_table_name</span>.<span class="ruby-identifier">to_sym</span>) <span class="ruby-keyword">do</span>
|
|
<span class="ruby-identifier">primary_key</span> <span class="ruby-value">:dbid</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">drop_table</span>(<span class="ruby-identifier">test_table_name</span>.<span class="ruby-identifier">to_sym</span>)
|
|
<span class="ruby-ivar">@base_permissions</span>[<span class="ruby-value">:write</span>] = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-ivar">@base_permissions</span>[<span class="ruby-value">:create</span>] = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-ivar">@base_permissions</span>[<span class="ruby-value">:destroy</span>] = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-ivar">@base_permissions</span>[<span class="ruby-value">:rename</span>] = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-ivar">@base_permissions</span>[<span class="ruby-value">:move</span>] = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-comment"># Read-only Database</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-ivar">@base_permissions</span>.<span class="ruby-identifier">freeze</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">formatted</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@base_permissions</span>[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-identifier">db_format</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">db_formatted?</span>()
|
|
<span class="ruby-ivar">@active</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Unable to format the database for use"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Unable to format a read-only database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-ivar">@authority</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-ivar">@db_list</span> = []
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:authority</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span>)
|
|
<span class="ruby-ivar">@authority</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:authority</span>]
|
|
<span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">db_register</span>(<span class="ruby-keyword">self</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">group_exist?</span>(<span class="ruby-string">"Administrators"</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@base_permissions</span>[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">user_id_available?</span>(<span class="ruby-string">"root"</span>)
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">user_create</span>(<span class="ruby-string">"root"</span>,<span class="ruby-string">"password"</span>)
|
|
<span class="ruby-identifier">temp_cred</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">user_credential</span>(<span class="ruby-string">"root"</span>,<span class="ruby-string">"password"</span>)
|
|
<span class="ruby-identifier">temp_group</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">group_create</span>({<span class="ruby-value">:title</span> <span class="ruby-operator">=></span> <span class="ruby-string">"Administrators"</span>, <span class="ruby-value">:default_role</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:title</span> <span class="ruby-operator">=></span> <span class="ruby-string">"Members"</span>}})
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">role_add_user</span>(<span class="ruby-identifier">temp_group</span>[<span class="ruby-value">:default_role</span>],<span class="ruby-identifier">temp_cred</span>)
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">dev_group</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">group_create</span>({<span class="ruby-value">:title</span> <span class="ruby-operator">=></span> <span class="ruby-string">"Developers"</span>, <span class="ruby-value">:default_role</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:title</span> <span class="ruby-operator">=></span> <span class="ruby-string">"Members"</span>}})
|
|
<span class="ruby-identifier">dsn_group</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">group_create</span>({<span class="ruby-value">:title</span> <span class="ruby-operator">=></span> <span class="ruby-string">"Designers"</span>, <span class="ruby-value">:default_role</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:title</span> <span class="ruby-operator">=></span> <span class="ruby-string">"Members"</span>}})
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">self</span>[<span class="ruby-value">:system_credentials</span>] = {<span class="ruby-value">:administrator</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">temp_cred</span>, <span class="ruby-value">:administrators</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">temp_group</span>[<span class="ruby-value">:default_role</span>], <span class="ruby-value">:developers</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">dev_group</span>[<span class="ruby-value">:default_role</span>], <span class="ruby-value">:designers</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">dsn_group</span>[<span class="ruby-value">:default_role</span>]}
|
|
<span class="ruby-keyword">self</span>[<span class="ruby-value">:permission_policy</span>] = [{<span class="ruby-value">:event</span> <span class="ruby-operator">=></span> <span class="ruby-value">:extend</span>, <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-value">:any</span>, <span class="ruby-value">:action</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:extend_permissions</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">temp_group</span>[<span class="ruby-value">:default_role</span>]}}]
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">user_id_available?</span>(<span class="ruby-string">"public"</span>)
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">user_create</span>(<span class="ruby-string">"public"</span>,<span class="ruby-string">"password"</span>, <span class="ruby-string">"00000000-0000-4000-0000-000000000000"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">permission_policy_load</span>
|
|
<span class="ruby-keyword">self</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-c-valid_field_classes" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">valid_field_classes</span><span
|
|
class="method-args">()</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="valid_field_classes-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 89</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">valid_field_classes</span>()
|
|
[<span class="ruby-operator">::</span><span class="ruby-constant">TrueClass</span>, <span class="ruby-operator">::</span><span class="ruby-constant">FalseClass</span>, <span class="ruby-operator">::</span><span class="ruby-constant">NilClass</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Float</span>, <span class="ruby-operator">::</span><span class="ruby-constant">BigDecimal</span>, <span class="ruby-operator">::</span><span class="ruby-constant">DateTime</span>, <span class="ruby-operator">::</span><span class="ruby-constant">String</span>, <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">ByteArray</span>]
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</section>
|
|
|
|
<section id="public-instance-5Buntitled-5D-method-details" class="method-section">
|
|
<header>
|
|
<h3>Public Instance Methods</h3>
|
|
</header>
|
|
|
|
|
|
<div id="method-i-5B-5D" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">[]</span><span
|
|
class="method-args">(setting_key=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="5B-5D-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 3500</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">[]</span>(<span class="ruby-identifier">setting_key</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>()
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>()
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:settings</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:title</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">setting_key</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">content</span> = <span class="ruby-string">""</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:content</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">order</span>(<span class="ruby-value">:ordinal</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">content</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:content</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">content</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">content</span>.<span class="ruby-identifier">unserialize</span>()
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Attempted to access a defunct Database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:setting_key</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">setting_key</span>}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-5B-5D-3D" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">[]=</span><span
|
|
class="method-args">(setting_key=nil, object=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="5B-5D-3D-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 3527</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">[]=</span>(<span class="ruby-identifier">setting_key</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">object</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">object</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>()
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>()
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Unable to write to database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">setting_key</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply a setting key as a Symbol"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">setting_key</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply a setting key whose length is greater than zero"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:settings</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:title</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">setting_key</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">new_uuid</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>().<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-keyword">while</span> (<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:settings</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">new_uuid</span>)}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-keyword">or</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:formats</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">new_uuid</span>)}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-keyword">or</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_text</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">new_uuid</span>)}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>)
|
|
<span class="ruby-identifier">new_uuid</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>().<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:settings</span>].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:title</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">setting_key</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">new_uuid</span>.<span class="ruby-identifier">to_s</span>})
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:settings</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">new_uuid</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:settings</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:dbid</span>])}).<span class="ruby-identifier">update</span>({<span class="ruby-value">:version</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:version</span>] <span class="ruby-operator">+</span> <span class="ruby-value">0.0001</span>)})
|
|
<span class="ruby-identifier">content</span> = <span class="ruby-identifier">object</span>.<span class="ruby-identifier">serialize</span>()
|
|
<span class="ruby-identifier">old_segments</span> = []
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">order</span>(<span class="ruby-value">:ordinal</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">old_segments</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">content</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">old_segments</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">new_segments</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">apportioned_ranges</span>(<span class="ruby-identifier">content</span>.<span class="ruby-identifier">size</span>, <span class="ruby-value">4096</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">old_segments</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-identifier">new_segments</span>.<span class="ruby-identifier">size</span>
|
|
<span class="ruby-identifier">the_count</span> = <span class="ruby-identifier">old_segments</span>.<span class="ruby-identifier">size</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">the_count</span> = <span class="ruby-identifier">new_segments</span>.<span class="ruby-identifier">size</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">manifest</span> = []
|
|
(<span class="ruby-value">0</span><span class="ruby-operator">..</span>(<span class="ruby-identifier">the_count</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_ordinal</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">new_segments</span>[(<span class="ruby-identifier">the_ordinal</span>)] <span class="ruby-keyword">and</span> <span class="ruby-identifier">old_segments</span>[(<span class="ruby-identifier">the_ordinal</span>)]
|
|
<span class="ruby-comment">#overwrite with new segment range</span>
|
|
<span class="ruby-identifier">manifest</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:operation</span> <span class="ruby-operator">=></span> <span class="ruby-value">:overwrite</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">old_segments</span>[(<span class="ruby-identifier">the_ordinal</span>)]), <span class="ruby-value">:ordinal</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_ordinal</span>), <span class="ruby-value">:portion</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">new_segments</span>[(<span class="ruby-identifier">the_ordinal</span>)])}
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">new_segments</span>[(<span class="ruby-identifier">the_ordinal</span>)]
|
|
<span class="ruby-comment"># create new segment at this ordinal</span>
|
|
<span class="ruby-identifier">manifest</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:operation</span> <span class="ruby-operator">=></span> <span class="ruby-value">:create</span>, <span class="ruby-value">:ordinal</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_ordinal</span>), <span class="ruby-value">:portion</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">new_segments</span>[(<span class="ruby-identifier">the_ordinal</span>)])}
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-comment"># delete old segment</span>
|
|
<span class="ruby-identifier">manifest</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:operation</span> <span class="ruby-operator">=></span> <span class="ruby-value">:delete</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">old_segments</span>[(<span class="ruby-identifier">the_ordinal</span>)])}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">manifest</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">action</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">action</span>[<span class="ruby-value">:operation</span>]
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:overwrite</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">action</span>[<span class="ruby-value">:dbid</span>])}).<span class="ruby-identifier">update</span>({<span class="ruby-value">:ordinal</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">action</span>[<span class="ruby-value">:ordinal</span>]), <span class="ruby-value">:length</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">content</span>[(<span class="ruby-identifier">action</span>[<span class="ruby-value">:portion</span>])].<span class="ruby-identifier">size</span>), <span class="ruby-value">:content</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">content</span>[(<span class="ruby-identifier">action</span>[<span class="ruby-value">:portion</span>])])})
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:create</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:uuid</span>]), <span class="ruby-value">:ordinal</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">action</span>[<span class="ruby-value">:ordinal</span>]), <span class="ruby-value">:length</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">content</span>[(<span class="ruby-identifier">action</span>[<span class="ruby-value">:portion</span>])].<span class="ruby-identifier">size</span>), <span class="ruby-value">:content</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">content</span>[(<span class="ruby-identifier">action</span>[<span class="ruby-value">:portion</span>])])})
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:delete</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">action</span>[<span class="ruby-value">:dbid</span>])}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">"Internal Error - could not retrieve setting record: #{setting_key.inspect}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Attempted to access a defunct Database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:setting</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">setting_key</span>, <span class="ruby-value">:object</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">object</span>}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-assign_element_permission" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">assign_element_permission</span><span
|
|
class="method-args">(table=:unspecified, dbid=0, credential=nil, permissions={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="assign_element_permission-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1502</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">assign_element_permission</span>(<span class="ruby-identifier">table</span>=<span class="ruby-value">:unspecified</span>, <span class="ruby-identifier">dbid</span>=<span class="ruby-value">0</span>, <span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">permissions</span>={})
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database inactive"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">dbid</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"dbid must be specified with a Integer"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">permissions</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"permissions must be specified with a Hash"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must specify a valid credential UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">table</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>)
|
|
<span class="ruby-identifier">table</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_table_by_index</span>(<span class="ruby-identifier">table</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># Review : change in permission policy</span>
|
|
<span class="ruby-comment"># if [:element_boolean, :element_integer, :element_float, :element_bigdecimal, :element_datetime, :element_text, :element_binary, :element_array, :element_hash].include?(table)</span>
|
|
<span class="ruby-keyword">if</span> [<span class="ruby-value">:element_array</span>, <span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">table</span>)
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">table</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">dbid</span>), <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-comment"># update</span>
|
|
<span class="ruby-identifier">the_update</span> = {<span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:move</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}
|
|
[<span class="ruby-value">:execute</span>, <span class="ruby-value">:rename</span>, <span class="ruby-value">:move</span>, <span class="ruby-value">:destroy</span>, <span class="ruby-value">:create</span>, <span class="ruby-value">:write</span>, <span class="ruby-value">:read</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_permission</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>[(<span class="ruby-identifier">the_permission</span>)] <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
|
|
<span class="ruby-identifier">the_update</span>[(<span class="ruby-identifier">the_permission</span>)] = <span class="ruby-value">1</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
[<span class="ruby-value">:execute</span>, <span class="ruby-value">:rename</span>, <span class="ruby-value">:move</span>, <span class="ruby-value">:destroy</span>, <span class="ruby-value">:create</span>, <span class="ruby-value">:write</span>, <span class="ruby-value">:read</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_permission</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">permissions</span>[(<span class="ruby-identifier">the_permission</span>)].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">TrueClass</span>)
|
|
<span class="ruby-identifier">the_update</span>[(<span class="ruby-identifier">the_permission</span>)] = <span class="ruby-value">1</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">permissions</span>[(<span class="ruby-identifier">the_permission</span>)].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">FalseClass</span>)
|
|
<span class="ruby-identifier">the_update</span>[(<span class="ruby-identifier">the_permission</span>)] = <span class="ruby-value">0</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">the_update</span>[<span class="ruby-value">:version</span>] = <span class="ruby-identifier">record</span>[<span class="ruby-value">:version</span>] <span class="ruby-operator">+</span> <span class="ruby-value">0.0001</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:dbid</span>])}).<span class="ruby-identifier">update</span>(<span class="ruby-identifier">the_update</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-comment"># create</span>
|
|
<span class="ruby-identifier">new_record</span> = {<span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">table</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">dbid</span>), <span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:move</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}
|
|
[<span class="ruby-value">:execute</span>, <span class="ruby-value">:rename</span>, <span class="ruby-value">:move</span>, <span class="ruby-value">:destroy</span>, <span class="ruby-value">:create</span>, <span class="ruby-value">:write</span>, <span class="ruby-value">:read</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_permission</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">permissions</span>[(<span class="ruby-identifier">the_permission</span>)]
|
|
<span class="ruby-identifier">new_record</span>[(<span class="ruby-identifier">the_permission</span>)] = <span class="ruby-value">1</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:permissions</span>].<span class="ruby-identifier">insert</span>(<span class="ruby-identifier">new_record</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"Invalid table specified"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">table</span>), <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">dbid</span>), <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>), <span class="ruby-value">:permissions</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">permissions</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-byte_size_by_uuid" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">byte_size_by_uuid</span><span
|
|
class="method-args">(the_uuid=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="byte_size_by_uuid-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2514</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">byte_size_by_uuid</span>(<span class="ruby-identifier">the_uuid</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-value">0</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-identifier">found</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>, <span class="ruby-value">:uuid</span>).<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">found</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator">+=</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_byte_size</span>(<span class="ruby-value">:element_hash</span>,(<span class="ruby-identifier">found</span>[<span class="ruby-value">:dbid</span>]))
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">found</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_array</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>, <span class="ruby-value">:uuid</span>).<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">found</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator">+=</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_byte_size</span>(<span class="ruby-value">:element_array</span>,(<span class="ruby-identifier">found</span>[<span class="ruby-value">:dbid</span>]))
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_uuid</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-clear_all_element_locks" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">clear_all_element_locks</span><span
|
|
class="method-args">()</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
<p>Utility methods</p>
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="clear_all_element_locks-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 5086</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">clear_all_element_locks</span>()
|
|
<span class="ruby-comment"># for when boo-boos happen</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>()
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_locks</span>].<span class="ruby-identifier">filter</span>({}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-clone" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">clone</span><span
|
|
class="method-args">()</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="clone-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 5107</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">clone</span>()
|
|
<span class="ruby-identifier">initialize_clone</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-close" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">close</span><span
|
|
class="method-args">()</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="close-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 415</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">close</span>()
|
|
<span class="ruby-comment"># place holder for now.</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">db_unregister</span>(<span class="ruby-keyword">self</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-connector" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">connector</span><span
|
|
class="method-args">()</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="connector-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 422</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">connector</span>()
|
|
<span class="ruby-ivar">@connector</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-create_vfs_permission" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">create_vfs_permission</span><span
|
|
class="method-args">(file_id=nil, credential=nil, permission={:execute => false, :rename => false, :move => false, :destroy => false, :create => false, :write => false, :read => false})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="create_vfs_permission-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1767</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">create_vfs_permission</span>(<span class="ruby-identifier">file_id</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">permission</span>={<span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:move</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>})
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database inactive"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">file_id</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"file_id must be specified with a String"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">permission</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"permission must be specified with a Hash"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must specify a valid credential UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:file_permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:file_id</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">file_id</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">update</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-identifier">dbid</span> = <span class="ruby-identifier">record</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-value">:dbid</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">update</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-identifier">dbid</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-identifier">record</span> = {<span class="ruby-value">:file_id</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">file_id</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:move</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">permission</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_permission_key</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">permission</span>[(<span class="ruby-identifier">the_permission_key</span>)] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
|
|
<span class="ruby-identifier">record</span>[(<span class="ruby-identifier">the_permission_key</span>)] = <span class="ruby-value">1</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">record</span>[(<span class="ruby-identifier">the_permission_key</span>)] = <span class="ruby-value">0</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">update</span> <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:file_permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">dbid</span>}).<span class="ruby-identifier">update</span>(<span class="ruby-identifier">record</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:file_permissions</span>].<span class="ruby-identifier">insert</span>(<span class="ruby-identifier">record</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:file_id</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">file_id</span>), <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-db_format" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">db_format</span><span
|
|
class="method-args">(format_options={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="db_format-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 297</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">db_format</span>(<span class="ruby-identifier">format_options</span>={})
|
|
<span class="ruby-comment"># MySql stuff:</span>
|
|
<span class="ruby-comment"># ALTER TABLE tbl_name MAX_ROWS=1000000000 AVG_ROW_LENGTH=nnn;</span>
|
|
<span class="ruby-comment"># See: https://dev.mysql.com/doc/refman/5.0/en/table-size-limit.html</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Sequel</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span>)
|
|
<span class="ruby-keyword">case</span> <span class="ruby-ivar">@scheme</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:sqlite</span>
|
|
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">run</span>(<span class="ruby-string">"PRAGMA page_size=65536"</span>)
|
|
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">run</span>(<span class="ruby-string">"PRAGMA max_page_count=281474976710656"</span>)
|
|
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">run</span>(<span class="ruby-string">"PRAGMA encoding='UTF-8'"</span>)
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:mysql</span>, <span class="ruby-value">:mysql2</span>
|
|
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">run</span>(<span class="ruby-string">"SET GLOBAL max_allowed_packet = 17825792;"</span>)
|
|
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">run</span>(<span class="ruby-string">"SET NAMES 'utf8' COLLATE 'utf8_general_ci';"</span>)
|
|
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">run</span>(<span class="ruby-string">"SET collation_connection = 'utf8_general_ci';"</span>)
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:postgres</span>
|
|
<span class="ruby-comment"># place holder</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">migration</span> = <span class="ruby-identifier">db_migration</span>()
|
|
<span class="ruby-identifier">migration</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_table</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">table_exists?</span>(<span class="ruby-identifier">the_table</span>)
|
|
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">create_table</span>(<span class="ruby-identifier">the_table</span>) <span class="ruby-keyword">do</span>
|
|
<span class="ruby-identifier">primary_key</span> <span class="ruby-value">:dbid</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">used_bytes</span> = <span class="ruby-value">0</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">existing_columns</span> = <span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">the_table</span>)].<span class="ruby-identifier">columns</span>
|
|
<span class="ruby-identifier">migration</span>[(<span class="ruby-identifier">the_table</span>)].<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_column</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">used_bytes</span> <span class="ruby-operator">+=</span> (<span class="ruby-identifier">migration</span>[(<span class="ruby-identifier">the_table</span>)][(<span class="ruby-identifier">the_column</span>)][<span class="ruby-value">:bytes</span>]).<span class="ruby-identifier">to_i</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">existing_columns</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">the_column</span>)
|
|
<span class="ruby-comment"># TODO: figure out a way to inspect columns for attributes -> detailed verification</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-comment"># collation for mysql</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@scheme</span> <span class="ruby-operator">==</span> <span class="ruby-value">:mysql</span>
|
|
<span class="ruby-comment"># Note: might have to specify :collate first, use -> {:collate => ""}.merge(migration[(the_table)][(the_column)][:options])</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">migration</span>[(<span class="ruby-identifier">the_table</span>)][(<span class="ruby-identifier">the_column</span>)][<span class="ruby-value">:type</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:varchar</span>
|
|
<span class="ruby-comment"># migration[(the_table)][(the_column)][:options] = {:collate => "utf8_general_ci"}.merge(migration[(the_table)][(the_column)][:options])</span>
|
|
<span class="ruby-identifier">migration</span>[(<span class="ruby-identifier">the_table</span>)][(<span class="ruby-identifier">the_column</span>)][<span class="ruby-value">:options</span>][<span class="ruby-value">:collate</span>] = <span class="ruby-string">"utf8_general_ci"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">migration</span>[(<span class="ruby-identifier">the_table</span>)][(<span class="ruby-identifier">the_column</span>)][<span class="ruby-value">:type</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:blob</span>
|
|
<span class="ruby-comment"># migration[(the_table)][(the_column)][:options] = {:collate => "binary"}.merge(migration[(the_table)][(the_column)][:options])</span>
|
|
<span class="ruby-comment"># Note: MySQL 5 doesn't like putting collation on blobs! (blows up)</span>
|
|
<span class="ruby-comment"># migration[(the_table)][(the_column)][:options][:collate] = "binary"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># do the deed</span>
|
|
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">add_column</span>((<span class="ruby-identifier">the_table</span>), (<span class="ruby-identifier">the_column</span>), (<span class="ruby-identifier">migration</span>[(<span class="ruby-identifier">the_table</span>)][(<span class="ruby-identifier">the_column</span>)][<span class="ruby-value">:type</span>]), (<span class="ruby-identifier">migration</span>[(<span class="ruby-identifier">the_table</span>)][(<span class="ruby-identifier">the_column</span>)][<span class="ruby-value">:options</span>]))
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@scheme</span> <span class="ruby-operator">==</span> <span class="ruby-value">:mysql</span>
|
|
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">run</span>(<span class="ruby-node">"ALTER TABLE #{the_table.to_s} MAX_ROWS=18446744073709551616 AVG_ROW_LENGTH=#{used_bytes.to_s};"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Invalid db connection"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">format_options</span>})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-db_formatted-3F" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">db_formatted?</span><span
|
|
class="method-args">()</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="db_formatted-3F-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 368</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">db_formatted?</span>()
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Sequel</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span>)
|
|
<span class="ruby-identifier">migration</span> = <span class="ruby-identifier">db_migration</span>()
|
|
<span class="ruby-identifier">migration</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_table</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">table_exists?</span>(<span class="ruby-identifier">the_table</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">break</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#columns</span>
|
|
<span class="ruby-identifier">existing_columns</span> = <span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">the_table</span>)].<span class="ruby-identifier">columns</span>
|
|
<span class="ruby-identifier">migration</span>[(<span class="ruby-identifier">the_table</span>)].<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_column</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">existing_columns</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">the_column</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">break</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">unless</span> (<span class="ruby-identifier">result</span>)
|
|
<span class="ruby-keyword">break</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Invalid db connection"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">nil</span>})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-db_list" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">db_list</span><span
|
|
class="method-args">()</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="db_list-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 455</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">db_list</span>()
|
|
<span class="ruby-identifier">result</span> = []
|
|
<span class="ruby-ivar">@db_list</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_db</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">the_db</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-db_migration" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">db_migration</span><span
|
|
class="method-args">()</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="db_migration-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 118</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">db_migration</span>()
|
|
<span class="ruby-comment"># Review : Consider adding support for a ::Symbol class as well. (ease-of-use implications later)</span>
|
|
<span class="ruby-comment"># Internal mapping of the database format</span>
|
|
<span class="ruby-comment"># Datatypes - See: http://sequel.jeremyevans.net/rdoc/files/doc/schema_modification_rdoc.html</span>
|
|
<span class="ruby-comment"># Column Options - See: http://sequel.jeremyevans.net/rdoc/classes/Sequel/Database.html#method-i-add_column</span>
|
|
<span class="ruby-comment"># See also : http://ruby-doc.org/core-2.2.0/Array.html#method-i-pack</span>
|
|
{
|
|
<span class="ruby-value">:element_text</span> <span class="ruby-operator">=></span> {
|
|
<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:unique</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:primary_key</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:auto_increment</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:version</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:length</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)}
|
|
},
|
|
<span class="ruby-value">:text_page</span> <span class="ruby-operator">=></span> {
|
|
<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:unique</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:primary_key</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:auto_increment</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:ordinal</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:length</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:content</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">4099</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">4099</span>}
|
|
},
|
|
<span class="ruby-value">:element_binary</span> <span class="ruby-operator">=></span> {
|
|
<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:unique</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:primary_key</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:auto_increment</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:version</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:format</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:length</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)}
|
|
},
|
|
<span class="ruby-value">:binary_page</span> <span class="ruby-operator">=></span> {
|
|
<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:unique</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:primary_key</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:auto_increment</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:ordinal</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:length</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:content</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:blob</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">65536</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">65536</span>}
|
|
},
|
|
<span class="ruby-value">:element_array</span> <span class="ruby-operator">=></span> {
|
|
<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:unique</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:primary_key</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:auto_increment</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:constraint</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:title</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">"Untitled"</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>},
|
|
<span class="ruby-value">:version</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)}
|
|
},
|
|
<span class="ruby-value">:array_elements</span> <span class="ruby-operator">=></span> {
|
|
<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:unique</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:primary_key</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:auto_increment</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:ordinal</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:version</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:element</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">"element_boolean"</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>},
|
|
<span class="ruby-value">:element_boolean</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">1</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">-1</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:element_integer</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:element_float</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:element_bigdecimal</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:numeric</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-operator">::</span><span class="ruby-constant">BigDecimal</span>.<span class="ruby-identifier">new</span>(<span class="ruby-string">"0.0"</span>)}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">256</span>},
|
|
<span class="ruby-value">:element_datetime</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:datetime</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">16</span>},
|
|
<span class="ruby-value">:time_offset</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:time_prior</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:time_after</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:length</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:element_text</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>},
|
|
<span class="ruby-value">:element_text_uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:element_binary_uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:element_array_uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:element_hash_uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>}
|
|
},
|
|
<span class="ruby-value">:element_hash</span> <span class="ruby-operator">=></span> {
|
|
<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:unique</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:primary_key</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:auto_increment</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:format</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:title</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">"Untitled"</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>},
|
|
<span class="ruby-value">:version</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)}
|
|
},
|
|
<span class="ruby-value">:hash_properties</span> <span class="ruby-operator">=></span> {
|
|
<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:unique</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:primary_key</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:auto_increment</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:property</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>},
|
|
<span class="ruby-value">:ordinal</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:version</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:element</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">"element_boolean"</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>},
|
|
<span class="ruby-value">:element_boolean</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">1</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">-1</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:element_integer</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:element_float</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:element_bigdecimal</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:numeric</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-operator">::</span><span class="ruby-constant">BigDecimal</span>.<span class="ruby-identifier">new</span>(<span class="ruby-string">"0.0"</span>)}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">256</span>},
|
|
<span class="ruby-value">:element_datetime</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:datetime</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">16</span>},
|
|
<span class="ruby-value">:time_offset</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:time_prior</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:time_after</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:length</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:element_text</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>},
|
|
<span class="ruby-value">:element_text_uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:element_binary_uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:element_array_uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:element_hash_uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>}
|
|
},
|
|
<span class="ruby-value">:element_locks</span> <span class="ruby-operator">=></span> {
|
|
<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:unique</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:primary_key</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:auto_increment</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>,<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:reservation</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>},
|
|
<span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)}
|
|
},
|
|
<span class="ruby-value">:trash</span> <span class="ruby-operator">=></span> {
|
|
<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:unique</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:primary_key</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:auto_increment</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>},
|
|
<span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)}
|
|
},
|
|
<span class="ruby-value">:users</span> <span class="ruby-operator">=></span> {
|
|
<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:unique</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:primary_key</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:auto_increment</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:user_id</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>},
|
|
<span class="ruby-value">:password_hash</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>},
|
|
<span class="ruby-value">:version</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)}
|
|
},
|
|
<span class="ruby-value">:roles</span> <span class="ruby-operator">=></span> {
|
|
<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:unique</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:primary_key</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:auto_increment</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:group_uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:seo</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>},
|
|
<span class="ruby-value">:title</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>},
|
|
<span class="ruby-value">:version</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)}
|
|
},
|
|
<span class="ruby-value">:user_roles</span> <span class="ruby-operator">=></span> {
|
|
<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:unique</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:primary_key</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:auto_increment</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:user_uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:role_uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:version</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)}
|
|
},
|
|
<span class="ruby-value">:groups</span> <span class="ruby-operator">=></span> {
|
|
<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:unique</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:primary_key</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:auto_increment</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:default_role</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:seo</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>},
|
|
<span class="ruby-value">:title</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>},
|
|
<span class="ruby-value">:version</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)}
|
|
},
|
|
<span class="ruby-value">:permissions</span> <span class="ruby-operator">=></span> {
|
|
<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:unique</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:primary_key</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:auto_increment</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:move</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:create</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:write</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:read</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>},
|
|
<span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:version</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)}
|
|
},
|
|
<span class="ruby-value">:file_permissions</span> <span class="ruby-operator">=></span> {
|
|
<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:unique</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:primary_key</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:auto_increment</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:file_id</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:move</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:create</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:write</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:read</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:version</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)}
|
|
},
|
|
<span class="ruby-value">:formats</span> <span class="ruby-operator">=></span> {
|
|
<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:unique</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:primary_key</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:auto_increment</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">"structure"</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:ufs</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">4099</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">4099</span>},
|
|
<span class="ruby-value">:title</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>},
|
|
<span class="ruby-value">:version</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:mime_types</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">4099</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">4099</span>}
|
|
},
|
|
<span class="ruby-value">:settings</span> <span class="ruby-operator">=></span> {
|
|
<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:integer</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:unique</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:primary_key</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:auto_increment</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">-1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'l!'</span>).<span class="ruby-identifier">length</span>)},
|
|
<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">40</span>},
|
|
<span class="ruby-value">:title</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:varchar</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:size</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>, <span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:null</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> <span class="ruby-value">259</span>},
|
|
<span class="ruby-value">:version</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-value">:float</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:default</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>}, <span class="ruby-value">:bytes</span> <span class="ruby-operator">=></span> ([ <span class="ruby-value">0.1</span> ].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'d'</span>).<span class="ruby-identifier">length</span>)}
|
|
}
|
|
}
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-db_permissions" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">db_permissions</span><span
|
|
class="method-args">()</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
<p>Permission Handling methods</p>
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="db_permissions-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 435</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">db_permissions</span>
|
|
<span class="ruby-ivar">@base_permissions</span>.<span class="ruby-identifier">clone</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-db_register" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">db_register</span><span
|
|
class="method-args">(the_db)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
<p>Authority support</p>
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="db_register-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 439</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">db_register</span>(<span class="ruby-identifier">the_db</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_db</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span>)
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@db_list</span>.<span class="ruby-identifier">find_index</span>(<span class="ruby-identifier">the_db</span>)
|
|
<span class="ruby-ivar">@db_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">the_db</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-db_unregister" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">db_unregister</span><span
|
|
class="method-args">(the_db)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="db_unregister-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 447</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">db_unregister</span>(<span class="ruby-identifier">the_db</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_db</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@db_list</span>.<span class="ruby-identifier">find_index</span>(<span class="ruby-identifier">the_db</span>)
|
|
<span class="ruby-ivar">@db_list</span>.<span class="ruby-identifier">delete_at</span>(<span class="ruby-ivar">@db_list</span>.<span class="ruby-identifier">find_index</span>(<span class="ruby-identifier">the_db</span>))
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-destroy_by_uuid" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">destroy_by_uuid</span><span
|
|
class="method-args">(credential=nil, the_uuid=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="destroy_by_uuid-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2457</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">destroy_by_uuid</span>(<span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">the_uuid</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-comment"># Review : rewrite - in use</span>
|
|
<span class="ruby-comment"># element_destroy(credential=nil,table=:unspecified,dbid=0, options={})</span>
|
|
<span class="ruby-comment"># .effective_uuid_permission(data["location"].to_s.to_sym,@credential)</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:destroy</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">found</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>, <span class="ruby-value">:uuid</span>).<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">found</span>
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_destroy</span>(<span class="ruby-identifier">credential</span>, <span class="ruby-value">:element_hash</span>,(<span class="ruby-identifier">found</span>[<span class="ruby-value">:dbid</span>]))
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">found</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_array</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>, <span class="ruby-value">:uuid</span>).<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">found</span>
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_destroy</span>(<span class="ruby-identifier">credential</span>, <span class="ruby-value">:element_array</span>,(<span class="ruby-identifier">found</span>[<span class="ruby-value">:dbid</span>]))
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply a valid credential UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>), <span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_uuid</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-destroy_vfs_permission" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">destroy_vfs_permission</span><span
|
|
class="method-args">(file_id=nil, credential=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="destroy_vfs_permission-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1861</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">destroy_vfs_permission</span>(<span class="ruby-identifier">file_id</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database inactive"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">file_id</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"file_id must be specified with a String"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># ### Review : make more efficient</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">credential</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must specify a valid credential UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:file_permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:file_id</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">file_id</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:file_permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:file_id</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">file_id</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:file_permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:file_id</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">file_id</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:file_permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:file_id</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">file_id</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:file_id</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">file_id</span>), <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-dup" class="method-detail method-alias">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">dup</span><span
|
|
class="method-args">()</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="aliases">
|
|
Alias for: <a href="Database.html#method-i-initialize_clone">initialize_clone</a>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-effective_element_permission" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">effective_element_permission</span><span
|
|
class="method-args">(table=:unspecified, dbid=0, credential=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
<p>DB Objects</p>
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="effective_element_permission-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1895</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">effective_element_permission</span>(<span class="ruby-identifier">table</span>=<span class="ruby-value">:unspecified</span>, <span class="ruby-identifier">dbid</span>=<span class="ruby-value">0</span>, <span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:move</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database inactive"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">dbid</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"dbid must be specified with a Integer"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must specify a valid credential UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">table</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>)
|
|
<span class="ruby-identifier">table</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_table_by_index</span>(<span class="ruby-identifier">table</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># Review : change in permission policy</span>
|
|
<span class="ruby-comment"># if [:element_boolean, :element_integer, :element_float, :element_bigdecimal, :element_datetime, :element_text, :element_binary, :element_array, :element_hash].include?(table)</span>
|
|
<span class="ruby-keyword">if</span> [<span class="ruby-value">:element_array</span>, <span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">table</span>)
|
|
<span class="ruby-comment"># is credential a user or role?</span>
|
|
<span class="ruby-identifier">raw_permissions</span> = []
|
|
<span class="ruby-comment"># Include PUBLIC credential</span>
|
|
<span class="ruby-identifier">credentials</span> = [<span class="ruby-string">"00000000-0000-4000-0000-000000000000"</span>]
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">user_exist?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">credentials</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">credential</span>
|
|
<span class="ruby-identifier">role_list</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">user_roles</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">role_list</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">credentials</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:credential</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">role_exist?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">credentials</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">credential</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"Invalid credential. It is neither a user nor a role UUID"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">credentials</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">manifest</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">entry</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">table</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">dbid</span>)})
|
|
<span class="ruby-identifier">manifest</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">record</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">new_permission</span> = {<span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:move</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}
|
|
[<span class="ruby-value">:execute</span>, <span class="ruby-value">:rename</span>, <span class="ruby-value">:move</span>, <span class="ruby-value">:destroy</span>, <span class="ruby-value">:create</span>, <span class="ruby-value">:write</span>, <span class="ruby-value">:read</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_permission</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>[(<span class="ruby-identifier">the_permission</span>)] <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
|
|
<span class="ruby-identifier">new_permission</span>[(<span class="ruby-identifier">the_permission</span>)] = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">raw_permissions</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">new_permission</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">permission</span> = {<span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:move</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}
|
|
<span class="ruby-identifier">raw_permissions</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
[<span class="ruby-value">:execute</span>, <span class="ruby-value">:rename</span>, <span class="ruby-value">:move</span>, <span class="ruby-value">:destroy</span>, <span class="ruby-value">:create</span>, <span class="ruby-value">:write</span>, <span class="ruby-value">:read</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_permission</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">entry</span>[(<span class="ruby-identifier">the_permission</span>)]
|
|
<span class="ruby-identifier">permission</span>[(<span class="ruby-identifier">the_permission</span>)] = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">db_limits</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()
|
|
[<span class="ruby-value">:execute</span>, <span class="ruby-value">:rename</span>, <span class="ruby-value">:move</span>, <span class="ruby-value">:destroy</span>, <span class="ruby-value">:create</span>, <span class="ruby-value">:write</span>, <span class="ruby-value">:read</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_permission</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">db_limits</span>[(<span class="ruby-identifier">the_permission</span>)] <span class="ruby-keyword">and</span> <span class="ruby-identifier">permission</span>[(<span class="ruby-identifier">the_permission</span>)]
|
|
<span class="ruby-identifier">result</span>[(<span class="ruby-identifier">the_permission</span>)] = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"Invalid table specified"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">table</span>), <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">dbid</span>), <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-effective_uuid_permission" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">effective_uuid_permission</span><span
|
|
class="method-args">(uuid=nil, credential=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="effective_uuid_permission-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1971</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">effective_uuid_permission</span>(<span class="ruby-identifier">uuid</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-identifier">address</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">address</span> = {<span class="ruby-value">:database</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">self</span>, <span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_hash</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:dbid</span>])}
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_array</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">address</span> = {<span class="ruby-value">:database</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">self</span>, <span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_array</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:dbid</span>])}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">address</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">effective_element_permission</span>(<span class="ruby-identifier">address</span>[<span class="ruby-value">:table</span>], <span class="ruby-identifier">address</span>[<span class="ruby-value">:dbid</span>], <span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-comment"># ### Review : Experimental Code - attempt to seemlessly integrate dbs of different roles into in-memory structures.</span>
|
|
<span class="ruby-identifier">already_checked</span> = [(<span class="ruby-keyword">self</span>)]
|
|
<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">DB</span>[<span class="ruby-value">:roles</span>].<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_db_role</span>, <span class="ruby-identifier">the_database</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">already_checked</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">the_database</span>)
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-identifier">the_database</span>.<span class="ruby-identifier">connector</span>[<span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">address</span> = {<span class="ruby-value">:database</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_database</span>, <span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_hash</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:dbid</span>])}
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">the_database</span>.<span class="ruby-identifier">effective_element_permission</span>(<span class="ruby-identifier">address</span>[<span class="ruby-value">:table</span>], <span class="ruby-identifier">address</span>[<span class="ruby-value">:dbid</span>], <span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">break</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-identifier">the_database</span>.<span class="ruby-identifier">connector</span>[<span class="ruby-value">:element_array</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">address</span> = {<span class="ruby-value">:database</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_database</span>, <span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_array</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:dbid</span>])}
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">the_database</span>.<span class="ruby-identifier">effective_element_permission</span>(<span class="ruby-identifier">address</span>[<span class="ruby-value">:table</span>], <span class="ruby-identifier">address</span>[<span class="ruby-value">:dbid</span>], <span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">break</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">already_checked</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">the_database</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available (defunct)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">uuid</span>), <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-effective_vfs_permission" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">effective_vfs_permission</span><span
|
|
class="method-args">(file_id=nil, credential=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="effective_vfs_permission-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1710</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">effective_vfs_permission</span>(<span class="ruby-identifier">file_id</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:move</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database inactive"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">file_id</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"file_id must be specified with a String"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must specify a valid credential UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># ### VFS Permissions</span>
|
|
<span class="ruby-identifier">raw_permissions</span> = []
|
|
<span class="ruby-identifier">credentials</span> = [<span class="ruby-string">"00000000-0000-4000-0000-000000000000"</span>]
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">user_exist?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">credentials</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">credential</span>
|
|
<span class="ruby-identifier">role_list</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">user_roles</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">role_list</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">credentials</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:credential</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">role_exist?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">credentials</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">credential</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"Invalid credential. It is neither a user nor a role UUID"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">credentials</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">manifest</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:file_permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:file_id</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">file_id</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">entry</span>.<span class="ruby-identifier">to_s</span>)})
|
|
<span class="ruby-identifier">manifest</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">record</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">new_permission</span> = {<span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:move</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>}
|
|
[<span class="ruby-value">:execute</span>, <span class="ruby-value">:rename</span>, <span class="ruby-value">:move</span>, <span class="ruby-value">:destroy</span>, <span class="ruby-value">:create</span>, <span class="ruby-value">:write</span>, <span class="ruby-value">:read</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_permission</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>[(<span class="ruby-identifier">the_permission</span>)] <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
|
|
<span class="ruby-identifier">new_permission</span>[(<span class="ruby-identifier">the_permission</span>)] = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">raw_permissions</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">new_permission</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">raw_permissions</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
[<span class="ruby-value">:execute</span>, <span class="ruby-value">:rename</span>, <span class="ruby-value">:move</span>, <span class="ruby-value">:destroy</span>, <span class="ruby-value">:create</span>, <span class="ruby-value">:write</span>, <span class="ruby-value">:read</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_permission</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">entry</span>[(<span class="ruby-identifier">the_permission</span>)]
|
|
<span class="ruby-identifier">result</span>[(<span class="ruby-identifier">the_permission</span>)] = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:file_id</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">file_id</span>), <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-element_byte_size" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">element_byte_size</span><span
|
|
class="method-args">(table=:unspecified, dbid=0)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="element_byte_size-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2490</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">element_byte_size</span>(<span class="ruby-identifier">table</span>=<span class="ruby-value">:unspecified</span>, <span class="ruby-identifier">dbid</span>=<span class="ruby-value">0</span>)
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-value">0</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-identifier">migration</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_migration</span>()
|
|
<span class="ruby-identifier">elements</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_manifest</span>(<span class="ruby-identifier">table</span>, <span class="ruby-identifier">dbid</span>, <span class="ruby-keyword">true</span>)
|
|
<span class="ruby-identifier">elements</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">table_definition</span> = <span class="ruby-identifier">migration</span>[(<span class="ruby-identifier">entry</span>[<span class="ruby-value">:table</span>])]
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">table_definition</span>
|
|
<span class="ruby-identifier">table_definition</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_field</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">table_definition</span>[(<span class="ruby-identifier">the_field</span>)][<span class="ruby-value">:bytes</span>].<span class="ruby-identifier">to_i</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">table</span>), <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">dbid</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-element_create" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">element_create</span><span
|
|
class="method-args">(the_table=:unspecified, the_record=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="element_create-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2090</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">element_create</span>(<span class="ruby-identifier">the_table</span>=<span class="ruby-value">:unspecified</span>, <span class="ruby-identifier">the_record</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-comment"># Review : rewrite - in use</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_table</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You MUST provide the table specifier as a Symbol."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_record</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You MUST provide a record in the form of a Hash."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> [<span class="ruby-value">:element_boolean</span>, <span class="ruby-value">:element_integer</span>, <span class="ruby-value">:element_float</span>, <span class="ruby-value">:element_bigdecimal</span>, <span class="ruby-value">:element_datetime</span>, <span class="ruby-value">:element_text</span>, <span class="ruby-value">:text_page</span>, <span class="ruby-value">:element_binary</span>, <span class="ruby-value">:binary_page</span>, <span class="ruby-value">:element_array</span>, <span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">the_table</span>)
|
|
<span class="ruby-comment"># Review : UTF8 fix</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">the_table</span>)].<span class="ruby-identifier">insert</span>(<span class="ruby-identifier">the_record</span>)
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_table</span> <span class="ruby-operator">==</span> <span class="ruby-value">:text_page</span>
|
|
<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:content</span>] = <span class="ruby-identifier">the_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">encode64</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">the_table</span>)].<span class="ruby-identifier">insert</span>(<span class="ruby-identifier">the_record</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"The table specified is unknown - Check your code."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_table</span>), <span class="ruby-value">:record</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-element_destroy" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">element_destroy</span><span
|
|
class="method-args">(credential=nil,table=:unspecified,dbid=0, options={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="element_destroy-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2401</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">element_destroy</span>(<span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>,<span class="ruby-identifier">table</span>=<span class="ruby-value">:unspecified</span>,<span class="ruby-identifier">dbid</span>=<span class="ruby-value">0</span>, <span class="ruby-identifier">options</span>={})
|
|
<span class="ruby-comment"># Review : rewrite for new arch.</span>
|
|
<span class="ruby-comment"># Review : rewrite - in use</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-comment"># if credential has :destroy permission on this element?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">if</span> [<span class="ruby-value">:persisted_array</span>, <span class="ruby-value">:persisted_hash</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">table</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>)
|
|
<span class="ruby-identifier">go_ahead</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">effective_element_permission</span>(<span class="ruby-identifier">table</span>, <span class="ruby-identifier">dbid</span>, <span class="ruby-identifier">credential</span>)[<span class="ruby-value">:destroy</span>]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">go_ahead</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># xxx Quick fix : BETA: clean all this up!</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">go_ahead</span>
|
|
<span class="ruby-comment"># Review : DB overhaul / rewrite - allow delete if object has write lock in place? I think not. (return false)</span>
|
|
<span class="ruby-comment"># Note: BETA - bring back read-locks? it was 9x slower with them ... not sure.</span>
|
|
<span class="ruby-identifier">elements</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_manifest</span>(<span class="ruby-identifier">table</span>, <span class="ruby-identifier">dbid</span>, <span class="ruby-keyword">false</span>)
|
|
<span class="ruby-identifier">elements</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_in_trash?</span>(<span class="ruby-identifier">entry</span>[<span class="ruby-value">:table</span>], <span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>])
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:trash</span>].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:table</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>]})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-comment">#if @connector[:element_locks].filter({:type => "read", :element_table => entry[:table].to_s, :elementid => entry[:dbid]}).count > 0</span>
|
|
<span class="ruby-comment"># put in trash</span>
|
|
<span class="ruby-comment">#unless self.element_in_trash?(entry[:table], entry[:dbid])</span>
|
|
<span class="ruby-comment">#@connector[:trash].insert({:element_table => entry[:table].to_s, :elementid => entry[:dbid]})</span>
|
|
<span class="ruby-comment">#end</span>
|
|
<span class="ruby-comment">#else</span>
|
|
<span class="ruby-comment"># delete now</span>
|
|
<span class="ruby-comment">#manifest = self.element_manifest(entry[:table], entry[:dbid], true)</span>
|
|
<span class="ruby-comment">#manifest.each do |item|</span>
|
|
<span class="ruby-comment">#@connector[:permissions].filter({:element_table => (item[:table].to_s), :elementid => (item[:dbid])}).delete</span>
|
|
<span class="ruby-comment">#@connector[(item[:table])].filter({:dbid => item[:dbid]}).delete</span>
|
|
<span class="ruby-comment">#end</span>
|
|
<span class="ruby-comment">#end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"You do not have permission to destory this element"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply a valid credential UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>), <span class="ruby-value">:table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">table</span>), <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">dbid</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-element_exists-3F" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">element_exists?</span><span
|
|
class="method-args">(the_table=:unspecified, the_dbid=0)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
<p>Data Handling methods</p>
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="element_exists-3F-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2024</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">element_exists?</span>(<span class="ruby-identifier">the_table</span>=<span class="ruby-value">:unspecified</span>, <span class="ruby-identifier">the_dbid</span>=<span class="ruby-value">0</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_table</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>)
|
|
<span class="ruby-identifier">the_table</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_table_by_index</span>(<span class="ruby-identifier">the_table</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> [<span class="ruby-value">:element_boolean</span>, <span class="ruby-value">:element_integer</span>, <span class="ruby-value">:element_float</span>, <span class="ruby-value">:element_bigdecimal</span>, <span class="ruby-value">:element_datetime</span>, <span class="ruby-value">:element_text</span>, <span class="ruby-value">:element_binary</span>, <span class="ruby-value">:element_array</span>, <span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">the_table</span>)
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">the_table</span>)].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_dbid</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_table</span>), <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_dbid</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-element_in_trash-3F" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">element_in_trash?</span><span
|
|
class="method-args">(table=:unspecified, dbid=0)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="element_in_trash-3F-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 3021</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">element_in_trash?</span>(<span class="ruby-identifier">table</span>=<span class="ruby-value">:unspecified</span>, <span class="ruby-identifier">dbid</span>=<span class="ruby-value">0</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:trash</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">table</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">dbid</span>}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">table</span>), <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">dbid</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-element_in_use-3F" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">element_in_use?</span><span
|
|
class="method-args">(db_table=:unspecified, dbid = 0)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="element_in_use-3F-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2211</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">element_in_use?</span>(<span class="ruby-identifier">db_table</span>=<span class="ruby-value">:unspecified</span>, <span class="ruby-identifier">dbid</span> = <span class="ruby-value">0</span>)
|
|
<span class="ruby-comment"># Review : rewrite - in use for now.</span>
|
|
<span class="ruby-comment"># Review : rewrite - todo (alter to reflect the new architecture : perhaps limit to structures only)</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">db_table</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"Table needs to be specified as a Symbol, or a table code Integer"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">dbid</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"Record ID needs to be specified with an Integer"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">db_table</span> <span class="ruby-operator">==</span> <span class="ruby-value">:element_hash</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">db_table</span> <span class="ruby-operator">==</span> <span class="ruby-value">:element_array</span>
|
|
<span class="ruby-comment"># Review : make more efficient in later revs of this.</span>
|
|
<span class="ruby-identifier">the_record</span> = <span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">db_table</span>)].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">dbid</span>)}).<span class="ruby-identifier">select</span>(<span class="ruby-value">:uuid</span>).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_record</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:hash_properties</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:element_hash_uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_record</span>[<span class="ruby-value">:uuid</span>]}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:array_elements</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:element_array_uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_record</span>[<span class="ruby-value">:uuid</span>]}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:table_code</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">db_table</span>), <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">dbid</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-element_manifest" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">element_manifest</span><span
|
|
class="method-args">(the_table=:unspecified, the_dbid=0, everything=false)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="element_manifest-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2263</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">element_manifest</span>(<span class="ruby-identifier">the_table</span>=<span class="ruby-value">:unspecified</span>, <span class="ruby-identifier">the_dbid</span>=<span class="ruby-value">0</span>, <span class="ruby-identifier">everything</span>=<span class="ruby-keyword">false</span>)
|
|
<span class="ruby-comment"># Review : rewrite - in use</span>
|
|
<span class="ruby-comment"># returns an Array of tables and dbid pairs and sub-item pairs if they exist</span>
|
|
<span class="ruby-identifier">result</span> = []
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_dbid</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"dbid specified must be greater than zero"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">the_table</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_text</span>
|
|
<span class="ruby-identifier">the_record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_text</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:uuid</span>, <span class="ruby-value">:dbid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_dbid</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_record</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_text</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_record</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">everything</span>
|
|
<span class="ruby-identifier">the_pages</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>, <span class="ruby-value">:ordinal</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:uuid</span>])}).<span class="ruby-identifier">order</span>(<span class="ruby-value">:ordinal</span>)
|
|
<span class="ruby-identifier">the_pages</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:text_page</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_binary</span>
|
|
<span class="ruby-identifier">the_record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_binary</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:uuid</span>, <span class="ruby-value">:dbid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_dbid</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_record</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_binary</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_record</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">everything</span>
|
|
<span class="ruby-identifier">the_pages</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:binary_page</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>, <span class="ruby-value">:ordinal</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:uuid</span>])}).<span class="ruby-identifier">order</span>(<span class="ruby-value">:ordinal</span>)
|
|
<span class="ruby-identifier">the_pages</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:binary_page</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_array</span>, <span class="ruby-value">:element_hash</span>
|
|
<span class="ruby-identifier">record_db</span> = [{<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_table</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_dbid</span>}]
|
|
<span class="ruby-keyword">while</span> <span class="ruby-identifier">record_db</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-keyword">do</span>
|
|
<span class="ruby-identifier">item</span> = <span class="ruby-identifier">record_db</span>.<span class="ruby-identifier">shift</span>
|
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">item</span>[<span class="ruby-value">:table</span>]
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_text</span>
|
|
<span class="ruby-identifier">the_record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_text</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:uuid</span>, <span class="ruby-value">:dbid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">item</span>[<span class="ruby-value">:dbid</span>]}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_record</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_text</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_record</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">everything</span>
|
|
<span class="ruby-identifier">the_pages</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>, <span class="ruby-value">:ordinal</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:uuid</span>])}).<span class="ruby-identifier">order</span>(<span class="ruby-value">:ordinal</span>)
|
|
<span class="ruby-identifier">the_pages</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:text_page</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_binary</span>
|
|
<span class="ruby-identifier">the_record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_binary</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:uuid</span>, <span class="ruby-value">:dbid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">item</span>[<span class="ruby-value">:dbid</span>]}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_record</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_binary</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_record</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">everything</span>
|
|
<span class="ruby-identifier">the_pages</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:binary_page</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>, <span class="ruby-value">:ordinal</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:uuid</span>])}).<span class="ruby-identifier">order</span>(<span class="ruby-value">:ordinal</span>)
|
|
<span class="ruby-identifier">the_pages</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:binary_page</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_array</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">item</span>[<span class="ruby-value">:table</span>], <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">item</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-identifier">array_record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_array</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:uuid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">item</span>[<span class="ruby-value">:dbid</span>]}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">array_record</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:array_elements</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">array_record</span>[<span class="ruby-value">:uuid</span>])}).<span class="ruby-identifier">order</span>(<span class="ruby-value">:ordinal</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_text_uuid</span>].<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">the_temp_record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_text</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_text_uuid</span>]}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_temp_record</span>
|
|
<span class="ruby-identifier">record_db</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_text</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_temp_record</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_binary_uuid</span>].<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">the_temp_record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_binary</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_binary_uuid</span>]}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_temp_record</span>
|
|
<span class="ruby-identifier">record_db</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_binary</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_temp_record</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_array_uuid</span>].<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">the_temp_record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_array</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_array_uuid</span>]}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_temp_record</span>
|
|
<span class="ruby-identifier">record_db</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_array</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_temp_record</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_hash_uuid</span>].<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">the_temp_record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_hash_uuid</span>]}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_temp_record</span>
|
|
<span class="ruby-identifier">record_db</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_hash</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_temp_record</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:array_elements</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_hash</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">item</span>[<span class="ruby-value">:table</span>], <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">item</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-identifier">hash_record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:uuid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">item</span>[<span class="ruby-value">:dbid</span>]}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">hash_record</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:hash_properties</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">hash_record</span>[<span class="ruby-value">:uuid</span>])}).<span class="ruby-identifier">order</span>(<span class="ruby-value">:ordinal</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_text_uuid</span>].<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">the_temp_record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_text</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_text_uuid</span>]}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_temp_record</span>
|
|
<span class="ruby-identifier">record_db</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_text</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_temp_record</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_binary_uuid</span>].<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">the_temp_record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_binary</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_binary_uuid</span>]}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_temp_record</span>
|
|
<span class="ruby-identifier">record_db</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_binary</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_temp_record</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_array_uuid</span>].<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">the_temp_record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_array</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_array_uuid</span>]}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_temp_record</span>
|
|
<span class="ruby-identifier">record_db</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_array</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_temp_record</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_hash_uuid</span>].<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">the_temp_record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_hash_uuid</span>]}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_temp_record</span>
|
|
<span class="ruby-identifier">record_db</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_hash</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_temp_record</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:hash_properties</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">the_record</span> = <span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">item</span>[<span class="ruby-value">:table</span>])].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">item</span>[<span class="ruby-value">:dbid</span>])}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_record</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">item</span>[<span class="ruby-value">:table</span>], <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">item</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_table</span>), <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_dbid</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-element_parent_address" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">element_parent_address</span><span
|
|
class="method-args">(the_table=:unspecified, the_dbid=0)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="element_parent_address-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2237</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">element_parent_address</span>(<span class="ruby-identifier">the_table</span>=<span class="ruby-value">:unspecified</span>, <span class="ruby-identifier">the_dbid</span>=<span class="ruby-value">0</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_in_use?</span>(<span class="ruby-identifier">the_table</span>,<span class="ruby-identifier">the_dbid</span>)
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-identifier">link</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:hash_links</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:parent_uuid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:element</span> <span class="ruby-operator">=></span> (<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_table_index</span>(<span class="ruby-identifier">the_table</span>)), <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_dbid</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">link</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">link</span>[<span class="ruby-value">:parent_uuid</span>]}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_hash</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:dbid</span>])}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">link</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:array_links</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:parent_uuid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:element</span> <span class="ruby-operator">=></span> (<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_table_index</span>(<span class="ruby-identifier">the_table</span>)), <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_dbid</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">link</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_array</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">link</span>[<span class="ruby-value">:parent_uuid</span>]}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_array</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:dbid</span>])}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_table</span>), <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_dbid</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-element_permissions" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">element_permissions</span><span
|
|
class="method-args">(table=:unspecified, dbid=0, options={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
<p>Raw Permission Handling methods</p>
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="element_permissions-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1345</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">element_permissions</span>(<span class="ruby-identifier">table</span>=<span class="ruby-value">:unspecified</span>, <span class="ruby-identifier">dbid</span>=<span class="ruby-value">0</span>, <span class="ruby-identifier">options</span>={})
|
|
<span class="ruby-identifier">result</span> = []
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database inactive"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">dbid</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"dbid must be specified with a Integer"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"options must be specified with a Hash"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">credential</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:credential</span>]
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">credential</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"This option requires a valid credential UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">table</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>)
|
|
<span class="ruby-identifier">table</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_table_by_index</span>(<span class="ruby-identifier">table</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># Review : change in permission policy</span>
|
|
<span class="ruby-comment"># if [:element_boolean, :element_integer, :element_float, :element_bigdecimal, :element_datetime, :element_text, :element_binary, :element_array, :element_hash].include?(table)</span>
|
|
<span class="ruby-keyword">if</span> [<span class="ruby-value">:element_array</span>, <span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">table</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">credential</span>
|
|
<span class="ruby-identifier">list</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">table</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">dbid</span>), <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>)})
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">list</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">table</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">dbid</span>)})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">list</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">record</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-comment"># [:execute, :rename, :move, :destroy, :create, :write, :read]</span>
|
|
<span class="ruby-identifier">entry</span> = {<span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:credential</span>].<span class="ruby-identifier">to_sym</span>), <span class="ruby-value">:table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:element_table</span>].<span class="ruby-identifier">to_sym</span>), <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:elementid</span>]), <span class="ruby-value">:permissions</span> <span class="ruby-operator">=></span> {}}
|
|
[<span class="ruby-value">:execute</span>, <span class="ruby-value">:rename</span>, <span class="ruby-value">:move</span>, <span class="ruby-value">:destroy</span>, <span class="ruby-value">:create</span>, <span class="ruby-value">:write</span>, <span class="ruby-value">:read</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_permission</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>[(<span class="ruby-identifier">the_permission</span>)] <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
|
|
<span class="ruby-identifier">entry</span>[<span class="ruby-value">:permissions</span>][(<span class="ruby-identifier">the_permission</span>)] = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">entry</span>[<span class="ruby-value">:permissions</span>][(<span class="ruby-identifier">the_permission</span>)] = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"Invalid table specified"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">table</span>), <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">dbid</span>), <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">options</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-element_permissions_by_uuid" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">element_permissions_by_uuid</span><span
|
|
class="method-args">(the_uuid=nil,options={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="element_permissions_by_uuid-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1458</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">element_permissions_by_uuid</span>(<span class="ruby-identifier">the_uuid</span>=<span class="ruby-keyword">nil</span>,<span class="ruby-identifier">options</span>={})
|
|
<span class="ruby-identifier">result</span> = []
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-identifier">found</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>, <span class="ruby-value">:uuid</span>).<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">found</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_permissions_manifest</span>(<span class="ruby-value">:element_hash</span>,(<span class="ruby-identifier">found</span>[<span class="ruby-value">:dbid</span>]),<span class="ruby-identifier">options</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">found</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_array</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>, <span class="ruby-value">:uuid</span>).<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">found</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_permissions_manifest</span>(<span class="ruby-value">:element_array</span>,(<span class="ruby-identifier">found</span>[<span class="ruby-value">:dbid</span>]),<span class="ruby-identifier">options</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_uuid</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-element_permissions_manifest" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">element_permissions_manifest</span><span
|
|
class="method-args">(table=:unspecified, dbid=0, options={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="element_permissions_manifest-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1431</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">element_permissions_manifest</span>(<span class="ruby-identifier">table</span>=<span class="ruby-value">:unspecified</span>, <span class="ruby-identifier">dbid</span>=<span class="ruby-value">0</span>, <span class="ruby-identifier">options</span>={})
|
|
<span class="ruby-identifier">result</span> = []
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_permissions</span>(<span class="ruby-identifier">table</span>,<span class="ruby-identifier">dbid</span>,<span class="ruby-identifier">options</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">the_record</span> = {<span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">nil</span>, <span class="ruby-value">:permissions</span> <span class="ruby-operator">=></span> {}, <span class="ruby-value">:details</span> <span class="ruby-operator">=></span> {}}
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:credential</span>] = <span class="ruby-identifier">entry</span>[<span class="ruby-value">:credential</span>]
|
|
<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:permissions</span>] = <span class="ruby-identifier">entry</span>[<span class="ruby-value">:permissions</span>]
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">role_exist?</span>(<span class="ruby-identifier">entry</span>[<span class="ruby-value">:credential</span>])
|
|
<span class="ruby-identifier">role</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">role_fetch</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:credential</span>].<span class="ruby-identifier">to_s</span>})
|
|
<span class="ruby-identifier">group</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">group_fetch</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">role</span>[<span class="ruby-value">:group_uuid</span>].<span class="ruby-identifier">to_s</span>})
|
|
<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:details</span>][<span class="ruby-value">:role_title</span>] = <span class="ruby-identifier">role</span>[<span class="ruby-value">:title</span>]
|
|
<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:details</span>][<span class="ruby-value">:group</span>] = <span class="ruby-identifier">group</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:details</span>][<span class="ruby-value">:group_title</span>] = <span class="ruby-identifier">group</span>[<span class="ruby-value">:title</span>]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">user_exist?</span>(<span class="ruby-identifier">entry</span>[<span class="ruby-value">:credential</span>])
|
|
<span class="ruby-identifier">user</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">user_fetch</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:credential</span>].<span class="ruby-identifier">to_s</span>})
|
|
<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:details</span>][<span class="ruby-value">:user_title</span>] = <span class="ruby-identifier">user</span>[<span class="ruby-value">:user_id</span>]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Invalid User Credential Detected: #{entry[:credential].to_s.to_sym.inspect}"</span>)
|
|
<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:details</span>][<span class="ruby-value">:user_title</span>] = <span class="ruby-node">"Invalid User Credential #{entry[:credential].to_s.to_sym.inspect} !"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">the_record</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-element_recover" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">element_recover</span><span
|
|
class="method-args">(table=:unspecified, dbid=0)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="element_recover-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 3037</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">element_recover</span>(<span class="ruby-identifier">table</span>=<span class="ruby-value">:unspecified</span>, <span class="ruby-identifier">dbid</span>=<span class="ruby-value">0</span>)
|
|
<span class="ruby-comment"># recover an element from the trash</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-keyword">unless</span> [<span class="ruby-value">:element_boolean</span>, <span class="ruby-value">:element_integer</span>, <span class="ruby-value">:element_float</span>, <span class="ruby-value">:element_bigdecimal</span>, <span class="ruby-value">:element_datetime</span>, <span class="ruby-value">:element_text</span>, <span class="ruby-value">:element_binary</span>, <span class="ruby-value">:element_array</span>, <span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">table</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"Invalid table specified"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">dbid</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"dbid must be greater than zero"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_in_trash?</span>(<span class="ruby-identifier">table</span>, <span class="ruby-identifier">dbid</span>)
|
|
<span class="ruby-identifier">scrub_list</span> = []
|
|
<span class="ruby-identifier">manifest</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_manifest</span>(<span class="ruby-identifier">table</span>, <span class="ruby-identifier">dbid</span>)
|
|
<span class="ruby-identifier">manifest</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:trash</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">entry</span>[<span class="ruby-value">:table</span>].<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>])}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:trash</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">entry</span>[<span class="ruby-value">:table</span>].<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>])}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">scrub_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">record</span>[<span class="ruby-value">:dbid</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">scrub_list</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:trash</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-comment"># it was never in the trash, so mission accomplished</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">table</span>), <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">dbid</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-element_retrieve" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">element_retrieve</span><span
|
|
class="method-args">(the_table=:unspecified, the_filter={}, options={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="element_retrieve-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2042</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">element_retrieve</span>(<span class="ruby-identifier">the_table</span>=<span class="ruby-value">:unspecified</span>, <span class="ruby-identifier">the_filter</span>={}, <span class="ruby-identifier">options</span>={})
|
|
<span class="ruby-identifier">result</span> = []
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> [<span class="ruby-value">:element_boolean</span>, <span class="ruby-value">:element_integer</span>, <span class="ruby-value">:element_float</span>, <span class="ruby-value">:element_bigdecimal</span>, <span class="ruby-value">:element_datetime</span>, <span class="ruby-value">:element_text</span>, <span class="ruby-value">:text_page</span>, <span class="ruby-value">:element_binary</span>,<span class="ruby-value">:binary_page</span>, <span class="ruby-value">:element_array</span>, <span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">the_table</span>)
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_filter</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:order</span>]
|
|
<span class="ruby-identifier">raw_result</span> = <span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">the_table</span>)].<span class="ruby-identifier">filter</span>(<span class="ruby-identifier">the_filter</span>).<span class="ruby-identifier">order</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:order</span>])
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raw_result</span> = <span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">the_table</span>)].<span class="ruby-identifier">filter</span>(<span class="ruby-identifier">the_filter</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># Review : UTF-8 Encoding Error Fix</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:single_record</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">raw_result</span>.<span class="ruby-identifier">first</span>
|
|
<span class="ruby-comment"># utf8 fix</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_table</span> <span class="ruby-operator">==</span> <span class="ruby-value">:text_page</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">result</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">result</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">base64?</span>
|
|
<span class="ruby-identifier">result</span>[<span class="ruby-value">:content</span>] = <span class="ruby-identifier">result</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">decode64</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-comment"># utf8 fix</span>
|
|
<span class="ruby-identifier">raw_result</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_record</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">base64?</span>
|
|
<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:content</span>] = <span class="ruby-identifier">the_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">decode64</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">the_record</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># result = raw_result</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArguementError</span>, <span class="ruby-string">"You MUST provide a record selection filter as a Hash. "</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"The table specified is unknown - Check your code."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_table</span>, <span class="ruby-value">:filter</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_filter</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">options</span>}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-element_update" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">element_update</span><span
|
|
class="method-args">(the_table=:unspecified, the_filter={}, the_record=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="element_update-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2119</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">element_update</span>(<span class="ruby-identifier">the_table</span>=<span class="ruby-value">:unspecified</span>, <span class="ruby-identifier">the_filter</span>={}, <span class="ruby-identifier">the_record</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_table</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You MUST provide the table specifier as a Symbol."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_filter</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You MUST provide a selection filter in the form of a Hash."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_record</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You MUST provide a record in the form of a Hash."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> [<span class="ruby-value">:element_boolean</span>, <span class="ruby-value">:element_integer</span>, <span class="ruby-value">:element_float</span>, <span class="ruby-value">:element_bigdecimal</span>, <span class="ruby-value">:element_datetime</span>, <span class="ruby-value">:element_text</span>, <span class="ruby-value">:text_page</span>, <span class="ruby-value">:element_binary</span>, <span class="ruby-value">:binary_page</span>, <span class="ruby-value">:element_array</span>, <span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">the_table</span>)
|
|
<span class="ruby-comment"># Review : shim to eliminate UTF-8 encoding errors</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">the_table</span>)].<span class="ruby-identifier">filter</span>(<span class="ruby-identifier">the_filter</span>).<span class="ruby-identifier">update</span>(<span class="ruby-identifier">the_record</span>)
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_table</span> <span class="ruby-operator">==</span> <span class="ruby-value">:text_page</span>
|
|
<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:content</span>] = <span class="ruby-identifier">the_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">encode64</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">the_table</span>)].<span class="ruby-identifier">filter</span>(<span class="ruby-identifier">the_filter</span>).<span class="ruby-identifier">update</span>(<span class="ruby-identifier">the_record</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"The table specified is unknown - Check your code."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_table</span>, <span class="ruby-value">:filter</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_filter</span>, <span class="ruby-value">:record</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_record</span>}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-empty_trash" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">empty_trash</span><span
|
|
class="method-args">()</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="empty_trash-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2986</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">empty_trash</span>()
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-identifier">scrub_list</span> = []
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:trash</span>].<span class="ruby-identifier">filter</span>({}).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">the_table</span> = <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_table</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-identifier">the_dbid</span> = <span class="ruby-identifier">entry</span>[<span class="ruby-value">:elementid</span>]
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_locks</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-string">"write"</span>, <span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_table</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_dbid</span>}).<span class="ruby-identifier">count</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
<span class="ruby-comment"># delete full manifest</span>
|
|
<span class="ruby-identifier">manifest</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_manifest</span>(<span class="ruby-identifier">the_table</span>, <span class="ruby-identifier">the_dbid</span>, <span class="ruby-keyword">true</span>)
|
|
<span class="ruby-identifier">manifest</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">item</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">item</span>[<span class="ruby-value">:table</span>].<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">item</span>[<span class="ruby-value">:dbid</span>])}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">item</span>[<span class="ruby-value">:table</span>])].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">item</span>[<span class="ruby-value">:dbid</span>]}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">scrub_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">scrub_list</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:trash</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:trash</span>].<span class="ruby-identifier">filter</span>({}).<span class="ruby-identifier">count</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-enforce_permission_policy" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">enforce_permission_policy</span><span
|
|
class="method-args">(event={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="enforce_permission_policy-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 3679</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">enforce_permission_policy</span>(<span class="ruby-identifier">event</span>={})
|
|
<span class="ruby-comment"># Event format: enforce_permission_policy({:action => :extend, :credential => nil, :source => nil, :destination => nil})</span>
|
|
<span class="ruby-comment"># Rule format: {:event => :create, :credential => :any, :action => {:extend_permissions => nil}}</span>
|
|
<span class="ruby-identifier">the_policy</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">permission_policy</span>()
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>()
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>()
|
|
<span class="ruby-identifier">actions</span> = []
|
|
<span class="ruby-identifier">the_policy</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">rule</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">event</span>[<span class="ruby-value">:action</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">rule</span>[<span class="ruby-value">:event</span>]
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">rule</span>[<span class="ruby-value">:credential</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">event</span>[<span class="ruby-value">:credential</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">rule</span>[<span class="ruby-value">:credential</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:any</span>
|
|
<span class="ruby-identifier">actions</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">rule</span>[<span class="ruby-value">:action</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">actions</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">action</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">action</span>.<span class="ruby-identifier">keys</span>[<span class="ruby-value">0</span>]
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:extend_permissions</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">action</span>[<span class="ruby-value">:use_permission</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">use_permission</span> = <span class="ruby-identifier">action</span>[<span class="ruby-value">:use_permission</span>]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">use_permission</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">credential</span> = <span class="ruby-identifier">event</span>[<span class="ruby-value">:credential</span>]
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You MUST provide a valid UUID as :credential."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">new_credential</span> = <span class="ruby-identifier">action</span>[<span class="ruby-value">:extend_permissions</span>]
|
|
<span class="ruby-identifier">source</span> = <span class="ruby-identifier">event</span>[<span class="ruby-value">:source</span>]
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">source</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedHash</span>, <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedArray</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You MUST provide a persisted object as :source."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">source</span>.<span class="ruby-identifier">db_address</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"You provided a Deactivated object as :source."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">destination</span> = <span class="ruby-identifier">event</span>[<span class="ruby-value">:destination</span>]
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">destination</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedHash</span>, <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedArray</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You MUST provide a persisted object as :source."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">destination</span>.<span class="ruby-identifier">db_address</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"You provided a Deactivated object as :destination."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">permissions</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_permissions</span>(<span class="ruby-identifier">source</span>.<span class="ruby-identifier">db_address</span>()[<span class="ruby-value">:table</span>],<span class="ruby-identifier">source</span>.<span class="ruby-identifier">db_address</span>()[<span class="ruby-value">:dbid</span>])
|
|
<span class="ruby-identifier">permission_db</span> = []
|
|
<span class="ruby-keyword">if</span> [<span class="ruby-value">:persisted_array</span>, <span class="ruby-value">:persisted_hash</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">destination</span>.<span class="ruby-identifier">db_address</span>()[<span class="ruby-value">:table</span>])
|
|
<span class="ruby-identifier">search_db</span> = [{<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">destination</span>.<span class="ruby-identifier">db_address</span>()[<span class="ruby-value">:table</span>], <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">destination</span>.<span class="ruby-identifier">db_address</span>()[<span class="ruby-value">:dbid</span>]}]
|
|
<span class="ruby-identifier">permission_db</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">destination</span>.<span class="ruby-identifier">db_address</span>()[<span class="ruby-value">:table</span>], <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">destination</span>.<span class="ruby-identifier">db_address</span>()[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">while</span> <span class="ruby-identifier">search_db</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-keyword">do</span>
|
|
<span class="ruby-identifier">entry</span> = <span class="ruby-identifier">search_db</span>.<span class="ruby-identifier">shift</span>
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_manifest</span>(<span class="ruby-identifier">entry</span>[<span class="ruby-value">:table</span>],<span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>],<span class="ruby-keyword">false</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">item</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> [<span class="ruby-value">:persisted_array</span>, <span class="ruby-value">:persisted_hash</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">item</span>[<span class="ruby-value">:table</span>])
|
|
<span class="ruby-identifier">search_db</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">item</span>
|
|
<span class="ruby-identifier">permission_db</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">item</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">permission_db</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_reference</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">permissions</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">record</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">assign_element_permission</span>(<span class="ruby-identifier">the_reference</span>[<span class="ruby-value">:table</span>],<span class="ruby-identifier">the_reference</span>[<span class="ruby-value">:dbid</span>], <span class="ruby-identifier">credential</span>, <span class="ruby-identifier">record</span>[<span class="ruby-value">:permissions</span>])
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">use_permission</span>
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">assign_element_permission</span>(<span class="ruby-identifier">the_reference</span>[<span class="ruby-value">:table</span>],<span class="ruby-identifier">the_reference</span>[<span class="ruby-value">:dbid</span>], <span class="ruby-identifier">new_credential</span>, <span class="ruby-identifier">use_permission</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">assign_element_permission</span>(<span class="ruby-identifier">the_reference</span>[<span class="ruby-value">:table</span>],<span class="ruby-identifier">the_reference</span>[<span class="ruby-value">:dbid</span>], <span class="ruby-identifier">new_credential</span>, <span class="ruby-identifier">record</span>[<span class="ruby-value">:permissions</span>])
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># destination.search do |the_value, the_selector, the_container|</span>
|
|
<span class="ruby-comment"># if [:persisted_array, :persisted_hash].include?(the_value.db_address()[:table])</span>
|
|
<span class="ruby-comment"># permission_db << {:table => the_value.db_address()[:table], :dbid => the_value.db_address()[:dbid]}</span>
|
|
<span class="ruby-comment"># end</span>
|
|
<span class="ruby-comment"># end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># permission_db << {:table => destination.db_address()[:table], :dbid => destination.db_address()[:dbid]}</span>
|
|
<span class="ruby-comment"># if destination.is_any?(::GxG::Database::PersistedHash, ::GxG::Database::PersistedArray)</span>
|
|
<span class="ruby-comment"># destination.search do |the_value, the_selector, the_container|</span>
|
|
<span class="ruby-comment"># permission_db << {:table => the_value.db_address()[:table], :dbid => the_value.db_address()[:dbid]}</span>
|
|
<span class="ruby-comment"># end</span>
|
|
<span class="ruby-comment"># end</span>
|
|
<span class="ruby-comment"># permission_db.each do |item|</span>
|
|
<span class="ruby-comment"># self.element_manifest(item[:table],item[:dbid],false).each do |entry|</span>
|
|
<span class="ruby-comment"># permissions.each do |record|</span>
|
|
<span class="ruby-comment"># self.assign_element_permission(entry[:table],entry[:dbid], credential, record[:permissions])</span>
|
|
<span class="ruby-comment"># if use_permission</span>
|
|
<span class="ruby-comment"># self.assign_element_permission(entry[:table],entry[:dbid], new_credential, use_permission)</span>
|
|
<span class="ruby-comment"># else</span>
|
|
<span class="ruby-comment"># self.assign_element_permission(entry[:table],entry[:dbid], new_credential, record[:permissions])</span>
|
|
<span class="ruby-comment"># end</span>
|
|
<span class="ruby-comment"># end</span>
|
|
<span class="ruby-comment"># end</span>
|
|
<span class="ruby-comment"># end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Attempted to access a defunct Database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:event</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">event</span>}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-extend_element_permissions" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">extend_element_permissions</span><span
|
|
class="method-args">(source_table=:unspecified, source_dbid=0, dest_table=:unspecified, dest_dbid=0)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="extend_element_permissions-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1565</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">extend_element_permissions</span>(<span class="ruby-identifier">source_table</span>=<span class="ruby-value">:unspecified</span>, <span class="ruby-identifier">source_dbid</span>=<span class="ruby-value">0</span>, <span class="ruby-identifier">dest_table</span>=<span class="ruby-value">:unspecified</span>, <span class="ruby-identifier">dest_dbid</span>=<span class="ruby-value">0</span>)
|
|
<span class="ruby-identifier">permissions</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_permissions</span>(<span class="ruby-identifier">source_table</span>, <span class="ruby-identifier">source_dbid</span>)
|
|
<span class="ruby-identifier">permissions</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> [<span class="ruby-value">:persisted_array</span>, <span class="ruby-value">:persisted_hash</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">dest_table</span>)
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">assign_element_permission</span>(<span class="ruby-identifier">dest_table</span>, <span class="ruby-identifier">dest_dbid</span>, <span class="ruby-identifier">entry</span>[<span class="ruby-value">:credential</span>], <span class="ruby-identifier">entry</span>[<span class="ruby-value">:permissions</span>])
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-format_create" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">format_create</span><span
|
|
class="method-args">(format_record=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="format_create-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 3244</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">format_create</span>(<span class="ruby-identifier">format_record</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>()
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Unable to write to database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">format_record</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">format_record</span>[<span class="ruby-value">:uuid</span>])
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Invalid UUID passed for the format"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:type</span>].<span class="ruby-identifier">is_any?</span>([<span class="ruby-operator">::</span><span class="ruby-constant">String</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>])
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"You must pass the format_record[:type] as a String or Symbol"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:ufs</span>].<span class="ruby-identifier">is_any?</span>([<span class="ruby-operator">::</span><span class="ruby-constant">String</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>])
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"You must pass the format_record[:ufs] as a String or Symbol"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:title</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"You must pass the format_record[:title] as a String"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:version</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Float</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"You must pass the format_record[:version] as a Float"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:mime_types</span>].<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"You must pass the format_record[:mime_types] as a String"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"You must pass the format_record[:content] as a Hash"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">persistable?</span>(<span class="ruby-identifier">format_record</span>[<span class="ruby-value">:content</span>])
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"You must pass the format_record[:content] as a Hash of persistable elements"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> (<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:settings</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">count</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-keyword">and</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:formats</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">count</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-keyword">and</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_text</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">count</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>)
|
|
<span class="ruby-identifier">new_record</span> = {<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">format_record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>)}
|
|
<span class="ruby-identifier">new_record</span>[<span class="ruby-value">:type</span>] = <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:type</span>].<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-identifier">new_record</span>[<span class="ruby-value">:ufs</span>] = <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:ufs</span>].<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-identifier">new_record</span>[<span class="ruby-value">:title</span>] = <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:title</span>].<span class="ruby-identifier">to_s</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">256</span>]
|
|
<span class="ruby-identifier">new_record</span>[<span class="ruby-value">:version</span>] = <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:version</span>]
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:mime_types</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-identifier">the_mimes</span> = <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:mime_types</span>].<span class="ruby-identifier">join</span>(<span class="ruby-string">","</span>).<span class="ruby-identifier">to_s</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">4096</span>]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">the_mimes</span> = <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:mime_types</span>].<span class="ruby-identifier">to_s</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">4096</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">new_record</span>[<span class="ruby-value">:mime_types</span>] = <span class="ruby-identifier">the_mimes</span>
|
|
<span class="ruby-identifier">content</span> = <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">gxg_export</span>.<span class="ruby-identifier">to_json</span>.<span class="ruby-identifier">encode64</span>
|
|
<span class="ruby-identifier">new_dbid</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:formats</span>].<span class="ruby-identifier">insert</span>(<span class="ruby-identifier">new_record</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">content</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">apportioned_ranges</span>(<span class="ruby-identifier">content</span>.<span class="ruby-identifier">size</span>, <span class="ruby-value">4096</span>).<span class="ruby-identifier">each_with_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">portion</span>, <span class="ruby-identifier">ordinal</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">new_record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:ordinal</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">ordinal</span>), <span class="ruby-value">:length</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">content</span>[(<span class="ruby-identifier">portion</span>)].<span class="ruby-identifier">size</span>), <span class="ruby-value">:content</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">content</span>[(<span class="ruby-identifier">portion</span>)])})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">new_dbid</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"That format UUID is already in use, please generate another"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply a valid format record as a Hash"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Attempted to access a defunct Database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:format_record</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">format_record</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-format_destroy" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">format_destroy</span><span
|
|
class="method-args">(search_options={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="format_destroy-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 3452</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">format_destroy</span>(<span class="ruby-identifier">search_options</span>={})
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>()
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Unable to write to database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">format_stub</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">format_list</span>(<span class="ruby-identifier">search_options</span>).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">format_stub</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:formats</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">format_stub</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">format_stub</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">format_stub</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Attempted to access a defunct Database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:search_options</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">search_options</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-format_list" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">format_list</span><span
|
|
class="method-args">(search_options={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="format_list-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 3112</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">format_list</span>(<span class="ruby-identifier">search_options</span>={})
|
|
<span class="ruby-identifier">result</span> = []
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">search_options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must specify search options as a Hash"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">the_filter</span> = {}
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">search_options</span>[<span class="ruby-value">:uuid</span>]
|
|
<span class="ruby-identifier">the_filter</span>[<span class="ruby-value">:uuid</span>] = <span class="ruby-identifier">search_options</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">search_options</span>[<span class="ruby-value">:type</span>]
|
|
<span class="ruby-identifier">the_filter</span>[<span class="ruby-value">:type</span>] = <span class="ruby-identifier">search_options</span>[<span class="ruby-value">:type</span>].<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">search_options</span>[<span class="ruby-value">:ufs</span>]
|
|
<span class="ruby-identifier">the_filter</span>[<span class="ruby-value">:ufs</span>] = <span class="ruby-identifier">search_options</span>[<span class="ruby-value">:ufs</span>].<span class="ruby-identifier">to_s</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">4096</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">search_options</span>[<span class="ruby-value">:title</span>]
|
|
<span class="ruby-identifier">the_filter</span>[<span class="ruby-value">:title</span>] = <span class="ruby-identifier">search_options</span>[<span class="ruby-value">:title</span>].<span class="ruby-identifier">to_s</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">256</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">search_options</span>[<span class="ruby-value">:version</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Float</span>)
|
|
<span class="ruby-identifier">the_filter</span>[<span class="ruby-value">:version</span>] = <span class="ruby-identifier">search_options</span>[<span class="ruby-value">:version</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">mime_type</span> = <span class="ruby-identifier">search_options</span>[<span class="ruby-value">:mime_type</span>].<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">mime_type</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:formats</span>].<span class="ruby-identifier">filter</span>(<span class="ruby-identifier">the_filter</span>).<span class="ruby-identifier">where</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Sequel</span>.<span class="ruby-identifier">like</span>(<span class="ruby-value">:mime_types</span>, (<span class="ruby-string">"%"</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">mime_type</span> <span class="ruby-operator">+</span> <span class="ruby-string">"%"</span>))).<span class="ruby-identifier">order</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Sequel</span>[<span class="ruby-value">:version</span>].<span class="ruby-identifier">desc</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_sym</span>, <span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:type</span>].<span class="ruby-identifier">to_sym</span>, <span class="ruby-value">:ufs</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:ufs</span>].<span class="ruby-identifier">to_sym</span>, <span class="ruby-value">:title</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:title</span>], <span class="ruby-value">:version</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:version</span>]}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:formats</span>].<span class="ruby-identifier">filter</span>(<span class="ruby-identifier">the_filter</span>).<span class="ruby-identifier">order</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Sequel</span>[<span class="ruby-value">:version</span>].<span class="ruby-identifier">desc</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_sym</span>, <span class="ruby-value">:type</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:type</span>].<span class="ruby-identifier">to_sym</span>, <span class="ruby-value">:ufs</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:ufs</span>].<span class="ruby-identifier">to_sym</span>, <span class="ruby-value">:title</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:title</span>], <span class="ruby-value">:version</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:version</span>]}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Attempted to access a defunct Database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:search_options</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">search_options</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-format_load" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">format_load</span><span
|
|
class="method-args">(search_options={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="format_load-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 3158</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">format_load</span>(<span class="ruby-identifier">search_options</span>={})
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>()
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-identifier">format_stub</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">format_list</span>(<span class="ruby-identifier">search_options</span>).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">format_stub</span>
|
|
<span class="ruby-identifier">format_record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:formats</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">format_stub</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">format_record</span>
|
|
<span class="ruby-identifier">content</span> = <span class="ruby-string">""</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">format_stub</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">order</span>(<span class="ruby-value">:ordinal</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">content</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:content</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">format_record</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-value">:dbid</span>)
|
|
<span class="ruby-identifier">format_record</span>[<span class="ruby-value">:ufs</span>] = <span class="ruby-identifier">format_stub</span>[<span class="ruby-value">:ufs</span>]
|
|
<span class="ruby-identifier">format_record</span>[<span class="ruby-value">:type</span>] = <span class="ruby-identifier">format_stub</span>[<span class="ruby-value">:type</span>]
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">content</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">content</span>.<span class="ruby-identifier">base64?</span>
|
|
<span class="ruby-identifier">content</span> = <span class="ruby-identifier">content</span>.<span class="ruby-identifier">decode64</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">content</span>.<span class="ruby-identifier">json?</span>
|
|
<span class="ruby-identifier">content</span> = <span class="ruby-operator">::</span><span class="ruby-constant">JSON</span><span class="ruby-operator">::</span><span class="ruby-identifier">parse</span>(<span class="ruby-identifier">content</span>.<span class="ruby-identifier">to_s</span>, {<span class="ruby-value">:symbolize_names</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">content</span>[<span class="ruby-value">:type</span>]
|
|
<span class="ruby-identifier">content</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>.<span class="ruby-identifier">gxg_import</span>(<span class="ruby-identifier">content</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">format_record</span>[<span class="ruby-value">:content</span>] = <span class="ruby-identifier">content</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">format_record</span>[<span class="ruby-value">:content</span>] = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:mime_types</span>].<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:mime_types</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-string">","</span>)
|
|
<span class="ruby-identifier">format_record</span>[<span class="ruby-value">:mime_types</span>] = <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:mime_types</span>].<span class="ruby-identifier">split</span>(<span class="ruby-string">","</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">format_record</span>[<span class="ruby-value">:mime_types</span>] = [(<span class="ruby-identifier">format_record</span>[<span class="ruby-value">:mime_types</span>])]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">format_record</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Attempted to access a defunct Database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:search_options</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">search_options</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-format_template" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">format_template</span><span
|
|
class="method-args">(type=:structure)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
<p>Format handing methods</p>
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="format_template-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 3078</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">format_template</span>(<span class="ruby-identifier">type</span>=<span class="ruby-value">:structure</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">type</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply a type as a String or Symbol: :structure or :binary"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">the_uuid</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>()
|
|
<span class="ruby-keyword">while</span> (<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:formats</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_uuid</span>)}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-keyword">or</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_text</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_uuid</span>)}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>)
|
|
<span class="ruby-identifier">the_uuid</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>()
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_sym</span>), <span class="ruby-value">:type</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">type</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:ufs</span> <span class="ruby-operator">=></span> <span class="ruby-string">"unspecified"</span>, <span class="ruby-value">:title</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:version</span> <span class="ruby-operator">=></span> <span class="ruby-value">0.0</span>, <span class="ruby-value">:mime_types</span> <span class="ruby-operator">=></span> [], <span class="ruby-value">:content</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">nil</span>}
|
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">type</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:structure</span>
|
|
<span class="ruby-identifier">result</span>[<span class="ruby-value">:content</span>] = {}
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:binary</span>
|
|
<span class="ruby-identifier">result</span>[<span class="ruby-value">:content</span>] = {<span class="ruby-value">:sample_size</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:recognition</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:import</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:export</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>}
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">"Invalid format type specified: #{type.inspect}. Use :structure or :binary"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Attempted to access a defunct Database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">type</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-format_update" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">format_update</span><span
|
|
class="method-args">(format_record=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="format_update-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 3318</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">format_update</span>(<span class="ruby-identifier">format_record</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">format_record</span> = <span class="ruby-identifier">format_record</span>.<span class="ruby-identifier">clone</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>()
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Unable to write to database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">format_record</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">format_record</span>[<span class="ruby-value">:uuid</span>])
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Invalid UUID passed for the format"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:formats</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">format_update</span> = {}
|
|
<span class="ruby-identifier">record</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_key</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> [<span class="ruby-value">:type</span>, <span class="ruby-value">:ufs</span>, <span class="ruby-value">:title</span>, <span class="ruby-value">:version</span>, <span class="ruby-value">:mime_types</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">the_key</span>)
|
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">the_key</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:type</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:type</span>].<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"You must pass the format_record[:type] as a String or Symbol"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:ufs</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:ufs</span>].<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"You must pass the format_record[:ufs] as a String or Symbol"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:title</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:title</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"You must pass the format_record[:title] as a String"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:version</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:version</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Float</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"You must pass the format_record[:version] as a Float"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:mime_types</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:mime_types</span>].<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"You must pass the format_record[:mime_types] as a String"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_key</span> <span class="ruby-operator">==</span> <span class="ruby-value">:mime_types</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:mime_types</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-identifier">the_mimes</span> = <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:mime_types</span>].<span class="ruby-identifier">join</span>(<span class="ruby-string">","</span>).<span class="ruby-identifier">to_s</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">4096</span>]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">the_mimes</span> = <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:mime_types</span>].<span class="ruby-identifier">to_s</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">4096</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">format_record</span>[<span class="ruby-value">:mime_types</span>] = <span class="ruby-identifier">the_mimes</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">format_record</span>[(<span class="ruby-identifier">the_key</span>)] <span class="ruby-operator">!=</span> <span class="ruby-identifier">record</span>[(<span class="ruby-identifier">the_key</span>)]
|
|
<span class="ruby-identifier">format_update</span>[(<span class="ruby-identifier">the_key</span>)] = <span class="ruby-identifier">format_record</span>[(<span class="ruby-identifier">the_key</span>)]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">format_update</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-comment"># FIXME: :type and :ufs are being passed as a Symbols, but DB requires them to be a strings:</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">format_update</span>[<span class="ruby-value">:type</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>)
|
|
<span class="ruby-identifier">format_update</span>[<span class="ruby-value">:type</span>] = <span class="ruby-identifier">format_update</span>[<span class="ruby-value">:type</span>].<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">format_update</span>[<span class="ruby-value">:ufs</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>)
|
|
<span class="ruby-identifier">format_update</span>[<span class="ruby-value">:ufs</span>] = <span class="ruby-identifier">format_update</span>[<span class="ruby-value">:ufs</span>].<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:formats</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">update</span>(<span class="ruby-identifier">format_update</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">persistable?</span>(<span class="ruby-identifier">format_record</span>[<span class="ruby-value">:content</span>])
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"You must pass the format_record[:content] as a Hash of persistable elements"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">old_segments</span> = []
|
|
<span class="ruby-identifier">content</span> = <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">gxg_export</span>.<span class="ruby-identifier">to_json</span>.<span class="ruby-identifier">encode64</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">order</span>(<span class="ruby-value">:ordinal</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">old_segments</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">content</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">old_segments</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">new_segments</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">apportioned_ranges</span>(<span class="ruby-identifier">content</span>.<span class="ruby-identifier">size</span>, <span class="ruby-value">4096</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">old_segments</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-identifier">new_segments</span>.<span class="ruby-identifier">size</span>
|
|
<span class="ruby-identifier">the_count</span> = <span class="ruby-identifier">old_segments</span>.<span class="ruby-identifier">size</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">the_count</span> = <span class="ruby-identifier">new_segments</span>.<span class="ruby-identifier">size</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">manifest</span> = []
|
|
(<span class="ruby-value">0</span><span class="ruby-operator">..</span>(<span class="ruby-identifier">the_count</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_ordinal</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">new_segments</span>[(<span class="ruby-identifier">the_ordinal</span>)] <span class="ruby-keyword">and</span> <span class="ruby-identifier">old_segments</span>[(<span class="ruby-identifier">the_ordinal</span>)]
|
|
<span class="ruby-comment">#overwrite with new segment range</span>
|
|
<span class="ruby-identifier">manifest</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:operation</span> <span class="ruby-operator">=></span> <span class="ruby-value">:overwrite</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">old_segments</span>[(<span class="ruby-identifier">the_ordinal</span>)]), <span class="ruby-value">:ordinal</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_ordinal</span>), <span class="ruby-value">:portion</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">new_segments</span>[(<span class="ruby-identifier">the_ordinal</span>)])}
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">new_segments</span>[(<span class="ruby-identifier">the_ordinal</span>)]
|
|
<span class="ruby-comment"># create new segment at this ordinal</span>
|
|
<span class="ruby-identifier">manifest</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:operation</span> <span class="ruby-operator">=></span> <span class="ruby-value">:create</span>, <span class="ruby-value">:ordinal</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_ordinal</span>), <span class="ruby-value">:portion</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">new_segments</span>[(<span class="ruby-identifier">the_ordinal</span>)])}
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-comment"># delete old segment</span>
|
|
<span class="ruby-identifier">manifest</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:operation</span> <span class="ruby-operator">=></span> <span class="ruby-value">:delete</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">old_segments</span>[(<span class="ruby-identifier">the_ordinal</span>)])}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">manifest</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">action</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">action</span>[<span class="ruby-value">:operation</span>]
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:overwrite</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">action</span>[<span class="ruby-value">:dbid</span>])}).<span class="ruby-identifier">update</span>({<span class="ruby-value">:ordinal</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">action</span>[<span class="ruby-value">:ordinal</span>]), <span class="ruby-value">:length</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">content</span>[(<span class="ruby-identifier">action</span>[<span class="ruby-value">:portion</span>])].<span class="ruby-identifier">size</span>), <span class="ruby-value">:content</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">content</span>[(<span class="ruby-identifier">action</span>[<span class="ruby-value">:portion</span>])])})
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:create</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:uuid</span>]), <span class="ruby-value">:ordinal</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">action</span>[<span class="ruby-value">:ordinal</span>]), <span class="ruby-value">:length</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">content</span>[(<span class="ruby-identifier">action</span>[<span class="ruby-value">:portion</span>])].<span class="ruby-identifier">size</span>), <span class="ruby-value">:content</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">content</span>[(<span class="ruby-identifier">action</span>[<span class="ruby-value">:portion</span>])])})
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:delete</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">action</span>[<span class="ruby-value">:dbid</span>])}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:formats</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">format_record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">update</span>({<span class="ruby-value">:version</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">format_record</span>[<span class="ruby-value">:version</span>].<span class="ruby-identifier">to_f</span> <span class="ruby-operator">+</span> <span class="ruby-value">0.00001</span>)})
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">format_create</span>(<span class="ruby-identifier">format_record</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply a valid format record as a Hash"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Attempted to access a defunct Database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:format_record</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">format_record</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-group_create" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">group_create</span><span
|
|
class="method-args">(options={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="group_create-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1177</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">group_create</span>(<span class="ruby-identifier">options</span>={})
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">group_create</span>(<span class="ruby-identifier">options</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"Options must be passed as a Hash"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">title</span> = (<span class="ruby-identifier">options</span>[<span class="ruby-value">:title</span>] <span class="ruby-operator">||</span> <span class="ruby-string">"Untitled Group"</span>)
|
|
<span class="ruby-identifier">seo</span> = (<span class="ruby-identifier">options</span>[<span class="ruby-value">:seo</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">title</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-string">" "</span>, <span class="ruby-string">"_"</span>))
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:default_role</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">role_title</span> = (<span class="ruby-identifier">options</span>[<span class="ruby-value">:default_role</span>][<span class="ruby-value">:title</span>] <span class="ruby-operator">||</span> (<span class="ruby-identifier">title</span> <span class="ruby-operator">+</span> <span class="ruby-string">" Members"</span>))
|
|
<span class="ruby-identifier">role_seo</span> = (<span class="ruby-identifier">options</span>[<span class="ruby-value">:default_role</span>][<span class="ruby-value">:seo</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">role_title</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-string">" "</span>, <span class="ruby-string">"_"</span>))
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">role_title</span> = (<span class="ruby-identifier">title</span> <span class="ruby-operator">+</span> <span class="ruby-string">" Members"</span>)
|
|
<span class="ruby-identifier">role_seo</span> = <span class="ruby-identifier">role_title</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-string">" "</span>, <span class="ruby-string">"_"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">the_uuid</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>()
|
|
<span class="ruby-keyword">while</span> (<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:groups</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>)
|
|
<span class="ruby-identifier">the_uuid</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>()
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:groups</span>].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:title</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">title</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:seo</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">seo</span>.<span class="ruby-identifier">to_s</span>)})
|
|
<span class="ruby-identifier">role_uuid</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">role_create</span>(<span class="ruby-identifier">the_uuid</span>, <span class="ruby-identifier">role_title</span>, <span class="ruby-identifier">role_seo</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">role_uuid</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:groups</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">update</span>({<span class="ruby-value">:default_role</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">role_uuid</span>.<span class="ruby-identifier">to_s</span>)})
|
|
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:group</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_sym</span>, <span class="ruby-value">:default_role</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">role_uuid</span>.<span class="ruby-identifier">to_sym</span>}
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:groups</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Could not create default role for group. Aborting."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:options</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">options</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-group_credential" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">group_credential</span><span
|
|
class="method-args">(details={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="group_credential-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1308</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">group_credential</span>(<span class="ruby-identifier">details</span>={})
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">group_credential</span>(<span class="ruby-identifier">details</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database inactive"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">details</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>, <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedHash</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"group and role specifiers must be provided within a Hash or PeristedHash"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">details</span>[<span class="ruby-value">:group</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
|
|
<span class="ruby-identifier">group_record</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">group_fetch</span>({<span class="ruby-value">:title</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">details</span>[<span class="ruby-value">:group</span>]})
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">group_record</span>
|
|
<span class="ruby-identifier">role_title_specified</span> = (<span class="ruby-identifier">details</span>[<span class="ruby-value">:role</span>] <span class="ruby-operator">||</span> (<span class="ruby-identifier">group_record</span>[<span class="ruby-value">:title</span>].<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-string">" Members"</span>)).<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-identifier">group_roles</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">group_roles</span>(<span class="ruby-identifier">group_record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_sym</span>)
|
|
<span class="ruby-identifier">group_roles</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">role_profile</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">role_profile</span>[<span class="ruby-value">:title</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">role_title_specified</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">role_profile</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">break</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:details</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">details</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-group_delete" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">group_delete</span><span
|
|
class="method-args">(group_uuid=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="group_delete-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1275</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">group_delete</span>(<span class="ruby-identifier">group_uuid</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">group_delete</span>(<span class="ruby-identifier">group_uuid</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">group_uuid</span>)
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:groups</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">group_uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:groups</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">group_uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">update</span>({<span class="ruby-value">:default_role</span> <span class="ruby-operator">=></span> <span class="ruby-string">"__role_deleted__"</span>})
|
|
<span class="ruby-identifier">role_list</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:roles</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:uuid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:group_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">group_uuid</span>.<span class="ruby-identifier">to_s</span>)})
|
|
<span class="ruby-identifier">role_list</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">role</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">role_destroy</span>(<span class="ruby-identifier">role</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_sym</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:groups</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">group_uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must specify a valid group UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:group_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">group_uuid</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-group_exist-3F" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">group_exist?</span><span
|
|
class="method-args">(the_specifier=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="group_exist-3F-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1090</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">group_exist?</span>(<span class="ruby-identifier">the_specifier</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">group_exist?</span>(<span class="ruby-identifier">the_specifier</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">the_specifier</span>)
|
|
<span class="ruby-comment"># uuid search</span>
|
|
<span class="ruby-identifier">the_filter</span> = {<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_specifier</span>.<span class="ruby-identifier">to_s</span>}
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-comment"># title search</span>
|
|
<span class="ruby-identifier">the_filter</span> = {<span class="ruby-value">:title</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_specifier</span>.<span class="ruby-identifier">to_s</span>}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:groups</span>].<span class="ruby-identifier">filter</span>(<span class="ruby-identifier">the_filter</span>).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-group_fetch" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">group_fetch</span><span
|
|
class="method-args">(search_options={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="group_fetch-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1113</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">group_fetch</span>(<span class="ruby-identifier">search_options</span>={})
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">group_fetch</span>(<span class="ruby-identifier">search_options</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:groups</span>].<span class="ruby-identifier">filter</span>(<span class="ruby-identifier">search_options</span>).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">record</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:options</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">search_options</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-group_manifest" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">group_manifest</span><span
|
|
class="method-args">()</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="group_manifest-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1134</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">group_manifest</span>()
|
|
<span class="ruby-identifier">result</span> = {}
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">group_manifest</span>()
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-comment"># intitialize result tree</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:groups</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>}).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_group</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-comment"># dbid, uuid, parent_uuid, default_role, seo, title, version</span>
|
|
<span class="ruby-identifier">result</span>[(<span class="ruby-identifier">the_group</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>)] = {<span class="ruby-value">:title</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_group</span>[<span class="ruby-value">:title</span>], <span class="ruby-value">:seo</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_group</span>[<span class="ruby-value">:seo</span>], <span class="ruby-value">:version</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_group</span>[<span class="ruby-value">:version</span>], <span class="ruby-value">:groups</span> <span class="ruby-operator">=></span> {}, <span class="ruby-value">:roles</span> <span class="ruby-operator">=></span> {}}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># flesh out tree</span>
|
|
<span class="ruby-identifier">build_list</span> = <span class="ruby-identifier">result</span>.<span class="ruby-identifier">keys</span>
|
|
<span class="ruby-keyword">while</span> <span class="ruby-identifier">build_list</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-keyword">do</span>
|
|
<span class="ruby-identifier">group_uuid</span> = <span class="ruby-identifier">build_list</span>.<span class="ruby-identifier">shift</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">group_uuid</span>
|
|
<span class="ruby-identifier">the_group</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-identifier">result</span>.<span class="ruby-identifier">search</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">item</span>, <span class="ruby-identifier">selector</span>, <span class="ruby-identifier">container</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">selector</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">group_uuid</span>
|
|
<span class="ruby-identifier">the_group</span> = <span class="ruby-identifier">item</span>
|
|
<span class="ruby-keyword">break</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_group</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:groups</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">group_uuid</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">subgroup</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">the_group</span>[<span class="ruby-value">:groups</span>][(<span class="ruby-identifier">subgroup</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>)] = {<span class="ruby-value">:title</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">subgroup</span>[<span class="ruby-value">:title</span>], <span class="ruby-value">:seo</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">subgroup</span>[<span class="ruby-value">:seo</span>], <span class="ruby-value">:version</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">subgroup</span>[<span class="ruby-value">:version</span>], <span class="ruby-value">:groups</span> <span class="ruby-operator">=></span> {}, <span class="ruby-value">:roles</span> <span class="ruby-operator">=></span> {}}
|
|
<span class="ruby-identifier">build_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">subgroup</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:roles</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:group_uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">group_uuid</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_role</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">the_group</span>[<span class="ruby-value">:roles</span>][(<span class="ruby-identifier">the_role</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>)] = {<span class="ruby-value">:title</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_role</span>[<span class="ruby-value">:title</span>], <span class="ruby-value">:seo</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_role</span>[<span class="ruby-value">:seo</span>], <span class="ruby-value">:version</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_role</span>[<span class="ruby-value">:version</span>]}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-group_roles" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">group_roles</span><span
|
|
class="method-args">(group_uuid=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="group_roles-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1076</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">group_roles</span>(<span class="ruby-identifier">group_uuid</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = []
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">group_roles</span>(<span class="ruby-identifier">group_uuid</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">group_uuid</span>)
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:roles</span>].<span class="ruby-identifier">filter</span>(<span class="ruby-value">:group_uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">group_uuid</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:role</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_entry</span>[<span class="ruby-value">:title</span>]), <span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_entry</span>[<span class="ruby-value">:uuid</span>])}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-group_update" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">group_update</span><span
|
|
class="method-args">(group_uuid=nil, options={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="group_update-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1223</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">group_update</span>(<span class="ruby-identifier">group_uuid</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={})
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">group_update</span>(<span class="ruby-identifier">group_uuid</span>, <span class="ruby-identifier">options</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">group_uuid</span>)
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"Options must be passed as a Hash"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">title</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:title</span>]
|
|
<span class="ruby-identifier">seo</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:seo</span>]
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">title</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>) <span class="ruby-keyword">or</span> <span class="ruby-identifier">seo</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>) <span class="ruby-keyword">or</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:default_role</span>]) <span class="ruby-keyword">or</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">options</span>[<span class="ruby-value">:parent_uuid</span>])
|
|
<span class="ruby-identifier">the_update</span> = {}
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">title</span>
|
|
<span class="ruby-identifier">the_update</span>[<span class="ruby-value">:title</span>] = <span class="ruby-identifier">title</span>.<span class="ruby-identifier">to_s</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">255</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">seo</span>
|
|
<span class="ruby-identifier">the_update</span>[<span class="ruby-value">:seo</span>] = <span class="ruby-identifier">seo</span>.<span class="ruby-identifier">to_s</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">255</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:default_role</span>]
|
|
<span class="ruby-identifier">the_update</span>[<span class="ruby-value">:default_role</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value">:default_role</span>].<span class="ruby-identifier">to_s</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">36</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-value">:parent_uuid</span>]
|
|
<span class="ruby-identifier">the_update</span>[<span class="ruby-value">:parent_uuid</span>] = <span class="ruby-identifier">options</span>[<span class="ruby-value">:parent_uuid</span>].<span class="ruby-identifier">to_s</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">36</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:groups</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:version</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">group_uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">the_update</span>[<span class="ruby-value">:version</span>] = (<span class="ruby-identifier">record</span>[<span class="ruby-value">:version</span>] <span class="ruby-operator">+</span> <span class="ruby-value">0.0001</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Could not update version for group #{group_uuid}"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:groups</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">group_uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">update</span>(<span class="ruby-identifier">the_update</span>)
|
|
<span class="ruby-comment"># Review : BE SURE to also update the title of the default "<group-title> Members" role.</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must specify a valid group UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:group_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">group_uuid</span>), <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">options</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-import" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">import</span><span
|
|
class="method-args">(credential=nil, the_record=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
<p>Import methods (deprecated in favor of sychronize_records)</p>
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="import-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 3788</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">import</span>(<span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">the_record</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-identifier">cleanup_manifest</span> = []
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply a valid credential UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_record</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">the_record</span>[<span class="ruby-value">:type</span>]
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_boolean</span>, <span class="ruby-value">:element_integer</span>, <span class="ruby-value">:element_float</span>, <span class="ruby-value">:element_bigdecimal</span>, <span class="ruby-value">:element_datetime</span>
|
|
<span class="ruby-identifier">new_dbid</span> = <span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:type</span>])].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:version</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:version</span>]), <span class="ruby-value">:content</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:content</span>])})
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">assign_element_permission</span>((<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:type</span>]), (<span class="ruby-identifier">new_dbid</span>), <span class="ruby-identifier">credential</span>, {<span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:move</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>})
|
|
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:table</span>]), <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">new_dbid</span>)}
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_text</span>
|
|
<span class="ruby-identifier">the_uuid</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>()
|
|
<span class="ruby-keyword">while</span> (<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_text</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_uuid</span>}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>)
|
|
<span class="ruby-identifier">the_uuid</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>()
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">new_dbid</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_text</span>].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_uuid</span>), <span class="ruby-value">:version</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:version</span>]), <span class="ruby-value">:length</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">size</span>)})
|
|
<span class="ruby-identifier">cleanup_manifest</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_text</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">new_dbid</span>)}
|
|
<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">apportioned_ranges</span>(<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">size</span>, <span class="ruby-value">4096</span>).<span class="ruby-identifier">each_with_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_range</span>,<span class="ruby-identifier">the_ordinal</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_uuid</span>), <span class="ruby-value">:ordinal</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_ordinal</span>), <span class="ruby-value">:length</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:content</span>][(<span class="ruby-identifier">the_range</span>)].<span class="ruby-identifier">size</span>), <span class="ruby-value">:content</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:content</span>][(<span class="ruby-identifier">the_range</span>)])})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">assign_element_permission</span>((<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:type</span>]), (<span class="ruby-identifier">new_dbid</span>), <span class="ruby-identifier">credential</span>, {<span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:move</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>})
|
|
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_text</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">new_dbid</span>)}
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_binary</span>
|
|
<span class="ruby-identifier">the_uuid</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>()
|
|
<span class="ruby-keyword">while</span> (<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_binary</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_uuid</span>}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>)
|
|
<span class="ruby-identifier">the_uuid</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>()
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">new_dbid</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_binary</span>].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_uuid</span>), <span class="ruby-value">:version</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:version</span>]), <span class="ruby-value">:length</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">size</span>)})
|
|
<span class="ruby-identifier">cleanup_manifest</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_binary</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">new_dbid</span>)}
|
|
<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">apportioned_ranges</span>(<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">size</span>, <span class="ruby-value">65536</span>).<span class="ruby-identifier">each_with_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_range</span>,<span class="ruby-identifier">the_ordinal</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:binary_page</span>].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_uuid</span>), <span class="ruby-value">:ordinal</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_ordinal</span>), <span class="ruby-value">:length</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">data</span>()[(<span class="ruby-identifier">the_range</span>)].<span class="ruby-identifier">size</span>), <span class="ruby-value">:content</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">data</span>()[(<span class="ruby-identifier">the_range</span>)])})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">assign_element_permission</span>((<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:type</span>]), (<span class="ruby-identifier">new_dbid</span>), <span class="ruby-identifier">credential</span>, {<span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:move</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>})
|
|
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_binary</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">new_dbid</span>)}
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_array</span>
|
|
<span class="ruby-comment"># {:type => :element_array, :uuid => @uuid, :title => @title, :version => @version, :content => []}</span>
|
|
<span class="ruby-identifier">existing</span> = <span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:type</span>])].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>, <span class="ruby-value">:version</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">existing</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_record</span>[<span class="ruby-value">:version</span>] <span class="ruby-operator">></span> <span class="ruby-identifier">existing</span>[<span class="ruby-value">:version</span>]
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_destroy</span>(<span class="ruby-identifier">credential</span>, <span class="ruby-value">:element_array</span>, <span class="ruby-identifier">existing</span>[<span class="ruby-value">:dbid</span>])
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Error replacing array element - Aborting"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">existing</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-string">"Import record is older than existing one - Skipping"</span>)
|
|
<span class="ruby-identifier">new_dbid</span> = <span class="ruby-identifier">existing</span>[<span class="ruby-value">:dbid</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">existing</span>
|
|
<span class="ruby-identifier">new_dbid</span> = <span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:type</span>])].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:title</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:title</span>]), <span class="ruby-value">:version</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:version</span>])})
|
|
<span class="ruby-identifier">cleanup_manifest</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_array</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">new_dbid</span>)}
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">assign_element_permission</span>(<span class="ruby-value">:element_array</span>, (<span class="ruby-identifier">new_dbid</span>), <span class="ruby-identifier">credential</span>, {<span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:move</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>})
|
|
<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">each_with_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">element</span>, <span class="ruby-identifier">indexer</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">new_address</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">import</span>(<span class="ruby-identifier">credential</span>, (<span class="ruby-identifier">element</span>))
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">new_address</span>
|
|
<span class="ruby-identifier">cleanup_manifest</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">new_address</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:array_links</span>].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:ordinal</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">indexer</span>), <span class="ruby-value">:element</span> <span class="ruby-operator">=></span> (<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_table_index</span>(<span class="ruby-identifier">new_address</span>[<span class="ruby-value">:table</span>])), <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">new_address</span>[<span class="ruby-value">:dbid</span>]})
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Error processing the import record - Aborting"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_array</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">new_dbid</span>)}
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_hash</span>
|
|
<span class="ruby-comment"># {:type => :element_hash, :uuid => @uuid, :title => @title, :version => @version, :format => @format, :content => {}}</span>
|
|
<span class="ruby-identifier">existing</span> = <span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:type</span>])].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>, <span class="ruby-value">:version</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">existing</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_record</span>[<span class="ruby-value">:version</span>] <span class="ruby-operator">></span> <span class="ruby-identifier">existing</span>[<span class="ruby-value">:version</span>]
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_destroy</span>(<span class="ruby-identifier">credential</span>, <span class="ruby-value">:element_hash</span>, <span class="ruby-identifier">existing</span>[<span class="ruby-value">:dbid</span>])
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Error replacing hash element - Aborting"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">existing</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-string">"Import record is older than existing one - Skipping"</span>)
|
|
<span class="ruby-identifier">new_dbid</span> = <span class="ruby-identifier">existing</span>[<span class="ruby-value">:dbid</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">existing</span>
|
|
<span class="ruby-identifier">new_dbid</span> = <span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:type</span>])].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:title</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:title</span>]), <span class="ruby-value">:version</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:version</span>]), <span class="ruby-value">:format</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:format</span>].<span class="ruby-identifier">to_s</span>)})
|
|
<span class="ruby-identifier">cleanup_manifest</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_hash</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">new_dbid</span>)}
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">assign_element_permission</span>(<span class="ruby-value">:element_hash</span>, (<span class="ruby-identifier">new_dbid</span>), <span class="ruby-identifier">credential</span>, {<span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:move</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>})
|
|
<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each_with_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_key</span>, <span class="ruby-identifier">indexer</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">new_address</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">import</span>(<span class="ruby-identifier">credential</span>, (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:content</span>][(<span class="ruby-identifier">the_key</span>)]))
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">new_address</span>
|
|
<span class="ruby-identifier">cleanup_manifest</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">new_address</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:hash_links</span>].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:parent_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:property</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_key</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:ordinal</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">indexer</span>), <span class="ruby-value">:element</span> <span class="ruby-operator">=></span> (<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_table_index</span>(<span class="ruby-identifier">new_address</span>[<span class="ruby-value">:table</span>])), <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">new_address</span>[<span class="ruby-value">:dbid</span>]})
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Error processing the import record - Aborting"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_hash</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">new_dbid</span>)}
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"Invalid table specified"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply an import record as a Hash"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-comment"># clean up</span>
|
|
<span class="ruby-identifier">cleanup_manifest</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_destroy</span>(<span class="ruby-identifier">credential</span>, <span class="ruby-identifier">entry</span>[<span class="ruby-value">:table</span>], <span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>])
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:the_record</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_record</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-string">"Cannot import records into a read-only Database - Aborting"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-initialize_clone" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">initialize_clone</span><span
|
|
class="method-args">()</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
<p>Comm objects cannot be cloned - returns nil</p>
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="initialize_clone-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 5102</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize_clone</span>
|
|
<span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="aliases">
|
|
Also aliased as: <a href="Database.html#method-i-initialize_dup">initialize_dup</a>, <a href="Database.html#method-i-dup">dup</a>
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-initialize_dup" class="method-detail method-alias">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">initialize_dup</span><span
|
|
class="method-args">()</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="aliases">
|
|
Alias for: <a href="Database.html#method-i-initialize_clone">initialize_clone</a>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-inspect" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">inspect</span><span
|
|
class="method-args">()</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="inspect-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 431</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">inspect</span>()
|
|
<span class="ruby-node">"<Database: #{this().to_uri()}>"</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-iterative_persist" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">iterative_persist</span><span
|
|
class="method-args">(old_root=nil, credential=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="iterative_persist-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2558</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">iterative_persist</span>(<span class="ruby-identifier">old_root</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-comment"># New PersistedArray, or PersistedHash interface:</span>
|
|
<span class="ruby-comment"># mount element: {:database => <database>, :uuid => <uuid>, :credential => <uuid>, :delegate => nil/<uuid>, :parent => nil/<an-object>}</span>
|
|
<span class="ruby-comment"># create element: {:database => <database>, :credential => <uuid>, :delegate => nil/<uuid>, :parent => nil/<an-object>}</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-comment"># db open?</span>
|
|
<span class="ruby-comment"># write permissions on db?</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You MUST provide a valid UUID as a credential."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">old_root</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You MUST provide either an Array or a Hash."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">persistable?</span>(<span class="ruby-identifier">old_root</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"The object you are attempting to persist contains a non-persistable item."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">old_root</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-identifier">original_partner</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedArray</span>.<span class="ruby-identifier">new</span>({<span class="ruby-value">:database</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">self</span>, <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>})
|
|
<span class="ruby-identifier">original_partner</span>.<span class="ruby-identifier">get_reservation</span>()
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">enforce_permission_policy</span>({<span class="ruby-value">:action</span> <span class="ruby-operator">=></span> <span class="ruby-value">:extend</span>, <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>, <span class="ruby-value">:source</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">original_partner</span>, <span class="ruby-value">:destination</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">original_partner</span>})
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">old_root</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">original_partner</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedHash</span>.<span class="ruby-identifier">new</span>({<span class="ruby-value">:database</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">self</span>, <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>})
|
|
<span class="ruby-identifier">original_partner</span>.<span class="ruby-identifier">get_reservation</span>()
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">enforce_permission_policy</span>({<span class="ruby-value">:action</span> <span class="ruby-operator">=></span> <span class="ruby-value">:extend</span>, <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>, <span class="ruby-value">:source</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">original_partner</span>, <span class="ruby-value">:destination</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">original_partner</span>})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">old_root</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedArray</span>, <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedHash</span>)
|
|
<span class="ruby-comment"># TODO: support subsuming already persisted objects.</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">paring_data</span> = [{<span class="ruby-value">:parent</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">nil</span>, <span class="ruby-value">:parent_selector</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">nil</span>, <span class="ruby-value">:object</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">old_root</span>, <span class="ruby-value">:partner</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">original_partner</span>}]
|
|
<span class="ruby-identifier">children_of</span> = <span class="ruby-constant">Proc</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_parent</span>=<span class="ruby-keyword">nil</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">list</span> = []
|
|
<span class="ruby-identifier">paring_data</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">node</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">node</span>[<span class="ruby-value">:parent</span>].<span class="ruby-identifier">object_id</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">the_parent</span>.<span class="ruby-identifier">object_id</span>
|
|
<span class="ruby-identifier">list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">node</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">list</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">parent_of</span> = <span class="ruby-constant">Proc</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_parent</span>=<span class="ruby-keyword">nil</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">output</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-identifier">paring_data</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:object</span>].<span class="ruby-identifier">object_id</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">the_parent</span>.<span class="ruby-identifier">object_id</span>
|
|
<span class="ruby-identifier">output</span> = <span class="ruby-identifier">entry</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">output</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">find_partner</span> = <span class="ruby-constant">Proc</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_object</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">found_partner</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-identifier">paring_data</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_record</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_record</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_record</span>[<span class="ruby-value">:object</span>].<span class="ruby-identifier">object_id</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">the_object</span>.<span class="ruby-identifier">object_id</span>
|
|
<span class="ruby-identifier">found_partner</span> = <span class="ruby-identifier">the_record</span>[<span class="ruby-value">:partner</span>]
|
|
<span class="ruby-keyword">break</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">found_partner</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># build paring data:</span>
|
|
<span class="ruby-identifier">delegate_permission</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-identifier">old_root</span>.<span class="ruby-identifier">search</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_value</span>, <span class="ruby-identifier">the_selector</span>, <span class="ruby-identifier">the_container</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-identifier">paring_data</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:parent</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_container</span>, <span class="ruby-value">:parent_selector</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_selector</span>, <span class="ruby-value">:object</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_value</span>, <span class="ruby-value">:partner</span> <span class="ruby-operator">=></span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedArray</span>.<span class="ruby-identifier">new</span>({<span class="ruby-value">:database</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">self</span>, <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>})}
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">paring_data</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:parent</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_container</span>, <span class="ruby-value">:parent_selector</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_selector</span>, <span class="ruby-value">:object</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_value</span>, <span class="ruby-value">:partner</span> <span class="ruby-operator">=></span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedHash</span>.<span class="ruby-identifier">new</span>({<span class="ruby-value">:database</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">self</span>, <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>})}
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">paring_data</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:parent</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_container</span>, <span class="ruby-value">:parent_selector</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_selector</span>, <span class="ruby-value">:object</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_value</span>, <span class="ruby-value">:partner</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_value</span>}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># Assign objects to structure in order by parent / parent_selector</span>
|
|
<span class="ruby-identifier">link_db</span> = [(<span class="ruby-identifier">paring_data</span>[<span class="ruby-value">0</span>])]
|
|
<span class="ruby-keyword">while</span> <span class="ruby-identifier">link_db</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">entry</span> = <span class="ruby-identifier">link_db</span>.<span class="ruby-identifier">shift</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:object</span>].<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-comment"># get children and assign</span>
|
|
<span class="ruby-identifier">children</span> = <span class="ruby-identifier">children_of</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">entry</span>[<span class="ruby-value">:object</span>])
|
|
<span class="ruby-identifier">children</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">child</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">entry</span>[<span class="ruby-value">:partner</span>][(<span class="ruby-identifier">child</span>[<span class="ruby-value">:parent_selector</span>])] = <span class="ruby-identifier">child</span>[<span class="ruby-value">:partner</span>]
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">child</span>[<span class="ruby-value">:partner</span>].<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedArray</span>, <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedHash</span>)
|
|
<span class="ruby-identifier">link_db</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">child</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">original_partner</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:object</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">old_root</span>, <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-new_structure_from_format" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">new_structure_from_format</span><span
|
|
class="method-args">(credential=nil, search_options={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="new_structure_from_format-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 3212</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">new_structure_from_format</span>(<span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">search_options</span>={})
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>()
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply a valid credential UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">format</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">format_load</span>(<span class="ruby-identifier">search_options</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">format</span>
|
|
<span class="ruby-comment"># TODO: add support for :binary formats.</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">format</span>[<span class="ruby-value">:type</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:structure</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Only formats of type :structure are supported"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">try_persist</span>(<span class="ruby-identifier">format</span>[<span class="ruby-value">:content</span>], <span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedHash</span>)
|
|
<span class="ruby-identifier">result</span>.<span class="ruby-identifier">set_format</span>(<span class="ruby-identifier">format</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_sym</span>)
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">uuid</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">update</span>({<span class="ruby-value">:format</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">format</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Attempted to access a defunct Database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:search_options</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">search_options</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-open-3F" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">open?</span><span
|
|
class="method-args">()</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="open-3F-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 403</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">open?</span>()
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">synchronize</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">connection</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-ivar">@active</span> = <span class="ruby-ivar">@connector</span>.<span class="ruby-identifier">valid_connection?</span>(<span class="ruby-identifier">connection</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-ivar">@active</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">nil</span>})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-ivar">@active</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-permission_policy" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">permission_policy</span><span
|
|
class="method-args">()</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
<p>Permission policy support:</p>
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="permission_policy-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 3611</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">permission_policy</span>()
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>()
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>()
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">permission_policy</span>()
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@permission_policy</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Attempted to access a defunct Database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-permission_policy_load" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">permission_policy_load</span><span
|
|
class="method-args">()</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="permission_policy_load-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 3633</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">permission_policy_load</span>()
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>()
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>()
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">permission_policy_load</span>()
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-ivar">@permission_policy</span> = (<span class="ruby-keyword">self</span>[<span class="ruby-value">:permission_policy</span>] <span class="ruby-operator">||</span> [])
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Attempted to access a defunct Database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-permission_policy_save" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">permission_policy_save</span><span
|
|
class="method-args">()</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="permission_policy_save-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 3656</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">permission_policy_save</span>()
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>()
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>()
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">permission_policy_save</span>()
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">self</span>[<span class="ruby-value">:permission_policy</span>] = (<span class="ruby-ivar">@permission_policy</span> <span class="ruby-operator">||</span> [])
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Attempted to access a defunct Database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-persistable-3F" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">persistable?</span><span
|
|
class="method-args">(the_object)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="persistable-3F-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2536</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">persistable?</span>(<span class="ruby-identifier">the_object</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_object</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedHash</span>, <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedArray</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_object</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-identifier">the_object</span>.<span class="ruby-identifier">search</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">item</span>, <span class="ruby-identifier">selector</span>, <span class="ruby-identifier">container</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_table_for_instance</span>(<span class="ruby-identifier">item</span>) <span class="ruby-operator">==</span> <span class="ruby-value">:unspecified</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">break</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_table_for_instance</span>(<span class="ruby-identifier">the_object</span>) <span class="ruby-operator">==</span> <span class="ruby-value">:unspecified</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-release_element_locks" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">release_element_locks</span><span
|
|
class="method-args">(reservation_uuid=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="release_element_locks-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2878</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">release_element_locks</span>(<span class="ruby-identifier">reservation_uuid</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">reservation_uuid</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply a valid reservation UUID (as a String or Symbol) to release locks"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_locks</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:reservation</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">reservation_uuid</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># on read-only db, no reservation was made so mission accomplished</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available (defunct)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:reservation</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">reservation_uuid</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-remove_element_permissions" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">remove_element_permissions</span><span
|
|
class="method-args">(table=:unspecified, dbid=0, options={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="remove_element_permissions-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1574</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">remove_element_permissions</span>(<span class="ruby-identifier">table</span>=<span class="ruby-value">:unspecified</span>, <span class="ruby-identifier">dbid</span>=<span class="ruby-value">0</span>, <span class="ruby-identifier">options</span>={})
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database inactive"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">dbid</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"dbid must be specified with a Integer"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"permissions must be specified with a Hash"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">credential</span> = <span class="ruby-identifier">options</span>[<span class="ruby-value">:credential</span>]
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">credential</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must specify a valid credential UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">table</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>)
|
|
<span class="ruby-identifier">table</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_table_by_index</span>(<span class="ruby-identifier">table</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># Review : change in permission policy</span>
|
|
<span class="ruby-comment"># if [:element_boolean, :element_integer, :element_float, :element_bigdecimal, :element_datetime, :element_text, :element_binary, :element_array, :element_hash].include?(table)</span>
|
|
<span class="ruby-keyword">if</span> [<span class="ruby-value">:element_array</span>, <span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">table</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">credential</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">table</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">dbid</span>), <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">table</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">dbid</span>)}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"Invalid table specified"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">table</span>), <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">dbid</span>), <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">options</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-reservation_add_element" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">reservation_add_element</span><span
|
|
class="method-args">(reservation_uuid=nil, table=:unspecified, dbid=0)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="reservation_add_element-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2903</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">reservation_add_element</span>(<span class="ruby-identifier">reservation_uuid</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">table</span>=<span class="ruby-value">:unspecified</span>, <span class="ruby-identifier">dbid</span>=<span class="ruby-value">0</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">reservation_uuid</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply a valid reservation UUID (as a String or Symbol) to add an element to the reserve locks"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_locks</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:type</span>, <span class="ruby-value">:reservation</span>, <span class="ruby-value">:credential</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:reservation</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">reservation_uuid</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">type</span> = <span class="ruby-identifier">record</span>[<span class="ruby-value">:type</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-identifier">credential</span> = <span class="ruby-identifier">record</span>[<span class="ruby-value">:credential</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-identifier">manifest</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_manifest</span>(<span class="ruby-identifier">table</span>, <span class="ruby-identifier">dbid</span>, <span class="ruby-keyword">false</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:write</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">manifest</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_locks</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">type</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:reservation</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">reservation_uuid</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:table</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>]}).<span class="ruby-identifier">count</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_locks</span>].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">type</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:reservation</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">reservation_uuid</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:table</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>]})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-comment"># read</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">manifest</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_locks</span>].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">type</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:reservation</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">reservation_uuid</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:table</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>]})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available (defunct)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:reservation</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">reservation_uuid</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-reservation_remove_element" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">reservation_remove_element</span><span
|
|
class="method-args">(reservation_uuid=nil, table=:unspecified, dbid=0)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="reservation_remove_element-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2951</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">reservation_remove_element</span>(<span class="ruby-identifier">reservation_uuid</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">table</span>=<span class="ruby-value">:unspecified</span>, <span class="ruby-identifier">dbid</span>=<span class="ruby-value">0</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">reservation_uuid</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply a valid reservation UUID (as a String or Symbol) to remove element from reserve locks"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_locks</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:reservation</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:reservation</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">reservation_uuid</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">manifest</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_manifest</span>(<span class="ruby-identifier">table</span>, <span class="ruby-identifier">dbid</span>, <span class="ruby-keyword">false</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">manifest</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_locks</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:reservation</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">reservation_uuid</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:table</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>]}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_locks</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:reservation</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">reservation_uuid</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:table</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>]}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available (defunct)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:reservation</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">reservation_uuid</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-reserve_element_locks" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">reserve_element_locks</span><span
|
|
class="method-args">(credential=nil, manifest=[], type=:read)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
<p>Element Write-Lock Handling methods</p>
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="reserve_element_locks-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2816</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">reserve_element_locks</span>(<span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">manifest</span>=[], <span class="ruby-identifier">type</span>=<span class="ruby-value">:read</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply a valid credential UUID to reserve locks"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">manifest</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArguementError</span>, <span class="ruby-string">"You must supply an Array of tables and record ids to reserve for writing"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> [<span class="ruby-value">:write</span>, <span class="ruby-value">:read</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">type</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must specify a type of reservation: either :write or :read are supported"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">manifest</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">reservation_uuid</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>()
|
|
<span class="ruby-keyword">while</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_locks</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:reservation</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">reservation_uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">reservation_uuid</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>()
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:write</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-comment"># Write-lock must be unique to the elements</span>
|
|
<span class="ruby-identifier">manifest</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_locks</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">type</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:table</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>]}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">release_element_locks</span>(<span class="ruby-identifier">reservation_uuid</span>)
|
|
<span class="ruby-comment"># raise Exception, "A reservation already exists for element #{entry[:table]}:#{entry[:dbid]}"</span>
|
|
<span class="ruby-comment"># Note - just silently fail and return Nil - no reservation for you.</span>
|
|
<span class="ruby-keyword">break</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_locks</span>].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">type</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:reservation</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">reservation_uuid</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:table</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>]})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># if write-reservation was made</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_locks</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:reservation</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">reservation_uuid</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">reservation_uuid</span>.<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-comment"># Read-lock reservation - can share elements</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-identifier">manifest</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_locks</span>].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:type</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">type</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:reservation</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">reservation_uuid</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:table</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:dbid</span>]})
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># Note - on a read-only db it will act as though it has a read-reservation since no deletions can be made.</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">reservation_uuid</span>.<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available (defunct)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>), <span class="ruby-value">:manifest</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">manifest</span>), <span class="ruby-value">:type</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">type</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-retrieve_by_address" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">retrieve_by_address</span><span
|
|
class="method-args">(the_address={}, credential=nil, delegate=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="retrieve_by_address-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2687</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">retrieve_by_address</span>(<span class="ruby-identifier">the_address</span>={}, <span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">delegate</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply a valid credential UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-identifier">address</span> = {}
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_address</span>[<span class="ruby-value">:database</span>]
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_address</span>[<span class="ruby-value">:database</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">self</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">"Database mismatch. Call this method on database #{the_address[:database].inspect}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">address</span>[<span class="ruby-value">:database</span>] = <span class="ruby-identifier">the_address</span>[<span class="ruby-value">:database</span>]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">address</span>[<span class="ruby-value">:database</span>] = <span class="ruby-keyword">self</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> ((<span class="ruby-identifier">the_address</span>[<span class="ruby-value">:table</span>]) <span class="ruby-keyword">and</span> (<span class="ruby-identifier">the_address</span>[<span class="ruby-value">:dbid</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>)))
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">"Invalid database address: #{the_address.inspect}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_address</span>[<span class="ruby-value">:table</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>)
|
|
<span class="ruby-identifier">address</span>[<span class="ruby-value">:table</span>] = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_table_by_index</span>(<span class="ruby-identifier">the_address</span>[<span class="ruby-value">:table</span>])
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">address</span>[<span class="ruby-value">:table</span>] = <span class="ruby-identifier">the_address</span>[<span class="ruby-value">:table</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">address</span>[<span class="ruby-value">:dbid</span>] = <span class="ruby-identifier">the_address</span>[<span class="ruby-value">:dbid</span>]
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_in_trash?</span>(<span class="ruby-identifier">address</span>[<span class="ruby-value">:table</span>], <span class="ruby-identifier">address</span>[<span class="ruby-value">:dbid</span>])
|
|
<span class="ruby-keyword">if</span> [<span class="ruby-value">:persisted_array</span>, <span class="ruby-value">:persisted_hash</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">address</span>[<span class="ruby-value">:table</span>])
|
|
<span class="ruby-identifier">the_permission</span> = <span class="ruby-identifier">address</span>[<span class="ruby-value">:database</span>].<span class="ruby-identifier">effective_element_permission</span>(<span class="ruby-identifier">address</span>[<span class="ruby-value">:table</span>], <span class="ruby-identifier">address</span>[<span class="ruby-value">:dbid</span>], <span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">the_permission</span> = {<span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:move</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># Review ????</span>
|
|
<span class="ruby-comment"># puts "Effective Permission: #{the_permission.inspect} for #{address[:table].inspect},#{address[:dbid].inspect}"</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_permission</span>[<span class="ruby-value">:read</span>] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">address</span>[<span class="ruby-value">:table</span>]
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_array</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-identifier">address</span>[<span class="ruby-value">:database</span>].<span class="ruby-identifier">connector</span>()[(<span class="ruby-identifier">address</span>[<span class="ruby-value">:table</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>)].<span class="ruby-identifier">select</span>(<span class="ruby-value">:uuid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">address</span>[<span class="ruby-value">:dbid</span>])}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedArray</span>.<span class="ruby-identifier">new</span>({<span class="ruby-value">:database</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">address</span>[<span class="ruby-value">:database</span>]), <span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_sym</span>), <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>), <span class="ruby-value">:delegate</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">delegate</span>)})
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Unable to retrieve PersistedArray"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_hash</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-identifier">address</span>[<span class="ruby-value">:database</span>].<span class="ruby-identifier">connector</span>()[<span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:uuid</span>, <span class="ruby-value">:format</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">address</span>[<span class="ruby-value">:dbid</span>])}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedHash</span>.<span class="ruby-identifier">new</span>({<span class="ruby-value">:database</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">address</span>[<span class="ruby-value">:database</span>]), <span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_sym</span>), <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>), <span class="ruby-value">:delegate</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">delegate</span>)})
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>[<span class="ruby-value">:format</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">result</span>.<span class="ruby-identifier">set_format</span>(<span class="ruby-identifier">record</span>[<span class="ruby-value">:format</span>].<span class="ruby-identifier">to_sym</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Unable to retrieve PersistedHash"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">"Invalid table specifier: #{address[:table].inspect}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-comment"># At this point the idea is that if you don't have permissions to read it, you never see it</span>
|
|
<span class="ruby-comment"># raise Exception, "You don't have permission to retrieve this element"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available (defunct)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:address</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_address</span>), <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>), <span class="ruby-value">:delegate</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">delegate</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-retrieve_by_uuid" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">retrieve_by_uuid</span><span
|
|
class="method-args">(uuid=nil, credential=nil, delegate=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="retrieve_by_uuid-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2764</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">retrieve_by_uuid</span>(<span class="ruby-identifier">uuid</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">delegate</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-identifier">address</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">address</span> = {<span class="ruby-value">:database</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">self</span>, <span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_hash</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:dbid</span>])}
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_array</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">address</span> = {<span class="ruby-value">:database</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">self</span>, <span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_array</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:dbid</span>])}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">address</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">retrieve_by_address</span>(<span class="ruby-identifier">address</span>, <span class="ruby-identifier">credential</span>, <span class="ruby-identifier">delegate</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-comment"># ### Review : Experimental Code - attempt to seemlessly integrate dbs of different roles into in-memory structures.</span>
|
|
<span class="ruby-identifier">already_checked</span> = [(<span class="ruby-keyword">self</span>)]
|
|
<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">DB</span>[<span class="ruby-value">:roles</span>].<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_db_role</span>, <span class="ruby-identifier">the_database</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">already_checked</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">the_database</span>)
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-identifier">the_database</span>.<span class="ruby-identifier">connector</span>[<span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">address</span> = {<span class="ruby-value">:database</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_database</span>, <span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_hash</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:dbid</span>])}
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">the_database</span>.<span class="ruby-identifier">retrieve_by_address</span>(<span class="ruby-identifier">address</span>, <span class="ruby-identifier">credential</span>, <span class="ruby-identifier">delegate</span>)
|
|
<span class="ruby-keyword">break</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-identifier">the_database</span>.<span class="ruby-identifier">connector</span>[<span class="ruby-value">:element_array</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">address</span> = {<span class="ruby-value">:database</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_database</span>, <span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:element_array</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:dbid</span>])}
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">the_database</span>.<span class="ruby-identifier">retrieve_by_address</span>(<span class="ruby-identifier">address</span>, <span class="ruby-identifier">credential</span>, <span class="ruby-identifier">delegate</span>)
|
|
<span class="ruby-keyword">break</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">already_checked</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">the_database</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available (defunct)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">uuid</span>), <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>), <span class="ruby-value">:delegate</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">delegate</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-revoke_element_permissions" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">revoke_element_permissions</span><span
|
|
class="method-args">(table=:unspecified, dbid=0, credential=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="revoke_element_permissions-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1398</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">revoke_element_permissions</span>(<span class="ruby-identifier">table</span>=<span class="ruby-value">:unspecified</span>, <span class="ruby-identifier">dbid</span>=<span class="ruby-value">0</span>, <span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database inactive"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">dbid</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"dbid must be specified with a Integer"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"This option requires a valid credential UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">table</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>)
|
|
<span class="ruby-identifier">table</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_table_by_index</span>(<span class="ruby-identifier">table</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># Review : change in permission policy</span>
|
|
<span class="ruby-comment"># if [:element_boolean, :element_integer, :element_float, :element_bigdecimal, :element_datetime, :element_text, :element_binary, :element_array, :element_hash].include?(table)</span>
|
|
<span class="ruby-keyword">if</span> [<span class="ruby-value">:element_array</span>, <span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">table</span>)
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:element_table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">table</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:elementid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">dbid</span>), <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"Invalid table specified"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:table</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">table</span>), <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">dbid</span>), <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">options</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-revoke_permissions_by_uuid" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">revoke_permissions_by_uuid</span><span
|
|
class="method-args">(the_uuid=nil, credential=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="revoke_permissions_by_uuid-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1480</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">revoke_permissions_by_uuid</span>(<span class="ruby-identifier">the_uuid</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = []
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-identifier">found</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>, <span class="ruby-value">:uuid</span>).<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">found</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">revoke_element_permissions</span>(<span class="ruby-value">:element_hash</span>,(<span class="ruby-identifier">found</span>[<span class="ruby-value">:dbid</span>]),<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">found</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_array</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:dbid</span>, <span class="ruby-value">:uuid</span>).<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">found</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">revoke_element_permissions</span>(<span class="ruby-value">:element_array</span>,(<span class="ruby-identifier">found</span>[<span class="ruby-value">:dbid</span>]),<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_uuid</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-role_add_user" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">role_add_user</span><span
|
|
class="method-args">(role_uuid=nil, credential=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="role_add_user-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 930</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">role_add_user</span>(<span class="ruby-identifier">role_uuid</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">role_add_user</span>(<span class="ruby-identifier">role_uuid</span>, <span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">role_uuid</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:user_roles</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:role_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">role_uuid</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:user_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">count</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:user_roles</span>].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:role_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">role_uuid</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:user_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>)})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must specify a valid user credential UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must specify a valid role UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:role_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">role_uuid</span>), <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-role_create" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">role_create</span><span
|
|
class="method-args">(group_uuid=nil, title="", seo="")</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="role_create-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 808</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">role_create</span>(<span class="ruby-identifier">group_uuid</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">title</span>=<span class="ruby-string">""</span>, <span class="ruby-identifier">seo</span>=<span class="ruby-string">""</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">role_create</span>(<span class="ruby-identifier">title</span>,<span class="ruby-identifier">seo</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">group_uuid</span>)
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">title</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator"><=</span> <span class="ruby-value">256</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">title</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">title</span> = <span class="ruby-string">"Member"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">seo</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator"><=</span> <span class="ruby-value">256</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">"Oversized SEO attempted (256 Character Limit): #{seo}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">seo</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">seo</span> = <span class="ruby-identifier">title</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-string">" "</span>,<span class="ruby-string">"_"</span>)[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">255</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">the_uuid</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>()
|
|
<span class="ruby-keyword">while</span> (<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:roles</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>)
|
|
<span class="ruby-identifier">the_uuid</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>()
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:roles</span>].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:group_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">group_uuid</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:title</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">title</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:seo</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">seo</span>.<span class="ruby-identifier">to_s</span>)})
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">"Oversized title attempted (256 Character Limit): #{title}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must specify a valid group UUID to link to (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:group_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">group_uuid</span>), <span class="ruby-value">:title</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">title</span>), <span class="ruby-value">:seo</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">seo</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-role_destroy" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">role_destroy</span><span
|
|
class="method-args">(role_uuid=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="role_destroy-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 888</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">role_destroy</span>(<span class="ruby-identifier">role_uuid</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">role_destroy</span>(<span class="ruby-identifier">role_uuid</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">role_uuid</span>)
|
|
<span class="ruby-comment"># cannot destroy if still linked as group's default role</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:roles</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">role_uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">group_record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:groups</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:group_uuid</span>].<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">group_record</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">role_uuid</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">group_record</span>[<span class="ruby-value">:default_role</span>].<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-identifier">the_list</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_list</span>()
|
|
<span class="ruby-identifier">the_list</span> <span class="ruby-operator"><<</span> (<span class="ruby-keyword">self</span>)
|
|
<span class="ruby-identifier">the_list</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_db</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">the_db</span>.<span class="ruby-identifier">connector</span>()[<span class="ruby-value">:permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">role_uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-identifier">the_db</span>.<span class="ruby-identifier">connector</span>()[<span class="ruby-value">:user_roles</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:role_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">role_uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:roles</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">role_uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-string">"You cannot destroy a group's default role"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must specify a valid role UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:role_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">role_uuid</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-role_exist-3F" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">role_exist?</span><span
|
|
class="method-args">(credential=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="role_exist-3F-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 792</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">role_exist?</span>(<span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">role_exist?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:roles</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-role_fetch" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">role_fetch</span><span
|
|
class="method-args">(search_options={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="role_fetch-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1062</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">role_fetch</span>(<span class="ruby-identifier">search_options</span>={})
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">role_fetch</span>(<span class="ruby-identifier">search_options</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:roles</span>].<span class="ruby-identifier">filter</span>(<span class="ruby-identifier">search_options</span>).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-role_group" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">role_group</span><span
|
|
class="method-args">(role_uuid=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="role_group-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1040</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">role_group</span>(<span class="ruby-identifier">role_uuid</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">role_group</span>(<span class="ruby-identifier">role_uuid</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">role_uuid</span>)
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:roles</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">role_uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">group</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">group_fetch</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">record</span>[<span class="ruby-value">:group_uuid</span>].<span class="ruby-identifier">to_s</span>})
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">group</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">group</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-role_member-3F" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">role_member?</span><span
|
|
class="method-args">(role_uuid=nil, credential=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="role_member-3F-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 992</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">role_member?</span>(<span class="ruby-identifier">role_uuid</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">role_member?</span>(<span class="ruby-identifier">role_uuid</span>, <span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">role_uuid</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:user_roles</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:role_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">role_uuid</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:user_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must specify a valid user credential UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must specify a valid role UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:role_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">role_uuid</span>), <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-role_members" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">role_members</span><span
|
|
class="method-args">(role_uuid=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="role_members-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1020</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">role_members</span>(<span class="ruby-identifier">role_uuid</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = []
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">role_members</span>(<span class="ruby-identifier">role_uuid</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">role_uuid</span>)
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:user_roles</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:role_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">role_uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_record</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">result</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:user_uuid</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>)
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">the_record</span>[<span class="ruby-value">:user_uuid</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-role_remove_user" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">role_remove_user</span><span
|
|
class="method-args">(role_uuid=nil, credential=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="role_remove_user-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 961</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">role_remove_user</span>(<span class="ruby-identifier">role_uuid</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">role_remove_user</span>(<span class="ruby-identifier">role_uuid</span>, <span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">role_uuid</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:user_roles</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:role_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">role_uuid</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:user_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:user_roles</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:role_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">role_uuid</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:user_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must specify a valid user credential UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must specify a valid role UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:role_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">role_uuid</span>), <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-role_update" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">role_update</span><span
|
|
class="method-args">(role_uuid=nil, data={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="role_update-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 852</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">role_update</span>(<span class="ruby-identifier">role_uuid</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">data</span>={})
|
|
<span class="ruby-comment"># data: :title, :seo</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">role_update</span>(<span class="ruby-identifier">role_uuid</span>,<span class="ruby-identifier">data</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">data</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Update data must be passed in a Hash"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">role_uuid</span>)
|
|
<span class="ruby-identifier">the_title</span> = (<span class="ruby-identifier">data</span>[<span class="ruby-value">:title</span>] <span class="ruby-operator">||</span> <span class="ruby-string">"Member"</span>)
|
|
<span class="ruby-identifier">the_seo</span> = (<span class="ruby-identifier">data</span>[<span class="ruby-value">:seo</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">the_title</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-string">" "</span>, <span class="ruby-string">"_"</span>))
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:roles</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">role_uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:roles</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">role_uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">update</span>({<span class="ruby-value">:title</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_title</span>), <span class="ruby-value">:seo</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_seo</span>), <span class="ruby-value">:version</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:version</span>] <span class="ruby-operator">+</span> <span class="ruby-value">0.0001</span>)})
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">"Attempted to update a non-existent role: #{role_uuid}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must specify a valid role UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:role_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">role_uuid</span>), <span class="ruby-value">:data</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">data</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-search_database" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">search_database</span><span
|
|
class="method-args">(credential=nil, criteria={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="search_database-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 4468</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">search_database</span>(<span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">criteria</span>={})
|
|
<span class="ruby-comment"># Usage: search_database(credential, {:ufs => "the.ufs.code", :properties => [{:the_property => {:equals => value}}]})</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-comment"># criteria[:properties] :</span>
|
|
<span class="ruby-comment"># For all</span>
|
|
<span class="ruby-comment"># {:property_name => {:equals => value}}</span>
|
|
<span class="ruby-comment"># For :element_integer, :element_float, :element_bigdecimal</span>
|
|
<span class="ruby-comment"># {:property_name => {:greater_than => value, :greater_or_equal => value, :less_than => value, :less_or_equal => value}}</span>
|
|
<span class="ruby-comment"># For :element_datetime, Note: if you pass text as a date ::Chronic will be used to parse it.</span>
|
|
<span class="ruby-comment"># {:property_name => {:at => value, :before => value, :at_or_before => value, :after => value, :at_or_after => value, :between => <range-value>}</span>
|
|
<span class="ruby-comment"># For Text, Binary</span>
|
|
<span class="ruby-comment"># {:property_name => {:include => value}}</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-comment"># criteria[:element] :</span>
|
|
<span class="ruby-comment"># similar to criteria[:property] except that the entire table for the type is searched and no property dereferencing needed.</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">result</span> = []
|
|
<span class="ruby-identifier">criterium</span> = []
|
|
<span class="ruby-identifier">criteria_error</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">criteria</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">criteria_error</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">criteria_error</span>
|
|
<span class="ruby-identifier">common_criteria</span> = <span class="ruby-identifier">criteria</span>.<span class="ruby-identifier">clone</span>
|
|
<span class="ruby-identifier">properties</span> = (<span class="ruby-identifier">common_criteria</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-value">:properties</span>) <span class="ruby-operator">||</span> [])
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">properties</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-identifier">criteria_error</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">elements</span> = (<span class="ruby-identifier">common_criteria</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-value">:elements</span>) <span class="ruby-operator">||</span> [])
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">elements</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-identifier">criteria_error</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">criteria_error</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">properties</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">elements</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">criteria_error</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-string">"You MUST select EITHER :properites OR :elements, not both."</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">criteria_error</span>
|
|
<span class="ruby-comment"># Prepare criterium</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">common_criteria</span>[<span class="ruby-value">:select</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">common_criteria</span>[<span class="ruby-value">:select</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-value">:uuid</span>)
|
|
<span class="ruby-identifier">common_criteria</span>[<span class="ruby-value">:select</span>] <span class="ruby-operator"><<</span> <span class="ruby-value">:uuid</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">common_criteria</span>[<span class="ruby-value">:select</span>] = [<span class="ruby-value">:uuid</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">common_criteria</span>[<span class="ruby-value">:ufs</span>]
|
|
<span class="ruby-identifier">criterium</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:ufs</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">common_criteria</span>[<span class="ruby-value">:ufs</span>]}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">common_criteria</span>[<span class="ruby-value">:format</span>]
|
|
<span class="ruby-identifier">criterium</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:format</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">common_criteria</span>[<span class="ruby-value">:format</span>]}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">properties</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">properties</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_property_search</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">criterium</span> <span class="ruby-operator"><<</span> ((<span class="ruby-identifier">common_criteria</span>.<span class="ruby-identifier">clone</span>).<span class="ruby-identifier">merge</span>({<span class="ruby-value">:property</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_property_search</span>}))
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">elements</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">elements</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_element_search</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">criterium</span> <span class="ruby-operator"><<</span> ((<span class="ruby-identifier">common_criteria</span>.<span class="ruby-identifier">clone</span>).<span class="ruby-identifier">merge</span>({<span class="ruby-value">:element</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_element_search</span>}))
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">result_sets</span> = []
|
|
<span class="ruby-comment"># if properties.size == 0 && elements.size == 0</span>
|
|
<span class="ruby-comment"># result_sets << self.uuid_list(credential, criteria)</span>
|
|
<span class="ruby-comment"># else</span>
|
|
<span class="ruby-identifier">criterium</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_criteria</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">result_sets</span> <span class="ruby-operator"><<</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">uuid_list</span>(<span class="ruby-identifier">credential</span>, <span class="ruby-identifier">the_criteria</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># end</span>
|
|
<span class="ruby-identifier">scores</span> = {}
|
|
<span class="ruby-identifier">result_sets</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_result</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">the_result</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_answer</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">scores</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">the_answer</span>[<span class="ruby-value">:uuid</span>])
|
|
<span class="ruby-identifier">scores</span>[(<span class="ruby-identifier">the_answer</span>[<span class="ruby-value">:uuid</span>])] = (<span class="ruby-identifier">scores</span>[(<span class="ruby-identifier">the_answer</span>[<span class="ruby-value">:uuid</span>])] <span class="ruby-operator">+</span> <span class="ruby-value">1</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">scores</span>[(<span class="ruby-identifier">the_answer</span>[<span class="ruby-value">:uuid</span>])] = <span class="ruby-value">1</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">scores</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_uuid</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">scores</span>[(<span class="ruby-identifier">the_uuid</span>)] <span class="ruby-operator">==</span> <span class="ruby-identifier">result_sets</span>.<span class="ruby-identifier">size</span>
|
|
<span class="ruby-identifier">result_sets</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_record</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_record</span>[<span class="ruby-value">:uuid</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">the_uuid</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">the_record</span>
|
|
<span class="ruby-keyword">break</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-serialize" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">serialize</span><span
|
|
class="method-args">()</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
<p>### Various methods Comm objects cannot be serialized - return encoded nil</p>
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="serialize-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 5097</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">serialize</span>()
|
|
<span class="ruby-string">"marshal:BAgw"</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-setting_keys" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">setting_keys</span><span
|
|
class="method-args">()</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
<p>Settings methods</p>
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="setting_keys-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 3480</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">setting_keys</span>()
|
|
<span class="ruby-identifier">result</span> = []
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>()
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>()
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:settings</span>].<span class="ruby-identifier">all</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">the_entry</span>[<span class="ruby-value">:title</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Attempted to access a defunct Database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:setting_key</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">setting_key</span>}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-structural_link" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">structural_link</span><span
|
|
class="method-args">(the_uuid=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="structural_link-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2165</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">structural_link</span>(<span class="ruby-identifier">the_uuid</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-comment"># Review : rewrite - in use</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">the_uuid</span>)
|
|
<span class="ruby-identifier">search_queue</span> = [(<span class="ruby-keyword">self</span>)]
|
|
<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">DB</span>[<span class="ruby-value">:roles</span>].<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_role</span>, <span class="ruby-identifier">the_database</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">search_queue</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">the_database</span>)
|
|
<span class="ruby-identifier">search_queue</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">the_database</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">search_queue</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_database</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">found</span> = <span class="ruby-identifier">the_database</span>.<span class="ruby-identifier">connector</span>()[<span class="ruby-value">:hash_properties</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:element_hash_uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">found</span>
|
|
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:database</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_database</span>, <span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:hash_properties</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">found</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">break</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">found</span> = <span class="ruby-identifier">the_database</span>.<span class="ruby-identifier">connector</span>()[<span class="ruby-value">:hash_properties</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:element_array_uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">found</span>
|
|
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:database</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_database</span>, <span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:hash_properties</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">found</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">break</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">found</span> = <span class="ruby-identifier">the_database</span>.<span class="ruby-identifier">connector</span>()[<span class="ruby-value">:array_elements</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:element_hash_uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">found</span>
|
|
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:database</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_database</span>, <span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:hash_properties</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">found</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">break</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">found</span> = <span class="ruby-identifier">the_database</span>.<span class="ruby-identifier">connector</span>()[<span class="ruby-value">:array_elements</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:element_array_uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">found</span>
|
|
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:database</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_database</span>, <span class="ruby-value">:table</span> <span class="ruby-operator">=></span> <span class="ruby-value">:hash_properties</span>, <span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">found</span>[<span class="ruby-value">:dbid</span>]}
|
|
<span class="ruby-keyword">break</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-structure_attached-3F" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">structure_attached?</span><span
|
|
class="method-args">(the_uuid=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="structure_attached-3F-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2201</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">structure_attached?</span>(<span class="ruby-identifier">the_uuid</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-comment"># Review : rewrite - in use</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">structural_link</span>(<span class="ruby-identifier">the_uuid</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-structure_detach" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">structure_detach</span><span
|
|
class="method-args">(the_uuid=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="structure_detach-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2151</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">structure_detach</span>(<span class="ruby-identifier">the_uuid</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">the_uuid</span>)
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">structural_link</span>(<span class="ruby-identifier">the_uuid</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">record</span>[<span class="ruby-value">:database</span>].<span class="ruby-identifier">connector</span>()[(<span class="ruby-identifier">record</span>[<span class="ruby-value">:table</span>])].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">record</span>[<span class="ruby-value">:dbid</span>]}).<span class="ruby-identifier">update</span>({<span class="ruby-value">:element</span> <span class="ruby-operator">=></span> <span class="ruby-string">"element_boolean"</span>, <span class="ruby-value">:element_boolean</span> <span class="ruby-operator">=></span> <span class="ruby-value">-1</span>, <span class="ruby-value">:element_hash_uuid</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>, <span class="ruby-value">:element_array_uuid</span> <span class="ruby-operator">=></span> <span class="ruby-string">""</span>})
|
|
<span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-sync_export" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">sync_export</span><span
|
|
class="method-args">(credential=nil, uuid_list=[], options={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="sync_export-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 5029</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">sync_export</span>(<span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">uuid_list</span>=[], <span class="ruby-identifier">options</span>={})
|
|
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:formats</span> <span class="ruby-operator">=></span> {}, <span class="ruby-value">:records</span> <span class="ruby-operator">=></span> []}
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">uuid_list</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>, <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedArray</span>)
|
|
<span class="ruby-identifier">uuid_list</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_reference</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">the_uuid</span> = <span class="ruby-identifier">the_reference</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">the_uuid</span>)
|
|
<span class="ruby-identifier">the_object</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">retrieve_by_uuid</span>(<span class="ruby-identifier">the_uuid</span>, <span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_object</span>
|
|
<span class="ruby-identifier">object_record</span> = <span class="ruby-identifier">the_object</span>.<span class="ruby-identifier">export</span>()
|
|
<span class="ruby-identifier">object_record</span>.<span class="ruby-identifier">search</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">item</span>,<span class="ruby-identifier">selector</span>,<span class="ruby-identifier">container</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">selector</span> <span class="ruby-operator">==</span> <span class="ruby-value">:format</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">selector</span> <span class="ruby-operator">==</span> <span class="ruby-value">:constraint</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">item</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">format_uuid</span> = <span class="ruby-identifier">item</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">result</span>[<span class="ruby-value">:formats</span>][(<span class="ruby-identifier">format_uuid</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>)].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">format_sample</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">format_load</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">format_uuid</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>})
|
|
<span class="ruby-identifier">format_sample</span>[<span class="ruby-value">:content</span>] = <span class="ruby-identifier">format_sample</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">gxg_export</span>()
|
|
<span class="ruby-identifier">result</span>[<span class="ruby-value">:formats</span>][(<span class="ruby-identifier">format_uuid</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>)] = <span class="ruby-identifier">format_sample</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>[<span class="ruby-value">:records</span>] <span class="ruby-operator"><<</span> <span class="ruby-identifier">object_record</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-sync_import" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">sync_import</span><span
|
|
class="method-args">(credential=nil, the_records={:formats => {}, :records => []}, options={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="sync_import-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 5059</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">sync_import</span>(<span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">the_records</span>={<span class="ruby-value">:formats</span> <span class="ruby-operator">=></span> {}, <span class="ruby-value">:records</span> <span class="ruby-operator">=></span> []}, <span class="ruby-identifier">options</span>={})
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_records</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_records</span>[<span class="ruby-value">:formats</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">op_frame</span> = {<span class="ruby-value">:operation</span> <span class="ruby-operator">=></span> <span class="ruby-value">:merge_format</span>, <span class="ruby-value">:data</span> <span class="ruby-operator">=></span> []}
|
|
<span class="ruby-identifier">the_records</span>[<span class="ruby-value">:formats</span>].<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_uuid</span>, <span class="ruby-identifier">the_format_record</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-comment"># gxg_import format content prior to sync update op</span>
|
|
<span class="ruby-identifier">the_format_record</span>[<span class="ruby-value">:content</span>] = <span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>.<span class="ruby-identifier">gxg_import</span>(<span class="ruby-identifier">the_format_record</span>[<span class="ruby-value">:content</span>])
|
|
<span class="ruby-identifier">op_frame</span>[<span class="ruby-value">:data</span>] <span class="ruby-operator"><<</span> <span class="ruby-identifier">the_format_record</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">op_frame</span>[<span class="ruby-value">:data</span>].<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">synchronize_records</span>([(<span class="ruby-identifier">op_frame</span>)],<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_records</span>[<span class="ruby-value">:records</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_records</span>[<span class="ruby-value">:records</span>].<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">synchronize_records</span>([{<span class="ruby-value">:operation</span> <span class="ruby-operator">=></span> <span class="ruby-value">:merge</span>, <span class="ruby-value">:data</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_records</span>[<span class="ruby-value">:records</span>]}],<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-synchronize_records" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">synchronize_records</span><span
|
|
class="method-args">(the_records=[], credential=nil, options={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
<p>Synchronize records: (and supports)</p>
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="synchronize_records-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 4571</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">synchronize_records</span>(<span class="ruby-identifier">the_records</span>=[], <span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={})
|
|
<span class="ruby-comment"># Review : rewrite for new architecture.</span>
|
|
<span class="ruby-identifier">result</span> = {<span class="ruby-value">:status</span> <span class="ruby-operator">=></span> <span class="ruby-value">:completed</span>}
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">total_records_processed</span> = <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">total_formats_processed</span> = <span class="ruby-value">0</span>
|
|
<span class="ruby-comment"># List of format uuids needed from the OTHER database to complete the sync.</span>
|
|
<span class="ruby-identifier">formats_needed</span> = []
|
|
<span class="ruby-comment"># List of format records we are sharing.</span>
|
|
<span class="ruby-identifier">formats_provided</span> = []
|
|
<span class="ruby-comment"># records on THIS database that are higher version than submitted version.</span>
|
|
<span class="ruby-identifier">updates_provided</span> = []
|
|
<span class="ruby-comment"># In case something goes horribly wrong:</span>
|
|
<span class="ruby-identifier">clean_up_list</span> = []
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You MUST provide a valid UUID as credential."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_records</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_records</span>.<span class="ruby-identifier">base64?</span>
|
|
<span class="ruby-identifier">the_records</span> = <span class="ruby-identifier">the_records</span>.<span class="ruby-identifier">decode64</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_records</span>.<span class="ruby-identifier">json?</span>
|
|
<span class="ruby-identifier">the_records</span> = <span class="ruby-operator">::</span><span class="ruby-constant">JSON</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">the_records</span>,{<span class="ruby-value">:symbolize_names</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_records</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">the_records</span> = [(<span class="ruby-identifier">the_records</span>)]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">the_records</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You MUST provide: Base64, JSON, Hash, or Array of operation Hashes."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># Process each operation in the_records, data is inline under :data key.</span>
|
|
<span class="ruby-identifier">the_records</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_operation</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_operation</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-keyword">if</span> [<span class="ruby-value">:merge</span>, <span class="ruby-value">:delete</span>, <span class="ruby-value">:fetch</span>, <span class="ruby-value">:merge_format</span>, <span class="ruby-value">:delete_format</span>, <span class="ruby-value">:formats_provided</span>, <span class="ruby-value">:formats_needed</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:operation</span>])
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:operation</span>]
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:merge</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Attempted to alter a read-only database."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">manifest</span> = []
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-identifier">manifest</span> = <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">manifest</span> = [(<span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>])]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Invalid record sepecifier or manifiest (ignoring): #{the_operation[:data].inspect}"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">manifest</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:format</span>]
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">format_list</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">entry</span>[<span class="ruby-value">:format</span>])}).<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">"Attempted to merge with unknown :format #{entry[:format].inspect}. Synchronize formats first, then records."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># fetch existing:</span>
|
|
<span class="ruby-comment"># if existing - compare versions - if greater provide, if lesser update, else add to db.</span>
|
|
<span class="ruby-identifier">queue</span> = [(<span class="ruby-identifier">entry</span>)]
|
|
<span class="ruby-keyword">while</span> <span class="ruby-identifier">queue</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span> <span class="ruby-keyword">do</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-identifier">queue</span>.<span class="ruby-identifier">shift</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">record</span>[<span class="ruby-value">:uuid</span>])
|
|
<span class="ruby-identifier">formatting</span> = {<span class="ruby-value">:format</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">nil</span>, <span class="ruby-value">:constraint</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">nil</span>}
|
|
<span class="ruby-identifier">existing</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">retrieve_by_uuid</span>(<span class="ruby-identifier">record</span>[<span class="ruby-value">:uuid</span>], <span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">existing</span>
|
|
<span class="ruby-comment"># Note: since there is no way to create a Persisted Object with a given UUID, this method is used to create the object: object will be updated later.</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">record</span>[<span class="ruby-value">:type</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_sym</span>)].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-comment"># This prevents no-element-retrieved-due-to-permission issue causing an 'add duplicate uuid object' situation:</span>
|
|
<span class="ruby-identifier">dbid</span> = <span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">record</span>[<span class="ruby-value">:type</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_sym</span>)].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:title</span> <span class="ruby-operator">=></span> <span class="ruby-string">"Merged Persisted Object"</span>})
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">assign_element_permission</span>(<span class="ruby-identifier">record</span>[<span class="ruby-value">:type</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_sym</span>,<span class="ruby-identifier">dbid</span>,<span class="ruby-identifier">credential</span>,{<span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:move</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>})
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">existing</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">retrieve_by_uuid</span>(<span class="ruby-identifier">record</span>[<span class="ruby-value">:uuid</span>], <span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">existing</span>
|
|
<span class="ruby-comment"># ### Compare versions</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">existing</span>.<span class="ruby-identifier">version</span> <span class="ruby-operator">></span> <span class="ruby-identifier">record</span>[<span class="ruby-value">:version</span>]
|
|
<span class="ruby-identifier">action</span> = <span class="ruby-value">:provide</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">existing</span>.<span class="ruby-identifier">version</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">record</span>[<span class="ruby-value">:version</span>]
|
|
<span class="ruby-identifier">action</span> = <span class="ruby-value">:update</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">action</span> = <span class="ruby-value">:ignore</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># ### Take Action</span>
|
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">action</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:provide</span>
|
|
<span class="ruby-identifier">updates_provided</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:operation</span> <span class="ruby-operator">=></span> <span class="ruby-value">:merge</span>, <span class="ruby-value">:data</span> <span class="ruby-operator">=></span> [(<span class="ruby-identifier">existing</span>.<span class="ruby-identifier">export</span>())]}
|
|
<span class="ruby-identifier">existing</span>.<span class="ruby-identifier">deactivate</span>
|
|
<span class="ruby-identifier">total_records_processed</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:update</span>
|
|
<span class="ruby-comment"># ### Prelude</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>[<span class="ruby-value">:format</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">formatting</span>[<span class="ruby-value">:format</span>] = <span class="ruby-identifier">record</span>[<span class="ruby-value">:format</span>].<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>[<span class="ruby-value">:constraint</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">formatting</span>[<span class="ruby-value">:constraint</span>] = <span class="ruby-identifier">record</span>[<span class="ruby-value">:constraint</span>].<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">clean_up_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">existing</span>
|
|
<span class="ruby-identifier">existing</span>.<span class="ruby-identifier">get_reservation</span>()
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">existing</span>.<span class="ruby-identifier">write_permission?</span>() <span class="ruby-operator">&&</span> <span class="ruby-identifier">existing</span>.<span class="ruby-identifier">write_reserved?</span>()
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Failed to secure write permission and write reservation for this credential."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">existing</span>.<span class="ruby-identifier">title</span> = (<span class="ruby-identifier">record</span>[<span class="ruby-value">:title</span>])
|
|
<span class="ruby-comment"># ### Update Elements</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-comment"># Review : What to do / how to handle formatted existing Hashes??</span>
|
|
<span class="ruby-identifier">record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">each_pair</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">property</span>, <span class="ruby-identifier">element_record</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">element_record</span>[<span class="ruby-value">:uuid</span>]
|
|
<span class="ruby-comment"># ### Element is Hash or Array</span>
|
|
<span class="ruby-identifier">element</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">retrieve_by_uuid</span>(<span class="ruby-identifier">element_record</span>[<span class="ruby-value">:uuid</span>], <span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">element</span>
|
|
<span class="ruby-comment"># ### Create blank element record and retrieve</span>
|
|
<span class="ruby-comment"># Note: since there is no way to create a Persisted Object with a given UUID, this method is used to create the object: object will be updated later.</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">element_record</span>[<span class="ruby-value">:type</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_sym</span>)].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">element_record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-comment"># This prevents no-element-retrieved-due-to-permission issue causing an 'add duplicate uuid object' situation:</span>
|
|
<span class="ruby-identifier">dbid</span> = <span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">element_record</span>[<span class="ruby-value">:type</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_sym</span>)].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">element_record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:title</span> <span class="ruby-operator">=></span> <span class="ruby-string">"Merged Persisted Object"</span>})
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">assign_element_permission</span>(<span class="ruby-identifier">element_record</span>[<span class="ruby-value">:type</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_sym</span>,<span class="ruby-identifier">dbid</span>,<span class="ruby-identifier">credential</span>,{<span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:move</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>})
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">element</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">retrieve_by_uuid</span>(<span class="ruby-identifier">element_record</span>[<span class="ruby-value">:uuid</span>], <span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">element</span>
|
|
<span class="ruby-comment"># ### Ensure Element Linking</span>
|
|
<span class="ruby-comment"># Review : Warning - absence of a :write permission can bugger this up.</span>
|
|
<span class="ruby-identifier">clean_up_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">element</span>
|
|
<span class="ruby-identifier">element</span>.<span class="ruby-identifier">get_reservation</span>()
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">element</span>.<span class="ruby-identifier">write_permission?</span>() <span class="ruby-operator">&&</span> <span class="ruby-identifier">element</span>.<span class="ruby-identifier">write_reserved?</span>()
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Failed to secure write permission and write reservation for this credential."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">existing</span>[(<span class="ruby-identifier">property</span>)] = <span class="ruby-identifier">element</span>
|
|
<span class="ruby-comment"># element.deactivate ??</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># Note: return to processing queue to set its elements</span>
|
|
<span class="ruby-identifier">queue</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">element_record</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-comment"># ### Base Element</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">existing</span>.<span class="ruby-identifier">version</span>(<span class="ruby-identifier">property</span>) <span class="ruby-operator">></span> <span class="ruby-identifier">element_record</span>[<span class="ruby-value">:version</span>]
|
|
<span class="ruby-identifier">the_content</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">element_record</span>[<span class="ruby-value">:type</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_boolean</span>, <span class="ruby-value">:element_integer</span>, <span class="ruby-value">:element_float</span>
|
|
<span class="ruby-identifier">the_content</span> = <span class="ruby-identifier">element_record</span>[<span class="ruby-value">:content</span>]
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_bigdecimal</span>
|
|
<span class="ruby-identifier">the_content</span> = <span class="ruby-operator">::</span><span class="ruby-constant">BigDecimal</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">element_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">to_s</span>)
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_datetime</span>
|
|
<span class="ruby-identifier">the_content</span> = <span class="ruby-operator">::</span><span class="ruby-constant">DateTime</span><span class="ruby-operator">::</span><span class="ruby-identifier">parse</span>(<span class="ruby-identifier">element_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">to_s</span>)
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_text</span>
|
|
<span class="ruby-identifier">the_content</span> = <span class="ruby-identifier">element_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_binary</span>
|
|
<span class="ruby-identifier">the_content</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">ByteArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">element_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">decode64</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">existing</span>[(<span class="ruby-identifier">property</span>)] = <span class="ruby-identifier">the_content</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-identifier">record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">each_with_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">element_record</span>, <span class="ruby-identifier">indexer</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">element_record</span>[<span class="ruby-value">:uuid</span>]
|
|
<span class="ruby-comment"># ### Element is Hash or Array</span>
|
|
<span class="ruby-identifier">element</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">retrieve_by_uuid</span>(<span class="ruby-identifier">element_record</span>[<span class="ruby-value">:uuid</span>], <span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">element</span>
|
|
<span class="ruby-comment"># ### Create blank element record and retrieve</span>
|
|
<span class="ruby-comment"># Note: since there is no way to create a Persisted Object with a given UUID, this method is used to create the object: object will be updated later.</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">element_record</span>[<span class="ruby-value">:type</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_sym</span>)].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">element_record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-comment"># This prevents no-element-retrieved-due-to-permission issue causing an 'add duplicate uuid object' situation:</span>
|
|
<span class="ruby-identifier">dbid</span> = <span class="ruby-ivar">@connector</span>[(<span class="ruby-identifier">element_record</span>[<span class="ruby-value">:type</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_sym</span>)].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">element_record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:title</span> <span class="ruby-operator">=></span> <span class="ruby-string">"Merged Persisted Object"</span>})
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">assign_element_permission</span>(<span class="ruby-identifier">element_record</span>[<span class="ruby-value">:type</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_sym</span>,<span class="ruby-identifier">dbid</span>,<span class="ruby-identifier">credential</span>,{<span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:move</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">true</span>})
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">element</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">retrieve_by_uuid</span>(<span class="ruby-identifier">element_record</span>[<span class="ruby-value">:uuid</span>], <span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">element</span>
|
|
<span class="ruby-comment"># ### Ensure Element Linking</span>
|
|
<span class="ruby-comment"># Review : Warning - absence of a :write permission can bugger this up.</span>
|
|
<span class="ruby-identifier">clean_up_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">element</span>
|
|
<span class="ruby-identifier">element</span>.<span class="ruby-identifier">get_reservation</span>()
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">element</span>.<span class="ruby-identifier">write_permission?</span>() <span class="ruby-operator">&&</span> <span class="ruby-identifier">element</span>.<span class="ruby-identifier">write_reserved?</span>()
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Failed to secure write permission and write reservation for this credential."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">existing</span>[(<span class="ruby-identifier">indexer</span>)] = <span class="ruby-identifier">element</span>
|
|
<span class="ruby-comment"># element.deactivate ??</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># Note: return to processing queue to set its elements</span>
|
|
<span class="ruby-identifier">queue</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">element_record</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-comment"># ### Base Element</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">existing</span>.<span class="ruby-identifier">version</span>(<span class="ruby-identifier">indexer</span>) <span class="ruby-operator">></span> <span class="ruby-identifier">element_record</span>[<span class="ruby-value">:version</span>]
|
|
<span class="ruby-identifier">the_content</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">element_record</span>[<span class="ruby-value">:type</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_boolean</span>, <span class="ruby-value">:element_integer</span>, <span class="ruby-value">:element_float</span>
|
|
<span class="ruby-identifier">the_content</span> = <span class="ruby-identifier">element_record</span>[<span class="ruby-value">:content</span>]
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_bigdecimal</span>
|
|
<span class="ruby-identifier">the_content</span> = <span class="ruby-operator">::</span><span class="ruby-constant">BigDecimal</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">element_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">to_s</span>)
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_datetime</span>
|
|
<span class="ruby-identifier">the_content</span> = <span class="ruby-operator">::</span><span class="ruby-constant">DateTime</span><span class="ruby-operator">::</span><span class="ruby-identifier">parse</span>(<span class="ruby-identifier">element_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">to_s</span>)
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_text</span>
|
|
<span class="ruby-identifier">the_content</span> = <span class="ruby-identifier">element_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_binary</span>
|
|
<span class="ruby-identifier">the_content</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">ByteArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">element_record</span>[<span class="ruby-value">:content</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">decode64</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">existing</span>[(<span class="ruby-identifier">indexer</span>)] = <span class="ruby-identifier">the_content</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># ### Set Fromatting / Constraints</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">existing</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedHash</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">formatting</span>[<span class="ruby-value">:format</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">existing</span>.<span class="ruby-identifier">format</span> = (<span class="ruby-identifier">formatting</span>[<span class="ruby-value">:format</span>])
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">existing</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedArray</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">formatting</span>[<span class="ruby-value">:constraint</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">existing</span>.<span class="ruby-identifier">constraint</span> = (<span class="ruby-identifier">formatting</span>[<span class="ruby-value">:constraint</span>])
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># ### Conclude Existing</span>
|
|
<span class="ruby-identifier">existing</span>.<span class="ruby-identifier">version</span> = (<span class="ruby-identifier">record</span>[<span class="ruby-value">:version</span>])
|
|
<span class="ruby-identifier">existing</span>.<span class="ruby-identifier">save</span>
|
|
<span class="ruby-identifier">existing</span>.<span class="ruby-identifier">deactivate</span>
|
|
<span class="ruby-identifier">total_records_processed</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:delete</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Attempted to alter a read-only database."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">manifest</span> = []
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-identifier">manifest</span> = <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">manifest</span> = [(<span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>])]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Invalid record sepecifier or manifiest (ignoring): #{the_operation[:data].inspect}"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">manifest</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">entry</span>[<span class="ruby-value">:uuid</span>])
|
|
<span class="ruby-identifier">existing</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">retrieve_by_uuid</span>(<span class="ruby-identifier">entry</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_sym</span>, <span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">existing</span>
|
|
<span class="ruby-identifier">the_address</span> = <span class="ruby-identifier">existing</span>.<span class="ruby-identifier">db_address</span>()
|
|
<span class="ruby-identifier">existing</span>.<span class="ruby-identifier">deactivate</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">element_destroy</span>(<span class="ruby-identifier">credential</span>,<span class="ruby-identifier">the_address</span>[<span class="ruby-value">:table</span>],<span class="ruby-identifier">the_address</span>[<span class="ruby-value">:dbid</span>])
|
|
<span class="ruby-identifier">total_records_processed</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Record #{entry[:uuid].inspect} was not deleted."</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Record #{entry[:uuid].inspect} was not found."</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Invalid UUID specifier (ignoring): #{entry[:uuid].inspect}"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:fetch</span>
|
|
<span class="ruby-comment"># wrap export record in a :merge operation and add to updates_provided.</span>
|
|
<span class="ruby-identifier">manifest</span> = []
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-identifier">manifest</span> = <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">manifest</span> = [(<span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>])]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Invalid record sepecifier or manifiest (ignoring): #{the_operation[:data].inspect}"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">manifest</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">entry</span>[<span class="ruby-value">:uuid</span>])
|
|
<span class="ruby-identifier">existing</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">retrieve_by_uuid</span>(<span class="ruby-identifier">entry</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_sym</span>, <span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">existing</span>
|
|
<span class="ruby-identifier">updates_provided</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:operation</span> <span class="ruby-operator">=></span> <span class="ruby-value">:merge</span>, <span class="ruby-value">:data</span> <span class="ruby-operator">=></span> [(<span class="ruby-identifier">existing</span>.<span class="ruby-identifier">export</span>())]}
|
|
<span class="ruby-identifier">existing</span>.<span class="ruby-identifier">deactivate</span>
|
|
<span class="ruby-identifier">total_records_processed</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Record #{entry[:uuid].inspect} was not found."</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Invalid UUID specifier (ignoring): #{entry[:uuid].inspect}"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:merge_format</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Attempted to alter a read-only database."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># add format record if missing - check for existing, and provide if ours is newer.</span>
|
|
<span class="ruby-identifier">manifest</span> = []
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-identifier">manifest</span> = <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">manifest</span> = [(<span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>])]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Invalid record sepecifier or manifiest (ignoring): #{the_operation[:data].inspect}"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">manifest</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">entry</span>[<span class="ruby-value">:uuid</span>])
|
|
<span class="ruby-identifier">existing</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">format_load</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_sym</span>})
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">existing</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">existing</span>[<span class="ruby-value">:version</span>] <span class="ruby-operator"><</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:version</span>]
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">format_update</span>(<span class="ruby-identifier">entry</span>)
|
|
<span class="ruby-identifier">total_formats_processed</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Could not update Format #{entry[:uuid].inspect}"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">existing</span>[<span class="ruby-value">:version</span>] <span class="ruby-operator">></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:version</span>]
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">formats_provided</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">existing</span>)
|
|
<span class="ruby-identifier">formats_provided</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">existing</span>
|
|
<span class="ruby-identifier">total_formats_processed</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">format_create</span>(<span class="ruby-identifier">entry</span>)
|
|
<span class="ruby-identifier">total_formats_processed</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Could not create Format #{entry[:uuid].inspect}"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Invalid Format specifier (ignoring): #{entry[:uuid].inspect}"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:delete_format</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Attempted to alter a read-only database."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># If the format is in use, log_warn that you're ignoring the directive.</span>
|
|
<span class="ruby-identifier">manifest</span> = []
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-identifier">manifest</span> = <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">manifest</span> = [(<span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>])]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Invalid record sepecifier or manifiest (ignoring): #{the_operation[:data].inspect}"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">manifest</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">entry</span>[<span class="ruby-value">:uuid</span>])
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:format</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">count</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">&&</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_array</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:constraint</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">count</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
<span class="ruby-comment"># Not in use, safe to delete</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">format_destroy</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_sym</span>})
|
|
<span class="ruby-identifier">total_formats_processed</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Format #{entry[:uuid].inspect} in use (ignorning)."</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Invalid format specifier on :delete directive (ignorning): #{entry[:uuid].inspect}"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:formats_provided</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Attempted to alter a read-only database."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># compare uuids against db-installed formats and add to formats_needed if missing.</span>
|
|
<span class="ruby-identifier">manifest</span> = []
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-identifier">manifest</span> = <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">manifest</span> = [(<span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>])]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Invalid record sepecifier or manifiest (ignoring): #{the_operation[:data].inspect}"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">manifest</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">entry</span>[<span class="ruby-value">:uuid</span>])
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">format_list</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">entry</span>[<span class="ruby-value">:uuid</span>])}).<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">record</span> = {<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">entry</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_sym</span>)}
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">formats_needed</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">record</span>)
|
|
<span class="ruby-identifier">formats_needed</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">total_formats_processed</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Invalid Format specifier (ignoring): #{entry[:uuid].inspect}"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:formats_needed</span>
|
|
<span class="ruby-comment"># Gather up existing format records to share.</span>
|
|
<span class="ruby-identifier">manifest</span> = []
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-identifier">manifest</span> = <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">manifest</span> = [(<span class="ruby-identifier">the_operation</span>[<span class="ruby-value">:data</span>])]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Invalid record sepecifier or manifiest (ignoring): #{the_operation[:data].inspect}"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">manifest</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">entry</span>[<span class="ruby-value">:uuid</span>])
|
|
<span class="ruby-identifier">existing</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">format_load</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_sym</span>})
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">existing</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">formats_provided</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">existing</span>)
|
|
<span class="ruby-identifier">formats_provided</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">existing</span>
|
|
<span class="ruby-identifier">total_formats_processed</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Invalid Format specifier (ignoring): #{entry[:uuid].inspect}"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Invalid operation (ignoring): #{the_operation[:operation].inspect}"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">"Invalid formatted operation passed (MUST be a Hash): #{the_operation.inspect}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Attempted to access a defunct database."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">clean_up_list</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_object</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_object</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-identifier">the_object</span>.<span class="ruby-identifier">release_reservation</span>()
|
|
<span class="ruby-identifier">the_object</span>.<span class="ruby-identifier">deactivate</span>()
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>[<span class="ruby-value">:status</span>] = <span class="ruby-value">:failed</span>
|
|
<span class="ruby-comment">#log_error({:error => the_error, :parameters => {:records => (the_records), :options => (options)}})</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>[<span class="ruby-value">:formats_needed</span>] = <span class="ruby-identifier">formats_needed</span>
|
|
<span class="ruby-identifier">result</span>[<span class="ruby-value">:formats_provided</span>] = <span class="ruby-identifier">formats_provided</span>
|
|
<span class="ruby-identifier">result</span>[<span class="ruby-value">:record_updates</span>] = <span class="ruby-identifier">updates_provided</span>
|
|
<span class="ruby-identifier">result</span>[<span class="ruby-value">:records_processed</span>] = <span class="ruby-identifier">total_records_processed</span>
|
|
<span class="ruby-identifier">result</span>[<span class="ruby-value">:formats_processed</span>] = <span class="ruby-identifier">total_formats_processed</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-to_uri" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">to_uri</span><span
|
|
class="method-args">()</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="to_uri-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 427</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">to_uri</span>()
|
|
<span class="ruby-operator">::</span><span class="ruby-constant">URI</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-ivar">@url</span>.<span class="ruby-identifier">to_s</span>)
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-try_persist" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">try_persist</span><span
|
|
class="method-args">(the_object=nil, credential=nil, options={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="try_persist-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 2659</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">try_persist</span>(<span class="ruby-identifier">the_object</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">options</span>={})
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_object</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedHash</span>, <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">PersistedArray</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">the_object</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply a credential (36 character limit) as a String or Symbol"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">options</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply persisting options as a Hash"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">table</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_table_for_instance</span>(<span class="ruby-identifier">the_object</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">table</span> <span class="ruby-operator">==</span> <span class="ruby-value">:unspecified</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You provided an object that cannot be persisted."</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> [<span class="ruby-value">:element_hash</span>, <span class="ruby-value">:element_array</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">table</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">iterative_persist</span>(<span class="ruby-identifier">the_object</span>, <span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">the_object</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:object</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_object</span>, <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>, <span class="ruby-value">:options</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">options</span>}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-update_vfs_permission" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">update_vfs_permission</span><span
|
|
class="method-args">(file_id=nil, credential=nil, permission={:execute => false, :rename => false, :move => false, :destroy => false, :create => false, :write => false, :read => false})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="update_vfs_permission-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1814</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">update_vfs_permission</span>(<span class="ruby-identifier">file_id</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">permission</span>={<span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:move</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">false</span>})
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database inactive"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">file_id</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"file_id must be specified with a String"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">permission</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"permission must be specified with a Hash"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must specify a valid credential UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:file_permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:file_id</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">file_id</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">update</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-identifier">dbid</span> = <span class="ruby-identifier">record</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-value">:dbid</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">update</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-identifier">dbid</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-identifier">record</span> = {<span class="ruby-value">:file_id</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">file_id</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:execute</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:rename</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:move</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:destroy</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:create</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:write</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>, <span class="ruby-value">:read</span> <span class="ruby-operator">=></span> <span class="ruby-value">0</span>}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">permission</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_permission_key</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">permission</span>[(<span class="ruby-identifier">the_permission_key</span>)] <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
|
|
<span class="ruby-identifier">record</span>[(<span class="ruby-identifier">the_permission_key</span>)] = <span class="ruby-value">1</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">record</span>[(<span class="ruby-identifier">the_permission_key</span>)] = <span class="ruby-value">0</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">update</span> <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:file_permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:dbid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">dbid</span>}).<span class="ruby-identifier">update</span>(<span class="ruby-identifier">record</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:file_permissions</span>].<span class="ruby-identifier">insert</span>(<span class="ruby-identifier">record</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:file_id</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">file_id</span>), <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-user_create" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">user_create</span><span
|
|
class="method-args">(the_user_id="", the_password="", use_credential=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="user_create-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 581</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">user_create</span>(<span class="ruby-identifier">the_user_id</span>=<span class="ruby-string">""</span>, <span class="ruby-identifier">the_password</span>=<span class="ruby-string">""</span>, <span class="ruby-identifier">use_credential</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">user_create</span>(<span class="ruby-identifier">the_user_id</span>, <span class="ruby-identifier">the_password</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_user_id</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator"><=</span> <span class="ruby-value">256</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_password</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">user_id_available?</span>(<span class="ruby-identifier">the_user_id</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">use_credential</span>)
|
|
<span class="ruby-identifier">the_uuid</span> = <span class="ruby-identifier">use_credential</span>.<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-keyword">if</span> (<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:users</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"That credential UUID is already in use"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">the_uuid</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>()
|
|
<span class="ruby-keyword">while</span> (<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:users</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_uuid</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>)
|
|
<span class="ruby-identifier">the_uuid</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">uuid_generate</span>()
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">salt</span> = <span class="ruby-operator">::</span><span class="ruby-constant">SecureRandom</span>.<span class="ruby-identifier">base64</span>(<span class="ruby-value">24</span>)
|
|
<span class="ruby-identifier">pbkdf2</span> = <span class="ruby-operator">::</span><span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">PKCS5</span><span class="ruby-operator">::</span><span class="ruby-identifier">pbkdf2_hmac_sha1</span>(<span class="ruby-identifier">the_password</span>, <span class="ruby-identifier">salt</span>, <span class="ruby-value">1000</span>, <span class="ruby-value">24</span>)
|
|
<span class="ruby-identifier">the_pass_hash</span> = [<span class="ruby-identifier">salt</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Base64</span>.<span class="ruby-identifier">strict_encode64</span>(<span class="ruby-identifier">pbkdf2</span>)].<span class="ruby-identifier">join</span>(<span class="ruby-string">"\t"</span>)
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:users</span>].<span class="ruby-identifier">insert</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_uuid</span>), <span class="ruby-value">:user_id</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_user_id</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:password_hash</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_pass_hash</span>)})
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">"UserID not available: #{the_user_id}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"Empty password not supported"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">"Oversized UserID attempted: #{the_user_id}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:user_id</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_user_id</span>}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-user_credential" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">user_credential</span><span
|
|
class="method-args">(the_user_id="", the_password="")</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="user_credential-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 543</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">user_credential</span>(<span class="ruby-identifier">the_user_id</span>=<span class="ruby-string">""</span>, <span class="ruby-identifier">the_password</span>=<span class="ruby-string">""</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">user_credential</span>(<span class="ruby-identifier">the_user_id</span>, <span class="ruby-identifier">the_password</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_user_id</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator"><=</span> <span class="ruby-value">256</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_password</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:users</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:uuid</span>, <span class="ruby-value">:user_id</span>, <span class="ruby-value">:password_hash</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:user_id</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_user_id</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">salt</span> = <span class="ruby-identifier">record</span>[<span class="ruby-value">:password_hash</span>].<span class="ruby-identifier">split</span>(<span class="ruby-string">"\t"</span>)[<span class="ruby-value">0</span>].<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-identifier">pbkdf2</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Base64</span>.<span class="ruby-identifier">decode64</span>(<span class="ruby-identifier">record</span>[<span class="ruby-value">:password_hash</span>].<span class="ruby-identifier">split</span>(<span class="ruby-string">"\t"</span>)[<span class="ruby-value">1</span>].<span class="ruby-identifier">to_s</span>)
|
|
<span class="ruby-identifier">tester</span> = <span class="ruby-operator">::</span><span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">PKCS5</span><span class="ruby-operator">::</span><span class="ruby-identifier">pbkdf2_hmac_sha1</span>(<span class="ruby-identifier">the_password</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-identifier">salt</span>, <span class="ruby-value">1000</span>, <span class="ruby-identifier">pbkdf2</span>.<span class="ruby-identifier">length</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">pbkdf2</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">tester</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">record</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Password attempt invalid for #{the_user_id}"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">"UserID not found: #{the_user_id}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Empty password not supported"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">"Oversized UserID attempted: #{the_user_id}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:user_id</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_user_id</span>}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-user_destroy" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">user_destroy</span><span
|
|
class="method-args">(credential=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="user_destroy-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 707</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">user_destroy</span>(<span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">user_destroy</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:users</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">the_list</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_list</span>()
|
|
<span class="ruby-identifier">the_list</span> <span class="ruby-operator"><<</span> (<span class="ruby-keyword">self</span>)
|
|
<span class="ruby-identifier">the_list</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_db</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">the_db</span>.<span class="ruby-identifier">connector</span>()[<span class="ruby-value">:permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-identifier">the_db</span>.<span class="ruby-identifier">connector</span>()[<span class="ruby-value">:user_roles</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:user_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:users</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">delete</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">"Invalid credential argument: #{credential}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-user_exist-3F" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">user_exist?</span><span
|
|
class="method-args">(the_user_id)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="user_exist-3F-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 513</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">user_exist?</span>(<span class="ruby-identifier">the_user_id</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">user_exist?</span>(<span class="ruby-identifier">the_user_id</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">the_user_id</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:users</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_user_id</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_user_id</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator"><=</span> <span class="ruby-value">256</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:users</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:user_id</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_user_id</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">"Oversized UserID attempted: #{the_user_id}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:user_id</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_user_id</span>}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-user_fetch" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">user_fetch</span><span
|
|
class="method-args">(search_options={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="user_fetch-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 740</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">user_fetch</span>(<span class="ruby-identifier">search_options</span>={})
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">user_fetch</span>(<span class="ruby-identifier">search_options</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:users</span>].<span class="ruby-identifier">filter</span>(<span class="ruby-identifier">search_options</span>).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-user_id_available-3F" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">user_id_available?</span><span
|
|
class="method-args">(the_user_id)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="user_id_available-3F-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 489</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">user_id_available?</span>(<span class="ruby-identifier">the_user_id</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">user_id_available?</span>(<span class="ruby-identifier">the_user_id</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_user_id</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator"><=</span> <span class="ruby-value">256</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:users</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:user_id</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_user_id</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">count</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">"Oversized UserID attempted: #{the_user_id}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:user_id</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_user_id</span>}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-user_manifest" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">user_manifest</span><span
|
|
class="method-args">(include_password=false)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
<p>User, Role, and Group methods</p>
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="user_manifest-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 464</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">user_manifest</span>(<span class="ruby-identifier">include_password</span>=<span class="ruby-keyword">false</span>)
|
|
<span class="ruby-identifier">result</span> = []
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">user_manifest</span>(<span class="ruby-identifier">include_password</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">include_password</span> <span class="ruby-operator">==</span> <span class="ruby-keyword">true</span>
|
|
<span class="ruby-identifier">dataset</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:users</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:uuid</span>, <span class="ruby-value">:user_id</span>, <span class="ruby-value">:password_hash</span>, <span class="ruby-value">:version</span>).<span class="ruby-identifier">all</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">dataset</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:users</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:uuid</span>, <span class="ruby-value">:user_id</span>, <span class="ruby-value">:version</span>).<span class="ruby-identifier">all</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">dataset</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-user_roles" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">user_roles</span><span
|
|
class="method-args">(credential=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="user_roles-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 758</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">user_roles</span>(<span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = []
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">user_roles</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">memberships</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:user_roles</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:role_uuid</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:user_uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>)})
|
|
<span class="ruby-identifier">pull_list</span> = []
|
|
<span class="ruby-identifier">memberships</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">record</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">pull_list</span>.<span class="ruby-identifier">find_index</span>(<span class="ruby-identifier">record</span>[<span class="ruby-value">:role_uuid</span>].<span class="ruby-identifier">to_sym</span>)
|
|
<span class="ruby-identifier">pull_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">record</span>[<span class="ruby-value">:role_uuid</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">pull_list</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">role_uuid</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:roles</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">role_uuid</span>.<span class="ruby-identifier">to_s</span>)})
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> {<span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">role_uuid</span>), <span class="ruby-value">:title</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:title</span>]), <span class="ruby-value">:seo</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:seo</span>])}
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply a valid user credential (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-user_set_password" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">user_set_password</span><span
|
|
class="method-args">(credential=nil, old_password="", new_password="")</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="user_set_password-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 662</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">user_set_password</span>(<span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">old_password</span>=<span class="ruby-string">""</span>, <span class="ruby-identifier">new_password</span>=<span class="ruby-string">""</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">user_set_password</span>(<span class="ruby-identifier">credential</span>, <span class="ruby-identifier">old_password</span>, <span class="ruby-identifier">new_password</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">new_password</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:users</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:users</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">user_credential</span>(<span class="ruby-identifier">record</span>[<span class="ruby-value">:user_id</span>], <span class="ruby-identifier">old_password</span>).<span class="ruby-identifier">to_s</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-identifier">salt</span> = <span class="ruby-operator">::</span><span class="ruby-constant">SecureRandom</span>.<span class="ruby-identifier">base64</span>(<span class="ruby-value">24</span>)
|
|
<span class="ruby-identifier">pbkdf2</span> = <span class="ruby-operator">::</span><span class="ruby-constant">OpenSSL</span><span class="ruby-operator">::</span><span class="ruby-constant">PKCS5</span><span class="ruby-operator">::</span><span class="ruby-identifier">pbkdf2_hmac_sha1</span>(<span class="ruby-identifier">new_password</span>, <span class="ruby-identifier">salt</span>, <span class="ruby-value">1000</span>, <span class="ruby-value">24</span>)
|
|
<span class="ruby-identifier">the_pass_hash</span> = [<span class="ruby-identifier">salt</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Base64</span>.<span class="ruby-identifier">strict_encode64</span>(<span class="ruby-identifier">pbkdf2</span>)].<span class="ruby-identifier">join</span>(<span class="ruby-string">"\t"</span>)
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:users</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">update</span>({<span class="ruby-value">:password_hash</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">the_pass_hash</span>), <span class="ruby-value">:version</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:version</span>] <span class="ruby-operator">+</span> <span class="ruby-value">0.0001</span>)})
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Invalid password change attempted for #{credential}"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">"Could not retrieve user record: #{credential}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"No user with that credential exists"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"Empty password not supported"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">"Invalid credential argument: #{credential}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-user_update" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">user_update</span><span
|
|
class="method-args">(credential=nil, user_id=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="user_update-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 628</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">user_update</span>(<span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">user_id</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@authority</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-ivar">@authority</span>.<span class="ruby-identifier">user_update</span>(<span class="ruby-identifier">credential</span>, <span class="ruby-identifier">user_id</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">db_permissions</span>()[<span class="ruby-value">:write</span>]
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">user_id_available?</span>(<span class="ruby-identifier">user_id</span>.<span class="ruby-identifier">to_s</span>)
|
|
<span class="ruby-identifier">record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:users</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:users</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>)}).<span class="ruby-identifier">update</span>({<span class="ruby-value">:user_id</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">user_id</span>), <span class="ruby-value">:version</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:version</span>] <span class="ruby-operator">+</span> <span class="ruby-value">0.0001</span>)})
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"User record not found"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"UserID is not available: #{user_id.to_s}"</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply a valid user credential (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>, <span class="ruby-value">:user_id</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">user_id</span>}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-uuid_list" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">uuid_list</span><span
|
|
class="method-args">(credential=nil, criteria={})</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
<p>Search function method</p>
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="uuid_list-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 3908</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">uuid_list</span>(<span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">criteria</span>={})
|
|
<span class="ruby-comment"># will return an array of all structures the credential has (at least) read access to</span>
|
|
<span class="ruby-identifier">result</span> = []
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply a valid credential UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">criteria</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must supply a search criteria as a Hash"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">hash_criteria</span> = {}
|
|
<span class="ruby-identifier">array_criteria</span> = {}
|
|
<span class="ruby-comment"># Limit, Offset, and Page selection</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:limit</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>)
|
|
<span class="ruby-identifier">limit</span> = <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:limit</span>]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">limit</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:offset</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>)
|
|
<span class="ruby-identifier">offset</span> = <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:offset</span>]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">offset</span> = <span class="ruby-value">0</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:page</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>)
|
|
<span class="ruby-identifier">page</span> = <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:page</span>]
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">limit</span>
|
|
<span class="ruby-identifier">limit</span> = <span class="ruby-value">100</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">offset</span> = ((<span class="ruby-identifier">page</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">limit</span>) <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">page</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># UUID, Title, and Format searches</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">criteria</span>[<span class="ruby-value">:uuid</span>])
|
|
<span class="ruby-identifier">hash_criteria</span>[<span class="ruby-value">:uuid</span>] = <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-identifier">array_criteria</span>[<span class="ruby-value">:uuid</span>] = <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:title</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
|
|
<span class="ruby-identifier">hash_criteria</span>[<span class="ruby-value">:title</span>] = <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:title</span>].<span class="ruby-identifier">to_s</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">256</span>]
|
|
<span class="ruby-identifier">array_criteria</span>[<span class="ruby-value">:title</span>] = <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:title</span>].<span class="ruby-identifier">to_s</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">256</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:format</span>].<span class="ruby-identifier">is_any?</span>([<span class="ruby-operator">::</span><span class="ruby-constant">String</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>])
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">criteria</span>[<span class="ruby-value">:format</span>])
|
|
<span class="ruby-identifier">format_list</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">format_list</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:format</span>].<span class="ruby-identifier">to_sym</span>})
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">format_list</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">"Format not found: #{criteria[:format].inspect}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">hash_criteria</span>[<span class="ruby-value">:format</span>] = <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:format</span>].<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:ufs</span>].<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:ufs_version</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Float</span>)
|
|
<span class="ruby-identifier">format_list</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">format_list</span>({<span class="ruby-value">:ufs</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:ufs</span>].<span class="ruby-identifier">to_sym</span>, <span class="ruby-value">:version</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:ufs_version</span>]})
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">format_list</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">format_list</span>({<span class="ruby-value">:ufs</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:ufs</span>].<span class="ruby-identifier">to_sym</span>})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">format_list</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:ufs_version</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Float</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">"Format not found: #{criteria[:ufs].inspect}, Version: #{criteria[:ufs_version].inspect}"</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-node">"Format not found: #{criteria[:ufs].inspect}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">hash_criteria</span>[<span class="ruby-value">:format</span>] = <span class="ruby-identifier">format_list</span>[<span class="ruby-value">0</span>][<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># Output column selection: (very very basic at first)</span>
|
|
<span class="ruby-identifier">selectables</span> = [<span class="ruby-value">:uuid</span>, <span class="ruby-value">:title</span>, <span class="ruby-value">:version</span>]
|
|
<span class="ruby-identifier">selected</span> = []
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:select</span>].<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:select</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-identifier">criteria</span>[<span class="ruby-value">:select</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_column_symbol</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">selectables</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">the_column_symbol</span>)
|
|
<span class="ruby-identifier">selected</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">the_column_symbol</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">selectables</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">criteria</span>[<span class="ruby-value">:select</span>])
|
|
<span class="ruby-identifier">selected</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:select</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">selected</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">selected</span> <span class="ruby-operator"><<</span> <span class="ruby-value">:uuid</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">reduce_to_datetime</span> = <span class="ruby-constant">Proc</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_value</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">the_result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-identifier">db_content</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-string">"between"</span>)
|
|
<span class="ruby-identifier">the_times</span> = <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">split</span>(<span class="ruby-string">"between"</span>)[<span class="ruby-value">1</span>].<span class="ruby-identifier">split</span>(<span class="ruby-string">"and"</span>)
|
|
<span class="ruby-identifier">the_times</span>[<span class="ruby-value">0</span>] = <span class="ruby-operator">::</span><span class="ruby-constant">Chronic</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">the_times</span>[<span class="ruby-value">0</span>])
|
|
<span class="ruby-identifier">the_times</span>[<span class="ruby-value">1</span>] = <span class="ruby-operator">::</span><span class="ruby-constant">Chronic</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">the_times</span>[<span class="ruby-value">1</span>])
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_times</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Time</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">the_times</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Time</span>)
|
|
<span class="ruby-identifier">db_content</span> = ((<span class="ruby-identifier">the_times</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">to_datetime</span>)<span class="ruby-operator">..</span>(<span class="ruby-identifier">the_times</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">to_datetime</span>))
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">"Unable to understand your time specification text: #{the_value.inspect}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">valid_time?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">valid_date?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">valid_datetime_nolocale?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">valid_datetime?</span>
|
|
<span class="ruby-identifier">db_content</span> = <span class="ruby-operator">::</span><span class="ruby-constant">DateTime</span><span class="ruby-operator">::</span><span class="ruby-identifier">parse</span>(<span class="ruby-identifier">the_value</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">the_times</span> = <span class="ruby-operator">::</span><span class="ruby-constant">Chronic</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">the_value</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_times</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Time</span>)
|
|
<span class="ruby-identifier">db_content</span> = <span class="ruby-identifier">the_times</span>.<span class="ruby-identifier">to_datetime</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">"Unable to understand your time specification text: #{the_value.inspect}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Range</span>)
|
|
<span class="ruby-identifier">the_times</span> = [(<span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">first</span>), (<span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">last</span>)]
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_times</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Time</span>)
|
|
<span class="ruby-identifier">the_times</span>[<span class="ruby-value">0</span>] = <span class="ruby-identifier">the_times</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">to_datetime</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_times</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Date</span>)
|
|
<span class="ruby-identifier">the_times</span>[<span class="ruby-value">0</span>] = <span class="ruby-operator">::</span><span class="ruby-constant">DateTime</span><span class="ruby-operator">::</span><span class="ruby-identifier">parse</span>(<span class="ruby-identifier">the_times</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">to_s</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_times</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Time</span>)
|
|
<span class="ruby-identifier">the_times</span>[<span class="ruby-value">1</span>] = <span class="ruby-identifier">the_times</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">to_datetime</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_times</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Date</span>)
|
|
<span class="ruby-identifier">the_times</span>[<span class="ruby-value">1</span>] = <span class="ruby-operator">::</span><span class="ruby-constant">DateTime</span><span class="ruby-operator">::</span><span class="ruby-identifier">parse</span>(<span class="ruby-identifier">the_times</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">to_s</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">the_times</span> = ((<span class="ruby-identifier">the_times</span>[<span class="ruby-value">0</span>])<span class="ruby-operator">..</span>(<span class="ruby-identifier">the_times</span>[<span class="ruby-value">1</span>]))
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_times</span>.<span class="ruby-identifier">first</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">DateTime</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">last</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">DateTime</span>)
|
|
<span class="ruby-identifier">db_content</span> = <span class="ruby-identifier">the_times</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">"Invalid Range of dates, use DateTime objects in the Range: #{the_value.inspect}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Time</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Date</span>)
|
|
<span class="ruby-identifier">db_content</span> = <span class="ruby-operator">::</span><span class="ruby-constant">DateTime</span><span class="ruby-operator">::</span><span class="ruby-identifier">parse</span>(<span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">to_s</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">DateTime</span>)
|
|
<span class="ruby-identifier">db_content</span> = <span class="ruby-identifier">the_value</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">db_content</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-identifier">db_content</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">"Unable to reduce to a DateTime with this input: #{the_value.inspect}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">the_result</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">db_content_value</span> = <span class="ruby-constant">Proc</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_value</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">the_result</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-identifier">the_table</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_table_for_instance</span>(<span class="ruby-identifier">the_value</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_table</span> <span class="ruby-operator">==</span> <span class="ruby-value">:unspecified</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">"Invalid value passed as persistable: #{the_value.inspect}"</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">db_content</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">the_table</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_boolean</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">TrueClass</span>)
|
|
<span class="ruby-identifier">db_content</span> = <span class="ruby-value">1</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">FalseClass</span>)
|
|
<span class="ruby-identifier">db_content</span> = <span class="ruby-value">0</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">db_content</span> = <span class="ruby-value">-1</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_binary</span>
|
|
<span class="ruby-identifier">db_content</span> = <span class="ruby-string">""</span>
|
|
<span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_byte</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">db_content</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">the_byte</span>.<span class="ruby-identifier">to_s</span>(<span class="ruby-identifier">base</span>=<span class="ruby-value">16</span>)
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:element_text</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">valid_time?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">valid_date?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">valid_datetime_nolocale?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">the_value</span>.<span class="ruby-identifier">valid_datetime?</span>
|
|
<span class="ruby-identifier">db_content</span> = <span class="ruby-identifier">reduce_to_datetime</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">the_value</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">db_content</span> = <span class="ruby-identifier">the_value</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">db_content</span> = <span class="ruby-identifier">the_value</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">db_content</span>
|
|
<span class="ruby-identifier">the_result</span> = <span class="ruby-identifier">db_content</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-node">"Could not cast the value to something useful: #{the_value.inspect}"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">the_result</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">find_property_records</span> = <span class="ruby-constant">Proc</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">a_selector</span>, <span class="ruby-identifier">a_container</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">a_result</span> = []
|
|
<span class="ruby-identifier">a_container</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">item</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">item</span>[(<span class="ruby-identifier">a_selector</span>)]
|
|
<span class="ruby-identifier">a_result</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">item</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">a_result</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">find_element_records</span> = <span class="ruby-constant">Proc</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">a_selector</span>, <span class="ruby-identifier">a_container</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">a_result</span> = []
|
|
<span class="ruby-identifier">a_container</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">item</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">item</span>[(<span class="ruby-identifier">a_selector</span>)]
|
|
<span class="ruby-identifier">a_result</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">item</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">a_result</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">found_list</span> = []
|
|
<span class="ruby-comment"># criteria[:property] :</span>
|
|
<span class="ruby-comment"># For all</span>
|
|
<span class="ruby-comment"># {:property_name => {:equals => value}}</span>
|
|
<span class="ruby-comment"># For :element_integer, :element_float, :element_bigdecimal</span>
|
|
<span class="ruby-comment"># {:property_name => {:greater_than => value, :greater_or_equal => value, :less_than => value, :less_or_equal => value}}</span>
|
|
<span class="ruby-comment"># For :element_datetime, Note: if you pass text as a date ::Chronic will be used to parse it.</span>
|
|
<span class="ruby-comment"># {:property_name => {:at => value, :before => value, :at_or_before => value, :after => value, :at_or_after => value, :between => <range-value>}</span>
|
|
<span class="ruby-comment"># For Text, Binary</span>
|
|
<span class="ruby-comment"># {:property_name => {:include => value}}</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-comment"># criteria[:element] :</span>
|
|
<span class="ruby-comment"># similar to criteria[:property] except that the entire table for the type is searched and no property dereferencing needed.</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:property</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:element</span>]
|
|
<span class="ruby-comment"># Expansion</span>
|
|
<span class="ruby-comment"># Text Search: @connector[:text_page].where(::Sequel.like(:content,'%#{search_text}%'))</span>
|
|
<span class="ruby-comment"># Binary Search: @connector[:binary_page].where(::Sequel.like(:content,'%#{byte_sequence}%'))</span>
|
|
<span class="ruby-comment"># self.element_parent_address(the_table=:unspecified, the_dbid=0)</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:property</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-comment"># Only ONE property key can be compared (TODO: expand to multiple keys)</span>
|
|
<span class="ruby-identifier">property_matches</span> = []
|
|
<span class="ruby-identifier">last_key</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">criteria</span>[<span class="ruby-value">:property</span>].<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">property_key</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-comment"># compare each key's value to qualify the parent object:</span>
|
|
<span class="ruby-comment"># {:html => {:include => "\n"}}</span>
|
|
<span class="ruby-identifier">comparison_op</span> = <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:property</span>][(<span class="ruby-identifier">property_key</span>)].<span class="ruby-identifier">keys</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:property</span>][(<span class="ruby-identifier">property_key</span>)][(<span class="ruby-identifier">comparison_op</span>)].<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Range</span>) <span class="ruby-operator">&&</span> [<span class="ruby-value">:at</span>, <span class="ruby-value">:before</span>, <span class="ruby-value">:after</span>, <span class="ruby-value">:at_or_before</span>, <span class="ruby-value">:at_or_after</span>, <span class="ruby-value">:between</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">comparison_op</span>)
|
|
<span class="ruby-identifier">comparison_value</span> = <span class="ruby-identifier">reduce_to_datetime</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">criteria</span>[<span class="ruby-value">:property</span>][(<span class="ruby-identifier">property_key</span>)][(<span class="ruby-identifier">comparison_op</span>)])
|
|
<span class="ruby-identifier">table_test</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_table_for_instance</span>(<span class="ruby-identifier">comparison_value</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">table_test</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_table_for_instance</span>(<span class="ruby-identifier">criteria</span>[<span class="ruby-value">:property</span>][(<span class="ruby-identifier">property_key</span>)][(<span class="ruby-identifier">comparison_op</span>)])
|
|
<span class="ruby-identifier">comparison_value</span> = <span class="ruby-identifier">db_content_value</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">criteria</span>[<span class="ruby-value">:property</span>][(<span class="ruby-identifier">property_key</span>)][(<span class="ruby-identifier">comparison_op</span>)])
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">if</span> [<span class="ruby-value">:element_hash</span>, <span class="ruby-value">:element_array</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">table_test</span>)
|
|
<span class="ruby-comment"># Only properties with base elements can be compared - not structures (TODO: expand this)</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-string">"Attempted to compare a structure as a property value (not supported, ignoring)."</span>)
|
|
<span class="ruby-keyword">next</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># Review : rewrite - adapt to new arch.</span>
|
|
<span class="ruby-identifier">match_uuid_list</span> = []
|
|
<span class="ruby-comment"># comparison_value</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:hash_properties</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:property</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">property_key</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element</span>]
|
|
<span class="ruby-keyword">when</span> <span class="ruby-string">"element_boolean"</span>
|
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_boolean</span>]
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">-1</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">1</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-string">"element_integer"</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_integer</span>]
|
|
<span class="ruby-keyword">when</span> <span class="ruby-string">"element_float"</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_float</span>]
|
|
<span class="ruby-keyword">when</span> <span class="ruby-string">"element_bigdecimal"</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-operator">::</span><span class="ruby-constant">BigDecimal</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_bigdecimal</span>].<span class="ruby-identifier">to_s</span>)
|
|
<span class="ruby-keyword">when</span> <span class="ruby-string">"element_datetime"</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_datetime</span>]
|
|
<span class="ruby-keyword">when</span> <span class="ruby-string">"element_text"</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_text_uuid</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-comment"># Review: issue with Base64: decode64 mangles non-base64 text but does it w/o error now.</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-string">""</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_text_uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">order</span>(<span class="ruby-value">:ordinal</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">text_page</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">element_value</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">text_page</span>[<span class="ruby-value">:content</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_text</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-string">"element_binary"</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">ByteArray</span>.<span class="ruby-identifier">new</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:binary_page</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_binary_uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">order</span>(<span class="ruby-value">:ordinal</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">binary_page</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">element_value</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">binary_page</span>[<span class="ruby-value">:content</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">comparison_op</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:equals</span>, <span class="ruby-value">:at</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">element_value</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">comparison_value</span>
|
|
<span class="ruby-identifier">match_uuid_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:parent_uuid</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:greater_than</span>, <span class="ruby-value">:after</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">element_value</span> <span class="ruby-operator">></span> <span class="ruby-identifier">comparison_value</span>
|
|
<span class="ruby-identifier">match_uuid_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:parent_uuid</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:greater_or_equal</span>, <span class="ruby-value">:at_or_after</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">element_value</span> <span class="ruby-operator">>=</span> <span class="ruby-identifier">comparison_value</span>
|
|
<span class="ruby-identifier">match_uuid_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:parent_uuid</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:less_than</span>, <span class="ruby-value">:before</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">element_value</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">comparison_value</span>
|
|
<span class="ruby-identifier">match_uuid_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:parent_uuid</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:less_or_equal</span>, <span class="ruby-value">:at_or_before</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">element_value</span> <span class="ruby-operator"><=</span> <span class="ruby-identifier">comparison_value</span>
|
|
<span class="ruby-identifier">match_uuid_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:parent_uuid</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:between</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">comparison_value</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">element_value</span>)
|
|
<span class="ruby-identifier">match_uuid_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:parent_uuid</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:include</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">element_value</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">comparison_value</span>.<span class="ruby-identifier">to_s</span>)
|
|
<span class="ruby-identifier">match_uuid_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:parent_uuid</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:match</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">element_value</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">comparison_value</span>)
|
|
<span class="ruby-identifier">match_uuid_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:parent_uuid</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">cast_error</span>
|
|
<span class="ruby-comment"># Probably a type casting error (comparison of dissimilar types)</span>
|
|
<span class="ruby-keyword">next</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">match_uuid_list</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_matched_uuid</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-comment"># Add to main found list</span>
|
|
<span class="ruby-identifier">parent_record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:uuid</span>, <span class="ruby-value">:version</span>, <span class="ruby-value">:title</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_matched_uuid</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">parent_record</span>
|
|
<span class="ruby-identifier">new_record</span> = {}
|
|
<span class="ruby-identifier">selected</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_selected_key</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">parent_record</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">the_selected_key</span>)
|
|
<span class="ruby-identifier">new_record</span>[(<span class="ruby-identifier">the_selected_key</span>)] = <span class="ruby-identifier">parent_record</span>[(<span class="ruby-identifier">the_selected_key</span>)]
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">new_record</span>[(<span class="ruby-identifier">the_selected_key</span>)])
|
|
<span class="ruby-identifier">new_record</span>[(<span class="ruby-identifier">the_selected_key</span>)] = <span class="ruby-identifier">new_record</span>[(<span class="ruby-identifier">the_selected_key</span>)].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">found_list</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">new_record</span>)
|
|
<span class="ruby-identifier">found_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">new_record</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">last_key</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">property_key</span>
|
|
<span class="ruby-identifier">last_key</span> = <span class="ruby-identifier">property_key</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:element</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Array</span>)
|
|
<span class="ruby-identifier">criteria</span>[<span class="ruby-value">:element</span>].<span class="ruby-identifier">each_with_index</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_element</span>, <span class="ruby-identifier">element_index</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">comparison_op</span> = <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:element</span>][(<span class="ruby-identifier">element_index</span>)].<span class="ruby-identifier">keys</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:element</span>][(<span class="ruby-identifier">element_index</span>)][(<span class="ruby-identifier">comparison_op</span>)].<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Range</span>) <span class="ruby-operator">&&</span> [<span class="ruby-value">:at</span>, <span class="ruby-value">:before</span>, <span class="ruby-value">:after</span>, <span class="ruby-value">:at_or_before</span>, <span class="ruby-value">:at_or_after</span>, <span class="ruby-value">:between</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">comparison_op</span>)
|
|
<span class="ruby-identifier">comparison_value</span> = <span class="ruby-identifier">reduce_to_datetime</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">criteria</span>[<span class="ruby-value">:element</span>][(<span class="ruby-identifier">element_index</span>)][(<span class="ruby-identifier">comparison_op</span>)])
|
|
<span class="ruby-identifier">element_table</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_table_for_instance</span>(<span class="ruby-identifier">comparison_value</span>)
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">element_table</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-constant">Database</span><span class="ruby-operator">::</span><span class="ruby-identifier">element_table_for_instance</span>(<span class="ruby-identifier">criteria</span>[<span class="ruby-value">:element</span>][(<span class="ruby-identifier">element_index</span>)][(<span class="ruby-identifier">comparison_op</span>)])
|
|
<span class="ruby-identifier">comparison_value</span> = <span class="ruby-identifier">db_content_value</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">criteria</span>[<span class="ruby-value">:element</span>][(<span class="ruby-identifier">element_index</span>)][(<span class="ruby-identifier">comparison_op</span>)])
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># Structural comparison not supported.</span>
|
|
<span class="ruby-keyword">if</span> [<span class="ruby-value">:element_hash</span>, <span class="ruby-value">:element_array</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">element_table</span>)
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-string">"Attempted to compare a structure as an element (not supported, ignoring)."</span>)
|
|
<span class="ruby-keyword">next</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">match_uuid_list</span> = []
|
|
<span class="ruby-comment"># comparison_value</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:array_elements</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:element</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">element_table</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element</span>]
|
|
<span class="ruby-keyword">when</span> <span class="ruby-string">"element_boolean"</span>
|
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_boolean</span>]
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">-1</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">1</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-string">"element_integer"</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_integer</span>]
|
|
<span class="ruby-keyword">when</span> <span class="ruby-string">"element_float"</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_float</span>]
|
|
<span class="ruby-keyword">when</span> <span class="ruby-string">"element_bigdecimal"</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-operator">::</span><span class="ruby-constant">BigDecimal</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_bigdecimal</span>].<span class="ruby-identifier">to_s</span>)
|
|
<span class="ruby-keyword">when</span> <span class="ruby-string">"element_datetime"</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_datetime</span>]
|
|
<span class="ruby-keyword">when</span> <span class="ruby-string">"element_text"</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_text_uuid</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-comment"># Review: issue with Base64: decode64 mangles non-base64 text but does it w/o error now.</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-string">""</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:text_page</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_text_uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">order</span>(<span class="ruby-value">:ordinal</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">text_page</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">element_value</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">text_page</span>[<span class="ruby-value">:content</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_text</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-string">"element_binary"</span>
|
|
<span class="ruby-identifier">element_value</span> = <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-constant">ByteArray</span>.<span class="ruby-identifier">new</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:binary_page</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:element_binary_uuid</span>].<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">order</span>(<span class="ruby-value">:ordinal</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">binary_page</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">element_value</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">binary_page</span>[<span class="ruby-value">:content</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">case</span> <span class="ruby-identifier">comparison_op</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:equals</span>, <span class="ruby-value">:at</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">element_value</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">comparison_value</span>
|
|
<span class="ruby-identifier">match_uuid_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:parent_uuid</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:greater_than</span>, <span class="ruby-value">:after</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">element_value</span> <span class="ruby-operator">></span> <span class="ruby-identifier">comparison_value</span>
|
|
<span class="ruby-identifier">match_uuid_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:parent_uuid</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:greater_or_equal</span>, <span class="ruby-value">:at_or_after</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">element_value</span> <span class="ruby-operator">>=</span> <span class="ruby-identifier">comparison_value</span>
|
|
<span class="ruby-identifier">match_uuid_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:parent_uuid</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:less_than</span>, <span class="ruby-value">:before</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">element_value</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">comparison_value</span>
|
|
<span class="ruby-identifier">match_uuid_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:parent_uuid</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:less_or_equal</span>, <span class="ruby-value">:at_or_before</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">element_value</span> <span class="ruby-operator"><=</span> <span class="ruby-identifier">comparison_value</span>
|
|
<span class="ruby-identifier">match_uuid_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:parent_uuid</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:between</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">comparison_value</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">element_value</span>)
|
|
<span class="ruby-identifier">match_uuid_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:parent_uuid</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:include</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">element_value</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">comparison_value</span>.<span class="ruby-identifier">to_s</span>)
|
|
<span class="ruby-identifier">match_uuid_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:parent_uuid</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">when</span> <span class="ruby-value">:match</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">element_value</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">comparison_value</span>)
|
|
<span class="ruby-identifier">match_uuid_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:parent_uuid</span>].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">cast_error</span>
|
|
<span class="ruby-comment"># Probably a type casting error (comparison of dissimilar types)</span>
|
|
<span class="ruby-keyword">next</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># end - comparison loop</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">match_uuid_list</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_matched_uuid</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-comment"># Add to main found list</span>
|
|
<span class="ruby-identifier">parent_record</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_array</span>].<span class="ruby-identifier">select</span>(<span class="ruby-value">:uuid</span>, <span class="ruby-value">:version</span>, <span class="ruby-value">:title</span>).<span class="ruby-identifier">where</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_matched_uuid</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">first</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">parent_record</span>
|
|
<span class="ruby-identifier">new_record</span> = {}
|
|
<span class="ruby-identifier">selected</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_selected_key</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">parent_record</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">the_selected_key</span>)
|
|
<span class="ruby-identifier">new_record</span>[(<span class="ruby-identifier">the_selected_key</span>)] = <span class="ruby-identifier">parent_record</span>[(<span class="ruby-identifier">the_selected_key</span>)]
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">new_record</span>[(<span class="ruby-identifier">the_selected_key</span>)])
|
|
<span class="ruby-identifier">new_record</span>[(<span class="ruby-identifier">the_selected_key</span>)] = <span class="ruby-identifier">new_record</span>[(<span class="ruby-identifier">the_selected_key</span>)].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">found_list</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">new_record</span>)
|
|
<span class="ruby-identifier">found_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">new_record</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-comment"># unless last_index == element_index</span>
|
|
<span class="ruby-comment"># last_index = element_index</span>
|
|
<span class="ruby-comment"># end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-comment"># Criteria Expansion Here</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_hash</span>].<span class="ruby-identifier">filter</span>(<span class="ruby-identifier">hash_criteria</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">new_record</span> = {}
|
|
<span class="ruby-identifier">selected</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_key</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">entry</span>[(<span class="ruby-identifier">the_key</span>)])
|
|
<span class="ruby-identifier">new_record</span>[(<span class="ruby-identifier">the_key</span>)] = <span class="ruby-identifier">entry</span>[(<span class="ruby-identifier">the_key</span>)].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">new_record</span>[(<span class="ruby-identifier">the_key</span>)] = <span class="ruby-identifier">entry</span>[(<span class="ruby-identifier">the_key</span>)]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">found_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">new_record</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">hash_criteria</span>[<span class="ruby-value">:format</span>]
|
|
<span class="ruby-ivar">@connector</span>[<span class="ruby-value">:element_array</span>].<span class="ruby-identifier">filter</span>(<span class="ruby-identifier">array_criteria</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">new_record</span> = {}
|
|
<span class="ruby-identifier">selected</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_key</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">entry</span>[(<span class="ruby-identifier">the_key</span>)])
|
|
<span class="ruby-identifier">new_record</span>[(<span class="ruby-identifier">the_key</span>)] = <span class="ruby-identifier">entry</span>[(<span class="ruby-identifier">the_key</span>)].<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">new_record</span>[(<span class="ruby-identifier">the_key</span>)] = <span class="ruby-identifier">entry</span>[(<span class="ruby-identifier">the_key</span>)]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">found_list</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">new_record</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-comment"># Sorting Options Here: (Expansion)</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:order</span>].<span class="ruby-identifier">is_any?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-identifier">ascending</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-identifier">sort_key</span> = <span class="ruby-keyword">nil</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:order</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Hash</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:order</span>][<span class="ruby-value">:ascending</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>)
|
|
<span class="ruby-identifier">sort_key</span> = <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:order</span>][<span class="ruby-value">:ascending</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:order</span>][<span class="ruby-value">:descending</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Symbol</span>)
|
|
<span class="ruby-identifier">sort_key</span> = <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:order</span>][<span class="ruby-value">:descending</span>]
|
|
<span class="ruby-identifier">ascending</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">sort_key</span> = <span class="ruby-identifier">criteria</span>[<span class="ruby-value">:order</span>]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">selected</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">sort_key</span>)
|
|
<span class="ruby-identifier">found_list</span> = <span class="ruby-identifier">found_list</span>.<span class="ruby-identifier">sort</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span>, <span class="ruby-identifier">another</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">entry</span>[(<span class="ruby-identifier">sort_key</span>)] <span class="ruby-operator"><=></span> <span class="ruby-identifier">another</span>[(<span class="ruby-identifier">sort_key</span>)]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">ascending</span>
|
|
<span class="ruby-identifier">found_list</span>.<span class="ruby-identifier">reverse!</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment"># Impose result set limit and offset</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">Integer</span>)
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">found_list</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-keyword">if</span> (<span class="ruby-identifier">offset</span> <span class="ruby-operator">+</span> (<span class="ruby-identifier">limit</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)) <span class="ruby-operator"><=</span> (<span class="ruby-identifier">found_list</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
|
|
<span class="ruby-identifier">found_list</span> = <span class="ruby-identifier">found_list</span>[((<span class="ruby-identifier">offset</span>)<span class="ruby-operator">..</span>(<span class="ruby-identifier">offset</span> <span class="ruby-operator">+</span> (<span class="ruby-identifier">limit</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)))]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">offset</span> <span class="ruby-operator"><=</span> (<span class="ruby-identifier">found_list</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
|
|
<span class="ruby-identifier">found_list</span> = <span class="ruby-identifier">found_list</span>[((<span class="ruby-identifier">offset</span>)<span class="ruby-operator">..</span>(<span class="ruby-value">-1</span>))]
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">found_list</span>.<span class="ruby-identifier">size</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword">do</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">found_list</span>.<span class="ruby-identifier">shift</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Attempted to access a defunct Database"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>), <span class="ruby-value">:criteria</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">criteria</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-vfs_permission" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">vfs_permission</span><span
|
|
class="method-args">(file_id=nil, credential=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="vfs_permission-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1642</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">vfs_permission</span>(<span class="ruby-identifier">file_id</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = []
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database inactive"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">file_id</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"dbid must be specified with a String"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">credential</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"This option requires a valid credential UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">credential</span>
|
|
<span class="ruby-identifier">list</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:file_permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:file_id</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">file_id</span>.<span class="ruby-identifier">to_s</span>), <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>)})
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">list</span> = <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:file_permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:file_id</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">file_id</span>.<span class="ruby-identifier">to_s</span>)})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">list</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">record</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-comment"># [:execute, :rename, :move, :destroy, :create, :write, :read]</span>
|
|
<span class="ruby-identifier">entry</span> = {<span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">record</span>[<span class="ruby-value">:credential</span>].<span class="ruby-identifier">to_sym</span>), <span class="ruby-value">:permissions</span> <span class="ruby-operator">=></span> {}}
|
|
[<span class="ruby-value">:execute</span>, <span class="ruby-value">:rename</span>, <span class="ruby-value">:move</span>, <span class="ruby-value">:destroy</span>, <span class="ruby-value">:create</span>, <span class="ruby-value">:write</span>, <span class="ruby-value">:read</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">the_permission</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>[(<span class="ruby-identifier">the_permission</span>)] <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
|
|
<span class="ruby-identifier">entry</span>[<span class="ruby-value">:permissions</span>][(<span class="ruby-identifier">the_permission</span>)] = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">entry</span>[<span class="ruby-value">:permissions</span>][(<span class="ruby-identifier">the_permission</span>)] = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">entry</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:file_id</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">file_id</span>), <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-vfs_permission_exist-3F" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">vfs_permission_exist?</span><span
|
|
class="method-args">(file_id=nil, credential=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
<p>Effective Permission Handling methods VFS <a href="../../File.html"><code>File</code></a> permission mappings</p>
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="vfs_permission_exist-3F-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1617</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">vfs_permission_exist?</span>(<span class="ruby-identifier">file_id</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">false</span>
|
|
<span class="ruby-keyword">begin</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">alive?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database inactive"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">open?</span>
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">Exception</span>, <span class="ruby-string">"Database not available"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-identifier">file_id</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-operator">::</span><span class="ruby-constant">String</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"file_id must be specified with a String"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">unless</span> <span class="ruby-operator">::</span><span class="ruby-constant">GxG</span><span class="ruby-operator">::</span><span class="ruby-identifier">valid_uuid?</span>(<span class="ruby-identifier">credential</span>)
|
|
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"You must specify a valid credential UUID (as a String or Symbol)"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@connector</span>[<span class="ruby-value">:file_permissions</span>].<span class="ruby-identifier">filter</span>({<span class="ruby-value">:file_id</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">file_id</span>.<span class="ruby-identifier">to_s</span>, <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">credential</span>.<span class="ruby-identifier">to_s</span>}).<span class="ruby-identifier">count</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
<span class="ruby-identifier">result</span> = <span class="ruby-keyword">true</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">rescue</span> <span class="ruby-constant">Exception</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>
|
|
<span class="ruby-identifier">log_error</span>({<span class="ruby-value">:error</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">the_error</span>, <span class="ruby-value">:parameters</span> <span class="ruby-operator">=></span> {<span class="ruby-value">:file_id</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">file_id</span>), <span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> (<span class="ruby-identifier">credential</span>)}})
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div id="method-i-vfs_permission_manifest" class="method-detail ">
|
|
|
|
<div class="method-heading">
|
|
<span class="method-name">vfs_permission_manifest</span><span
|
|
class="method-args">(file_id=nil, credential=nil)</span>
|
|
|
|
<span class="method-click-advice">click to toggle source</span>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="method-description">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="method-source-code" id="vfs_permission_manifest-source">
|
|
<pre><span class="ruby-comment"># File lib/gxg/gxg_database.rb, line 1683</span>
|
|
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">vfs_permission_manifest</span>(<span class="ruby-identifier">file_id</span>=<span class="ruby-keyword">nil</span>, <span class="ruby-identifier">credential</span>=<span class="ruby-keyword">nil</span>)
|
|
<span class="ruby-identifier">result</span> = []
|
|
<span class="ruby-keyword">self</span>.<span class="ruby-identifier">vfs_permission</span>(<span class="ruby-identifier">file_id</span>, <span class="ruby-identifier">credential</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
<span class="ruby-identifier">the_record</span> = {<span class="ruby-value">:credential</span> <span class="ruby-operator">=></span> <span class="ruby-keyword">nil</span>, <span class="ruby-value">:permissions</span> <span class="ruby-operator">=></span> {}, <span class="ruby-value">:details</span> <span class="ruby-operator">=></span> {}}
|
|
<span class="ruby-comment">#</span>
|
|
<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:credential</span>] = <span class="ruby-identifier">entry</span>[<span class="ruby-value">:credential</span>]
|
|
<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:permissions</span>] = <span class="ruby-identifier">entry</span>[<span class="ruby-value">:permissions</span>]
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">role_exist?</span>(<span class="ruby-identifier">entry</span>[<span class="ruby-value">:credential</span>])
|
|
<span class="ruby-identifier">role</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">role_fetch</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:credential</span>].<span class="ruby-identifier">to_s</span>})
|
|
<span class="ruby-identifier">group</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">group_fetch</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">role</span>[<span class="ruby-value">:group_uuid</span>].<span class="ruby-identifier">to_s</span>})
|
|
<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:details</span>][<span class="ruby-value">:role_title</span>] = <span class="ruby-identifier">role</span>[<span class="ruby-value">:title</span>]
|
|
<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:details</span>][<span class="ruby-value">:group</span>] = <span class="ruby-identifier">group</span>[<span class="ruby-value">:uuid</span>].<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">to_sym</span>
|
|
<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:details</span>][<span class="ruby-value">:group_title</span>] = <span class="ruby-identifier">group</span>[<span class="ruby-value">:title</span>]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-keyword">if</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">user_exist?</span>(<span class="ruby-identifier">entry</span>[<span class="ruby-value">:credential</span>])
|
|
<span class="ruby-identifier">user</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">user_fetch</span>({<span class="ruby-value">:uuid</span> <span class="ruby-operator">=></span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">:credential</span>].<span class="ruby-identifier">to_s</span>})
|
|
<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:details</span>][<span class="ruby-value">:user_title</span>] = <span class="ruby-identifier">user</span>[<span class="ruby-value">:user_id</span>]
|
|
<span class="ruby-keyword">else</span>
|
|
<span class="ruby-identifier">log_warn</span>(<span class="ruby-node">"Invalid User Credential Detected: #{entry[:credential].to_s.to_sym.inspect}"</span>)
|
|
<span class="ruby-identifier">the_record</span>[<span class="ruby-value">:details</span>][<span class="ruby-value">:user_title</span>] = <span class="ruby-node">"Invalid User Credential #{entry[:credential].to_s.to_sym.inspect} !"</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">the_record</span>
|
|
<span class="ruby-keyword">end</span>
|
|
<span class="ruby-identifier">result</span>
|
|
<span class="ruby-keyword">end</span></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</section>
|
|
|
|
</section>
|
|
</main>
|
|
|
|
|
|
<footer id="validator-badges" role="contentinfo">
|
|
<p><a href="https://validator.w3.org/check/referer">Validate</a>
|
|
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.1.2.
|
|
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
|
|
</footer>
|
|
|