]> Kevux Git Server - koopa/commitdiff
Progress: continue development on database abstraction
authorKevin Day <thekevinday@gmail.com>
Thu, 17 Jan 2019 05:12:45 +0000 (23:12 -0600)
committerKevin Day <thekevinday@gmail.com>
Thu, 17 Jan 2019 05:12:45 +0000 (23:12 -0600)
100 files changed:
common/base/classes/base_database.php
common/base/classes/base_path.php
common/database/classes/database_alter_foreign_data_wrapper.php
common/database/classes/database_alter_foreign_table.php
common/database/classes/database_alter_materialized_view.php
common/database/classes/database_alter_system.php
common/database/classes/database_alter_table.php
common/database/classes/database_query.php
common/database/classes/database_string.php
common/database/enumerations/database_alter_column.php [new file with mode: 0644]
common/database/interfaces/database_query_placeholder.php
common/database/traits/database_action.php
common/database/traits/database_action_add_column.php [new file with mode: 0644]
common/database/traits/database_action_alter_column.php [new file with mode: 0644]
common/database/traits/database_action_alter_column_options.php [new file with mode: 0644]
common/database/traits/database_action_alter_column_reset.php [new file with mode: 0644]
common/database/traits/database_action_alter_column_set.php [new file with mode: 0644]
common/database/traits/database_action_drop_column.php [new file with mode: 0644]
common/database/traits/database_action_options.php [new file with mode: 0644]
common/database/traits/database_add_operator_family.php
common/database/traits/database_add_table.php
common/database/traits/database_add_user.php
common/database/traits/database_argument_type.php
common/database/traits/database_as_data_type.php
common/database/traits/database_attach_partition.php [new file with mode: 0644]
common/database/traits/database_cache.php
common/database/traits/database_cascade.php
common/database/traits/database_cluster_on.php
common/database/traits/database_column_reset.php
common/database/traits/database_column_set.php
common/database/traits/database_column_set_statistics.php
common/database/traits/database_column_set_storage.php
common/database/traits/database_connection.php
common/database/traits/database_constraint.php
common/database/traits/database_cycle.php
common/database/traits/database_depends_on_extension.php
common/database/traits/database_detach_partition.php [new file with mode: 0644]
common/database/traits/database_disable.php
common/database/traits/database_drop_table.php
common/database/traits/database_enable.php
common/database/traits/database_enable_trigger.php
common/database/traits/database_for_role.php
common/database/traits/database_function_action.php
common/database/traits/database_grant.php
common/database/traits/database_grant_option_for.php
common/database/traits/database_group_by.php
common/database/traits/database_handler.php
common/database/traits/database_if_exists.php [new file with mode: 0644]
common/database/traits/database_if_not_exists.php [new file with mode: 0644]
common/database/traits/database_in_database.php
common/database/traits/database_in_schema.php
common/database/traits/database_increment_by.php
common/database/traits/database_inherit.php
common/database/traits/database_max_value.php
common/database/traits/database_min_value.php
common/database/traits/database_name.php
common/database/traits/database_no_wait.php
common/database/traits/database_oid.php
common/database/traits/database_on.php
common/database/traits/database_on_table.php
common/database/traits/database_operand_left.php
common/database/traits/database_operand_right.php
common/database/traits/database_options.php
common/database/traits/database_order_by.php
common/database/traits/database_owned_by.php
common/database/traits/database_owner_to.php
common/database/traits/database_privilege.php
common/database/traits/database_procedural.php
common/database/traits/database_refresh_publication.php
common/database/traits/database_rename_column.php
common/database/traits/database_rename_constraint.php [new file with mode: 0644]
common/database/traits/database_rename_to.php
common/database/traits/database_reset_configuration_parameter.php
common/database/traits/database_reset_storage_parameter.php
common/database/traits/database_restart_with.php
common/database/traits/database_restrict.php
common/database/traits/database_role_specification.php
common/database/traits/database_set_configuration_parameter.php
common/database/traits/database_set_operator.php
common/database/traits/database_set_publication_name.php
common/database/traits/database_set_publication_parameter.php
common/database/traits/database_set_schema.php
common/database/traits/database_set_storage_parameter.php
common/database/traits/database_set_table.php
common/database/traits/database_set_tablespace.php
common/database/traits/database_set_with_oids.php
common/database/traits/database_set_without_cluster.php
common/database/traits/database_start_with.php
common/database/traits/database_to_role.php
common/database/traits/database_using_expression.php
common/database/traits/database_using_index_method.php
common/database/traits/database_validator.php
common/database/traits/database_version.php
common/database/traits/database_wildcard.php [new file with mode: 0644]
common/database/traits/database_with_check_expression.php
common/database/traits/database_with_grant_option.php
common/database/traits/database_with_publication_option.php
common/database/traits/database_with_refresh_option.php
common/database/traits/database_with_role_option.php
common/database/traits/database_with_storage_parameter.php

index 4b5ba9e0888538475f19aa8c3737fc6fb17fa539..ca79c7394882b3b7d964b704bb62709227d72423 100644 (file)
@@ -1494,7 +1494,7 @@ class c_base_database extends c_base_return {
    *   Instead, use pg_escape_bytea() or a large object function.
    *
    * @return c_base_database_result
-   *   Query resource is returned on success.
+   *   Query resource is returned.
    *   Query resource with the error bit set is returned on error.
    *
    * @see: self::execute()
@@ -1596,7 +1596,7 @@ class c_base_database extends c_base_return {
    *   The query statement to execute.
    *
    * @return c_base_database_result
-   *   Query resource is returned on success.
+   *   Query resource is returned.
    *   Query resource with error bit set is returned on error.
    *
    * @see: self::execute()
@@ -1666,7 +1666,7 @@ class c_base_database extends c_base_return {
    * This is only useful when a query is asynchronous.
    *
    * @return c_base_database_result
-   *   A database result is returned on success.
+   *   A database result is returned.
    *   A database result with the error bit set is returned on error.
    */
   public function get_result() {
@@ -1726,7 +1726,7 @@ class c_base_database extends c_base_return {
    * This design, however, means that only a single a synchronous query operation may be performed at any given time.
    *
    * @return c_base_return_status
-   *   TRUE is returned on success.
+   *   TRUE is returned.
    *   FALSE is returned on failure.
    *   When asynchronous is not enabled, FALSE is returned without an error flag set.
    *
@@ -1785,7 +1785,7 @@ class c_base_database extends c_base_return {
    *
    * @return c_base_return_status|c_base_return_string
    *   TRUE on success, FALSE on failure.
-   *   If PGSQL_DML_STRING is set, a string is returned on success.
+   *   If PGSQL_DML_STRING is set, a string is returned.
    *
    *   Its unclear as to what the returned string is, but it can be assumed to be a value, such as an serialized number that was incremented by this operation.
    *
@@ -1870,7 +1870,7 @@ class c_base_database extends c_base_return {
    *
    * @return c_base_return_status|c_base_return_string
    *   TRUE on success, FALSE on failure.
-   *   If PGSQL_DML_STRING is set, a string is returned on success.
+   *   If PGSQL_DML_STRING is set, a string is returned.
    *
    *   Its unclear as to what the returned string is, but it can be assumed to be a value, such as an serialized number that was incremented by this operation.
    *
@@ -1957,7 +1957,7 @@ class c_base_database extends c_base_return {
    *
    * @return c_base_return_status|c_base_return_string|c_base_return_array
    *   TRUE or an array on success, FALSE on failure.
-   *   If PGSQL_DML_STRING is set, a string is returned on success.
+   *   If PGSQL_DML_STRING is set, a string is returned.
    *
    *   Its unclear as to what the returned string is, but it can be assumed to be a value, such as an serialized number that was incremented by this operation.
    *
@@ -2045,7 +2045,7 @@ class c_base_database extends c_base_return {
    *
    * @return c_base_return_status|c_base_return_string|c_base_return_array
    *   TRUE on success, FALSE on failure.
-   *   If PGSQL_DML_STRING is set, a string is returned on success.
+   *   If PGSQL_DML_STRING is set, a string is returned.
    *
    *   Its unclear as to what the returned string is, but it can be assumed to be a value, such as an serialized number that was incremented by this operation.
    *
index b3aa64cc4015d504c0a5e2084321d38a0af7fc3c..3786c631357f2c2b5248e6c879f925c04314760d 100644 (file)
@@ -257,7 +257,7 @@ class c_base_path extends c_base_return_string {
    *   Default setting is assigned on parameter error.
    *
    * @return c_base_markup_tag|c_base_return_status
-   *   A newly created tag is returned on success.
+   *   A newly created tag is returned.
    *   FALSE with the error bit set is returned on error.
    */
   public static function s_create_alias($id_group, $field_path, $field_destination, $is_private = TRUE) {
@@ -313,7 +313,7 @@ class c_base_path extends c_base_return_string {
    *   Default setting is assigned on parameter error.
    *
    * @return c_base_markup_tag|c_base_return_status
-   *   A newly created tag is returned on success.
+   *   A newly created tag is returned.
    *   FALSE with the error bit set is returned on error.
    */
   public static function s_create_redirect($field_destination, $field_response_code, $is_private = TRUE) {
@@ -1194,7 +1194,7 @@ class c_base_path extends c_base_return_string {
    *   (optional) An array of additional settings that are usually site-specific.
    *
    * @return c_base_path_executed|int
-   *   An executed array object is returned on success.
+   *   An executed array object is returned.
    *   An executed array object with error bit set is returned on error.
    */
   public function do_execute(&$http, &$database, &$session, $settings = []) {
@@ -1491,7 +1491,7 @@ class c_base_path_executed extends c_base_array {
    *   When NULL, the cookies array is reset to an empty array.
    *
    * @return c_base_return_status
-   *   TRUE is returned on success.
+   *   TRUE is returned.
    *   FALSE with error bit set is returned on error.
    */
   public function set_cookies($cookie) {
@@ -1521,7 +1521,7 @@ class c_base_path_executed extends c_base_array {
    *   NULL may be specified to remove any output.
    *
    * @return c_base_return_status
-   *   TRUE is returned on success.
+   *   TRUE is returned.
    *   FALSE with error bit set is returned on error.
    */
   public function set_output($output) {
@@ -1605,7 +1605,7 @@ class c_base_path_tree extends c_base_array {
    *   The group id to assign.
    *
    * @return c_base_return_status
-   *   TRUE is returned on success.
+   *   TRUE is returned.
    *   FALSE with error bit set is returned on error.
    */
   public function set_id_group($id_group) {
index 4a2c7ed9d78b8f2ded35668ef5fd91a43c9c4844..fc5fd0ed00445b60ba9c301f7d65137a72337bd4 100644 (file)
@@ -10,7 +10,6 @@ require_once('common/base/classes/base_return.php');
 
 require_once('common/database/classes/database_query.php');
 
-require_once('common/database/traits/database_action.php');
 require_once('common/database/traits/database_handler.php');
 require_once('common/database/traits/database_name.php');
 require_once('common/database/traits/database_options.php');
@@ -24,7 +23,6 @@ require_once('common/database/traits/database_validator.php');
  * @see: https://www.postgresql.org/docs/current/static/sql-alterforeigndatawrapper.html
  */
 class c_database_alter_foreign_data_wrapper extends c_database_query {
-  use t_database_action;
   use t_database_handler;
   use t_database_name;
   use t_database_options;
@@ -41,7 +39,6 @@ class c_database_alter_foreign_data_wrapper extends c_database_query {
   public function __construct() {
     parent::__construct();
 
-    $this->action    = NULL;
     $this->handler   = NULL;
     $this->name      = NULL;
     $this->options   = NULL;
@@ -54,7 +51,6 @@ class c_database_alter_foreign_data_wrapper extends c_database_query {
    * Class destructor.
    */
   public function __destruct() {
-    unset($this->action);
     unset($this->handler);
     unset($this->name);
     unset($this->options);
@@ -94,6 +90,7 @@ class c_database_alter_foreign_data_wrapper extends c_database_query {
       return new c_base_return_false();
     }
 
+    // @fixme: rewrite this.
     $value = NULL;
     if ($this->action === e_database_action::OWNER_TO) {
       if (isset($this->owner_to)) {
index f4578e904d96a2dd1ed64d93a9a0df95599092fe..29dd114abe29ebce9de852494a3248f18ff24514 100644 (file)
@@ -8,13 +8,30 @@ namespace n_koopa;
 require_once('common/base/classes/base_error.php');
 require_once('common/base/classes/base_return.php');
 
-require_once('common/database/classes/database_alter_foeign_table_action.php');
 require_once('common/database/classes/database_query.php');
 
+require_once('common/database/traits/database_action_add_column.php');
+require_once('common/database/traits/database_action_add_constraint.php');
+require_once('common/database/traits/database_action_alter_column.php');
+require_once('common/database/traits/database_action_alter_column_options.php');
+require_once('common/database/traits/database_action_alter_column_reset.php');
+require_once('common/database/traits/database_action_alter_column_set.php');
+require_once('common/database/traits/database_action_disable_trigger.php');
+require_once('common/database/traits/database_action_drop_columm.php');
+require_once('common/database/traits/database_action_drop_constraint.php');
+require_once('common/database/traits/database_action_enable_trigger.php');
+require_once('common/database/traits/database_action_inherit.php');
+require_once('common/database/traits/database_action_options.php');
+require_once('common/database/traits/database_action_owner_to.php');
+require_once('common/database/traits/database_action_set_oids.php');
+require_once('common/database/traits/database_action_validate_constraint.php');
+require_once('common/database/traits/database_if_exists.php');
 require_once('common/database/traits/database_name.php');
+require_once('common/database/traits/database_only.php');
 require_once('common/database/traits/database_rename_column.php');
 require_once('common/database/traits/database_rename_to.php');
 require_once('common/database/traits/database_set_schema.php');
+require_once('common/database/traits/database_wildcard.php');
 
 /**
  * The class for building and returning a Postgresql ALTER FOREIGN TABLE query string.
@@ -22,17 +39,32 @@ require_once('common/database/traits/database_set_schema.php');
  * @see: https://www.postgresql.org/docs/current/static/sql-alterforeigntable.html
  */
 class c_database_alter_foreign_table extends c_database_query {
+  use t_database_action_add_column;
+  use t_database_action_add_constraint;
+  use t_database_action_alter_column;
+  use t_database_action_alter_column_options;
+  use t_database_action_alter_column_reset;
+  use t_database_action_alter_column_set;
+  use t_database_action_alter_constraint;
+  use t_database_action_disable_trigger;
+  use t_database_action_drop_columm;
+  use t_database_action_drop_constraint;
+  use t_database_action_enable_trigger;
+  use t_database_action_inherit;
+  use t_database_action_options;
+  use t_database_action_owner_to;
+  use t_database_action_set_oids;
+  use t_database_action_validate_constraint;
+  use t_database_if_exists;
   use t_database_name;
+  use t_database_only;
   use t_database_rename_column;
   use t_database_rename_to;
   use t_database_set_schema;
+  use t_database_wildcard;
 
   protected const p_QUERY_COMMAND = 'alter foreign table';
 
-  protected $actions;
-  protected $if_exists;
-  protected $include_descendents; // The '*' following 'name'
-  protected $only;
 
   /**
    * Class constructor.
@@ -40,15 +72,29 @@ class c_database_alter_foreign_table extends c_database_query {
   public function __construct() {
     parent::__construct();
 
-    $this->name          = NULL;
-    $this->rename_column = NULL;
-    $this->rename_to     = NULL;
-    $this->set_schema    = NULL;
-
-    $this->actions             = NULL;
-    $this->if_exists           = NULL;
-    $this->include_descendents = NULL;
-    $this->only                = NULL;
+    $this->action_add_column           = NULL;
+    $this->action_add_constraint       = NULL;
+    $this->action_alter_column         = NULL;
+    $this->action_alter_column_options = NULL;
+    $this->action_alter_column_reset   = NULL;
+    $this->action_alter_column_set     = NULL;
+    $this->action_alter_constraint     = NULL;
+    $this->action_disable_trigger      = NULL;
+    $this->action_drop_columm          = NULL;
+    $this->action_drop_constraint      = NULL;
+    $this->action_enable_trigger       = NULL;
+    $this->action_inherit              = NULL;
+    $this->action_options              = NULL;
+    $this->action_owner_to             = NULL;
+    $this->action_set_oids             = NULL;
+    $this->action_validate_constraint  = NULL;
+    $this->if_exists                   = NULL;
+    $this->name                        = NULL;
+    $this->only                        = NULL;
+    $this->rename_column               = NULL;
+    $this->rename_to                   = NULL;
+    $this->set_schema                  = NULL;
+    $this->wildcard                    = NULL;
   }
 
   /**
@@ -57,15 +103,29 @@ class c_database_alter_foreign_table extends c_database_query {
   public function __destruct() {
     parent::__destruct();
 
+    unset($this->action_add_column);
+    unset($this->action_add_constraint);
+    unset($this->action_alter_column);
+    unset($this->action_alter_column_options);
+    unset($this->action_alter_column_reset);
+    unset($this->action_alter_column_set);
+    unset($this->action_alter_constraint);
+    unset($this->action_disable_trigger);
+    unset($this->action_drop_columm);
+    unset($this->action_drop_constraint);
+    unset($this->action_enable_trigger);
+    unset($this->action_inherit);
+    unset($this->action_options);
+    unset($this->action_owner_to);
+    unset($this->action_set_oids);
+    unset($this->action_validate_constraint);
+    unset($this->if_exists);
     unset($this->name);
+    unset($this->only);
     unset($this->rename_column);
     unset($this->rename_to);
     unset($this->set_schema);
-
-    unset($this->actions);
-    unset($this->if_exists);
-    unset($this->include_descendents);
-    unset($this->only);
+    unset($this->wildcard);
   }
 
   /**
@@ -90,275 +150,101 @@ class c_database_alter_foreign_table extends c_database_query {
   }
 
   /**
-   * Set or append and action.
-   *
-   * @param c_database_alter_foreign_table_action|null $action
-   *   A specific action to this class.
-   *   Set to NULL to disable.
-   *   When NULL, this will remove all actions.
-   *
-   * @return c_base_return_status
-   *   TRUE on success, FALSE otherwise.
-   *   FALSE with error bit set is returned on error.
+   * Implements do_build().
    */
-  public function set_action($action) {
-    if (is_null($action)) {
-      $this->actions = NULL;
-      return new c_base_return_true();
+  public function do_build() {
+    if (is_null($this->name)) {
+      return new c_base_return_false();
     }
 
-    if (is_string($action)) {
-      if (!is_array($this->actions)) {
-        $this->actions = [];
-      }
-
-      $this->actions[] = $action;
-    }
-    else {
-      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'action', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
-      return c_base_return_error::s_false($error);
+    $if_exists = NULL;
+    if ($this->if_exists) {
+      $if_exists = $this->p_do_build_if_exists() . ' ';
     }
 
-    return new c_base_return_true();
-  }
-
-  /**
-   * Assigns IF EXISTS.
-   *
-   * @param bool|null $if_exists
-   *   Set to TRUE to enable IF EXISTS, FALSE to disable.
-   *   Set to NULL to disable.
-   *
-   * @return c_base_return_status
-   *   TRUE on success, FALSE otherwise.
-   *   FALSE with error bit set is returned on error.
-   */
-  public function set_if_exists($if_exists) {
-    if (is_null($if_exists)) {
-      $this->if_exists = NULL;
-      return new c_base_return_true();
+    $only = NULL;
+    if ($this->only) {
+      $only = $this->p_do_build_only() . ' ';
     }
 
-    if (is_bool($if_exists)) {
-      $this->if_exists = $if_exists;
-      return new c_base_return_true();
+    $wildcard = NULL;
+    if ($this->wildcard) {
+      $wildcard = ' ' . $this->p_do_build_wildcard();
     }
 
-    $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'if_exists', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
-    return c_base_return_error::s_false($error);
-  }
-
-  /**
-   * Assigns wildcard '*' after the table name.
-   *
-   * @param bool|null $include_decendents
-   *   Set to TRUE to enable wildcard '*', FALSE to disable.
-   *   Set to NULL to disable.
-   *
-   * @return c_base_return_status
-   *   TRUE on success, FALSE otherwise.
-   *   FALSE with error bit set is returned on error.
-   */
-  public function set_include_decendents($include_decendents) {
-    if (is_null($include_decendents)) {
-      $this->include_decendents = NULL;
-      return new c_base_return_true();
+    $value = $this->p_do_build_name();
+    if (isset($this->rename_column)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_rename_column();
     }
-
-    if (is_bool($include_decendents)) {
-      $this->include_decendents = $include_decendents;
-      return new c_base_return_true();
+    else if (isset($this->rename_constraint)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_rename_constraint();
     }
-
-    $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'include_decendents', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
-    return c_base_return_error::s_false($error);
-  }
-
-  /**
-   * Assigns ONLY.
-   *
-   * @param bool|null $only
-   *   Set to TRUE to enable ONLY, FALSE to disable.
-   *   Set to NULL to disable.
-   *
-   * @return c_base_return_status
-   *   TRUE on success, FALSE otherwise.
-   *   FALSE with error bit set is returned on error.
-   */
-  public function set_only($only) {
-    if (is_null($only)) {
-      $this->only = NULL;
-      return new c_base_return_true();
+    else if (isset($this->rename_to)) {
+      $value = $if_exists . $value . ' ' . $this->p_do_build_rename_to();
     }
-
-    if (is_bool($only)) {
-      $this->only = $only;
-      return new c_base_return_true();
+    else if (isset($this->set_schema)) {
+      $value = $if_exists . $value . ' ' . $this->p_do_build_set_schema();
     }
-
-    $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'only', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
-    return c_base_return_error::s_false($error);
-  }
-
-  /**
-   * Get an action or all actions.
-   *
-   * @param int|null $index
-   *   (optional) Get the action at the specified index.
-   *   When NULL, all actions are returned.
-   *
-   * @return c_database_alter_foreign_table_action|c_base_return_array|c_base_return_null
-   *   An array of actions or NULL if not defined.
-   *   A single action is returned if $index is an integer.
-   *   NULL with the error bit set is returned on error.
-   */
-  public function get_action($index = NULL) {
-    if (is_null($this->actions)) {
-      return new c_base_return_null();
+    else if (isset($this->action_add_column)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_add_column();
     }
-
-    if (is_null($index)) {
-      if (is_array($this->actions)) {
-        return c_base_return_array::s_new($this->actions);
-      }
+    else if (isset($this->action_add_constraint)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_add_constraint();
     }
-    else {
-      if (is_int($index) && array_key_exists($index, $this->actions) && $this->actions[$index] instanceof c_database_alter_foreign_table_action) {
-        return $this->actions[$index];
-      }
-
-      $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'actions[index]', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
-      return c_base_return_error::s_null($error);
+    else if (isset($this->action_alter_column)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_alter_column();
     }
-
-    $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'actions', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
-    return c_base_return_error::s_null($error);
-  }
-
-  /**
-   * Get the if exists setting.
-   *
-   * @return c_base_return_bool|c_base_return_null
-   *   A boolean representing the IF EXISTS setting.
-   *   NULL is returned if not defined.
-   *   NULL with the error bit set is returned on error.
-   */
-  public function get_if_exists($index = NULL) {
-    if (is_null($this->if_exists)) {
-      return new c_base_return_null();
+    else if (isset($this->action_alter_column_options)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_alter_column_options();
     }
-
-    if (is_bool($index)) {
-      return c_base_return_bool::s_new($this->if_exists);
+    else if (isset($this->action_alter_column_reset)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_alter_column_reset();
     }
-
-    $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'if_exists', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
-    return c_base_return_error::s_null($error);
-  }
-
-  /**
-   * Get the include decendents setting.
-   *
-   * @return c_base_return_bool|c_base_return_null
-   *   A boolean representing the '*' setting.
-   *   NULL is returned if not defined.
-   *   NULL with the error bit set is returned on error.
-   */
-  public function get_include_decendents($index = NULL) {
-    if (is_null($this->include_decendents)) {
-      return new c_base_return_null();
+    else if (isset($this->action_alter_column_set)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_alter_column_set();
     }
-
-    if (is_bool($index)) {
-      return c_base_return_bool::s_new($this->include_decendents);
+    else if (isset($this->action_alter_constraint)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_alter_constraint();
     }
-
-    $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'include_decendents', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
-    return c_base_return_error::s_null($error);
-  }
-
-  /**
-   * Get the set only setting.
-   *
-   * @return c_base_return_bool|c_base_return_null
-   *   A boolean representing the ONLY setting.
-   *   NULL is returned if not defined.
-   *   NULL with the error bit set is returned on error.
-   */
-  public function get_set_only($index = NULL) {
-    if (is_null($this->set_only)) {
-      return new c_base_return_null();
+    else if (isset($this->action_disable_trigger)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_disable_trigger();
     }
-
-    if (is_bool($index)) {
-      return c_base_return_bool::s_new($this->set_only);
+    else if (isset($this->action_drop_columm)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_drop_columm();
     }
-
-    $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'set_only', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
-    return c_base_return_error::s_null($error);
-  }
-
-  /**
-   * Implements do_build().
-   */
-  public function do_build() {
-    if (is_null($this->name)) {
-      return new c_base_return_false();
+    else if (isset($this->action_drop_constraint)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_drop_constraint();
     }
-
-    $value = NULL;
-    if ($this->if_exists) {
-      $value = ' ' . c_database_string::IF_EXISTS;
+    else if (isset($this->action_enable_trigger)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_enable_trigger();
     }
-
-    if (is_array($this->rename_column)) {
-      if ($this->only) {
-        $value .= is_null($value) ? '' : ' ';
-        $value .= c_database_string::ONLY;
-      }
-
-      $value .= ' ' . $this->p_do_build_rename_column();
+    else if (isset($this->action_inherit)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_inherit();
     }
-    else if (isset($this->rename_to)) {
-      $value .= is_null($value) ? '' : ' ';
-      $value .= $this->p_do_build_rename_to();
+    else if (isset($this->action_options)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_options();
+    }
+    else if (isset($this->action_owner_to)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_owner_to();
+    }
+    else if (isset($this->action_set_oids)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_set_oids();
     }
-    else if (is_array($this->set_schema)) {
-      $value .= is_null($value) ? '' : ' ';
-      $value .= $this->p_do_build_set_schema();
+    else if (isset($this->action_validate_constraint)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_validate_constraint();
     }
     else {
-      if ($this->only) {
-        $value .= is_null($value) ? '' : ' ';
-        $value .= c_database_string::ONLY;
-      }
-
-      $value .= is_null($value) ? '' : ' ';
-      if (is_array($this->actions) && !empty($this->actions)) {
-        $actions = [];
-        foreach ($this->actions as $action) {
-          if ($action instanceof c_database_alter_foreign_table_action && $action->do_build() instanceof c_base_return_true) {
-            $actions[] = $action->get_value_exact();
-          }
-        }
-        unset($action);
-
-        $value .= implode(', ', $actions);
-        unset($actions);
-      }
-      else {
-        unset($value);
-        return new c_base_return_false();
-      }
+      unset($value);
+      unset($if_exists);
+      unset($only);
+      unset($wildcard);
+      return new c_base_return_false();
     }
+    unset($if_exists);
+    unset($only);
+    unset($wildcard);
 
     $this->value = static::p_QUERY_COMMAND;
-    $this->value .= ' ' . $this->p_do_build_name();
-
-    if ($this->include_descendents) {
-      $this->value .' *';
-    }
-
     $this->value .= ' ' . $value;
     unset($value);
 
index e613ed102ffcb167e82ddb914790dbb4260de183..52b91f8ba3fbab49ec13033f5f8ff5fe8f765687 100644 (file)
@@ -10,7 +10,6 @@ require_once('common/base/classes/base_return.php');
 
 require_once('common/database/classes/database_query.php');
 
-require_once('common/database/traits/database_all_in_tablespace.php');
 require_once('common/database/traits/database_cluster_on.php');
 require_once('common/database/traits/database_column_reset.php');
 require_once('common/database/traits/database_column_set.php');
@@ -37,7 +36,6 @@ require_once('common/database/traits/database_set_without_cluster.php');
  * @see: https://www.postgresql.org/docs/current/static/sql-altermaterializedview.html
  */
 class c_database_alter_materialized_view extends c_database_query {
-  use t_database_all_in_tablespace;
   use t_database_cluster_on;
   use t_database_column_reset;
   use t_database_column_set;
@@ -66,7 +64,6 @@ class c_database_alter_materialized_view extends c_database_query {
   public function __construct() {
     parent::__construct();
 
-    $this->all_in_tablespace       = NULL;
     $this->cluster_on              = NULL;
     $this->column_reset            = NULL;
     $this->column_set              = NULL;
@@ -91,7 +88,6 @@ class c_database_alter_materialized_view extends c_database_query {
    * Class destructor.
    */
   public function __destruct() {
-    unset($this->all_in_tablespace);
     unset($this->cluster_on);
     unset($this->column_reset);
     unset($this->column_set);
index bf3857e4bf78d6f794f6cfd5183282524c688a2c..7258d8079621c72d8b406418a80eff7b4a1c6a62 100644 (file)
@@ -10,14 +10,20 @@ require_once('common/base/classes/base_return.php');
 
 require_once('common/database/classes/database_query.php');
 
+require_once('common/database/traits/database_reset_configuration_parameter.php');
+require_once('common/database/traits/database_set_configuration_parameter.php');
+
 
 /**
- * The class for building and returning a Postgresql ALTER COALATION query string.
+ * The class for building and returning a Postgresql ALTER SYSTEM query string.
  *
- * @see: https://www.postgresql.org/docs/current/static/sql-alteraggregate.html
+ * @see: https://www.postgresql.org/docs/current/static/sql-altersystem.html
  */
-class c_database_alter_coalation extends c_database_query {
-  protected const p_QUERY_COMMAND = 'alter coalation';
+class c_database_alter_system extends c_database_query {
+  use t_database_reset_configuration_parameter;
+  use t_database_set_configuration_parameter;
+
+  protected const p_QUERY_COMMAND = 'alter system';
 
 
   /**
@@ -25,12 +31,19 @@ class c_database_alter_coalation extends c_database_query {
    */
   public function __construct() {
     parent::__construct();
+
+    $this->action_validate_constraint    = NULL;
+    $this->reset_configuration_parameter = NULL;
+    $this->set_configuration_parameter   = NULL;
   }
 
   /**
    * Class destructor.
    */
   public function __destruct() {
+    unset($this->reset_configuration_parameter);
+    unset($this->set_configuration_parameter);
+
     parent::__destruct();
   }
 
@@ -59,12 +72,18 @@ class c_database_alter_coalation extends c_database_query {
    * Implements do_build().
    */
   public function do_build() {
-    if (is_null($this->name)) {
+    $value = NULL;
+    if (isset($this->set_configuration_parameter)) {
+      $value = $this->p_do_build_set_configuration_parameter();
+    }
+    else if (isset($this->set_configuration_parameter)) {
+      $value = $this->p_do_build_set_configuration_parameter();
+    }
+    else {
+      unset($value);
       return new c_base_return_false();
     }
 
-    $value = $this->p_do_build_name();
-
     $this->value = static::p_QUERY_COMMAND;
     $this->value .= ' ' . $value;
     unset($value);
index bf3857e4bf78d6f794f6cfd5183282524c688a2c..3a1dc784267d00d5dd96a5f6e2c2c5ae2c6890f9 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /**
  * @file
- * Provides a class for specific Postgesql query: ALTER COALATION.
+ * Provides a class for specific Postgesql query: ALTER TABLE.
  */
 namespace n_koopa;
 
@@ -10,14 +10,72 @@ require_once('common/base/classes/base_return.php');
 
 require_once('common/database/classes/database_query.php');
 
+require_once('common/database/traits/database_action_add_column.php');
+require_once('common/database/traits/database_action_add_constraint.php');
+require_once('common/database/traits/database_action_alter_column.php');
+require_once('common/database/traits/database_action_alter_column_options.php');
+require_once('common/database/traits/database_action_alter_column_reset.php');
+require_once('common/database/traits/database_action_alter_column_set.php');
+require_once('common/database/traits/database_action_alter_constraint.php');
+require_once('common/database/traits/database_action_disable_trigger.php');
+require_once('common/database/traits/database_action_drop_columm.php');
+require_once('common/database/traits/database_action_drop_constraint.php');
+require_once('common/database/traits/database_action_enable_trigger.php');
+require_once('common/database/traits/database_action_inherit.php');
+require_once('common/database/traits/database_action_owner_to.php');
+require_once('common/database/traits/database_action_set_oids.php');
+require_once('common/database/traits/database_action_validate_constraint.php');
+require_once('common/database/traits/database_attach_partition.php');
+require_once('common/database/traits/database_detach_partition.php');
+require_once('common/database/traits/database_if_exists.php');
+require_once('common/database/traits/database_name.php');
+require_once('common/database/traits/database_no_wait.php');
+require_once('common/database/traits/database_only.php');
+require_once('common/database/traits/database_owned_by.php');
+require_once('common/database/traits/database_rename_column.php');
+require_once('common/database/traits/database_rename_constraint.php');
+require_once('common/database/traits/database_rename_to.php');
+require_once('common/database/traits/database_set_schema.php');
+require_once('common/database/traits/database_set_tablespace.php');
+require_once('common/database/traits/database_wildcard.php');
+
 
 /**
- * The class for building and returning a Postgresql ALTER COALATION query string.
+ * The class for building and returning a Postgresql ALTER TABLE query string.
  *
- * @see: https://www.postgresql.org/docs/current/static/sql-alteraggregate.html
+ * @see: https://www.postgresql.org/docs/current/static/sql-altertable.html
  */
-class c_database_alter_coalation extends c_database_query {
-  protected const p_QUERY_COMMAND = 'alter coalation';
+class c_database_alter_table extends c_database_query {
+  use t_database_action_add_column;
+  use t_database_action_add_constraint;
+  use t_database_action_alter_column;
+  use t_database_action_alter_column_options;
+  use t_database_action_alter_column_reset;
+  use t_database_action_alter_column_set;
+  use t_database_action_alter_constraint;
+  use t_database_action_disable_trigger;
+  use t_database_action_drop_columm;
+  use t_database_action_drop_constraint;
+  use t_database_action_enable_trigger;
+  use t_database_action_inherit;
+  use t_database_action_owner_to;
+  use t_database_action_set_oids;
+  use t_database_action_validate_constraint;
+  use t_database_attach_partition;
+  use t_database_detach_partition;
+  use t_database_if_exists;
+  use t_database_name;
+  use t_database_no_wait;
+  use t_database_only;
+  use t_database_owned_by;
+  use t_database_rename_column;
+  use t_database_rename_constraint;
+  use t_database_rename_to;
+  use t_database_set_schema;
+  use t_database_set_tablespace;
+  use t_database_wildcard;
+
+  protected const p_QUERY_COMMAND = 'alter table';
 
 
   /**
@@ -25,12 +83,71 @@ class c_database_alter_coalation extends c_database_query {
    */
   public function __construct() {
     parent::__construct();
+
+    $this->action_add_column           = NULL;
+    $this->action_add_constraint       = NULL;
+    $this->action_alter_column         = NULL;
+    $this->action_alter_column_options = NULL;
+    $this->action_alter_column_reset   = NULL;
+    $this->action_alter_column_set     = NULL;
+    $this->action_alter_constraint     = NULL;
+    $this->action_disable_trigger      = NULL;
+    $this->action_drop_columm          = NULL;
+    $this->action_drop_constraint      = NULL;
+    $this->action_enable_trigger       = NULL;
+    $this->action_inherit              = NULL;
+    $this->action_options              = NULL;
+    $this->action_owner_to             = NULL;
+    $this->action_set_oids             = NULL;
+    $this->attach_partition            = NULL;
+    $this->detach_partition            = NULL;
+    $this->if_exists                   = NULL;
+    $this->name                        = NULL;
+    $this->no_wait                     = NULL;
+    $this->only                        = NULL;
+    $this->owned_by                    = NULL;
+    $this->rename_column               = NULL;
+    $this->rename_constraint           = NULL;
+    $this->rename_to                   = NULL;
+    $this->set_schema                  = NULL;
+    $this->set_tablespace              = NULL;
+    $this->wildcard                    = NULL;
   }
 
   /**
    * Class destructor.
    */
   public function __destruct() {
+    unset($this->action_add_column);
+    unset($this->action_add_constraint);
+    unset($this->action_alter_column);
+    unset($this->action_alter_column_options);
+    unset($this->action_alter_column_reset);
+    unset($this->action_alter_column_set);
+    unset($this->action_alter_constraint);
+    unset($this->action_disable_trigger);
+    unset($this->action_drop_columm);
+    unset($this->action_drop_constraint);
+    unset($this->action_enable_trigger);
+    unset($this->action_inherit);
+    unset($this->action_options);
+    unset($this->action_owner_to);
+    unset($this->action_set_oids);
+    unset($this->action_validate_constraint);
+    unset($this->attach_partition);
+    unset($this->detach_partition);
+    unset($this->if_exists);
+    unset($this->name);
+    unset($this->no_wait);
+    unset($this->only);
+    unset($this->owned_by);
+    unset($this->rename_column);
+    unset($this->rename_constraint);
+    unset($this->rename_to);
+    unset($this->set_schema);
+    unset($this->set_tablespace);
+    unset($this->wildcard);
+
     parent::__destruct();
   }
 
@@ -63,7 +180,111 @@ class c_database_alter_coalation extends c_database_query {
       return new c_base_return_false();
     }
 
+    $if_exists = NULL;
+    if ($this->if_exists) {
+      $if_exists = $this->p_do_build_if_exists() . ' ';
+    }
+
+    $only = NULL;
+    if ($this->only) {
+      $only = $this->p_do_build_only() . ' ';
+    }
+
+    $wildcard = NULL;
+    if ($this->wildcard) {
+      $wildcard = ' ' . $this->p_do_build_wildcard();
+    }
+
     $value = $this->p_do_build_name();
+    if (isset($this->rename_column)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_rename_column();
+    }
+    else if (isset($this->rename_constraint)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_rename_constraint();
+    }
+    else if (isset($this->rename_to)) {
+      $value = $if_exists . $wildcard . $this->p_do_build_rename_to();
+    }
+    else if (isset($this->set_schema)) {
+      $value = $if_exists . $wildcard . $this->p_do_build_set_schema();
+    }
+    else if (isset($this->set_tablespace)) {
+      $value = c_database_string::ALL_IN_TABLESPACE . ' ' . $value;
+
+      if (!is_null($this->owned_by)) {
+        $value .= ' ' . $this->p_do_build_owned_by();
+      }
+
+      $value .= ' ' . $this->p_do_build_set_tablespace();
+
+      if (is_bool($this->no_wait)) {
+        $value .= ' ' . $this->p_do_build_no_wait();
+      }
+    }
+    else if (isset($this->attach_partition)) {
+      $value =$if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_attach_partition();
+    }
+    else if (isset($this->detach_partition)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_detach_partition();
+    }
+    else if (isset($this->action_add_column)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_add_column();
+    }
+    else if (isset($this->action_add_constraint)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_add_constraint();
+    }
+    else if (isset($this->action_alter_column)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_alter_column();
+    }
+    else if (isset($this->action_alter_column_options)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_alter_column_options();
+    }
+    else if (isset($this->action_alter_column_reset)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_alter_column_reset();
+    }
+    else if (isset($this->action_alter_column_set)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_alter_column_set();
+    }
+    else if (isset($this->action_alter_constraint)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_alter_constraint();
+    }
+    else if (isset($this->action_disable_trigger)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_disable_trigger();
+    }
+    else if (isset($this->action_drop_columm)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_drop_columm();
+    }
+    else if (isset($this->action_drop_constraint)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_drop_constraint();
+    }
+    else if (isset($this->action_enable_trigger)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_enable_trigger();
+    }
+    else if (isset($this->action_inherit)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_inherit();
+    }
+    else if (isset($this->action_options)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_options();
+    }
+    else if (isset($this->action_owner_to)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_owner_to();
+    }
+    else if (isset($this->action_set_oids)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_set_oids();
+    }
+    else if (isset($this->action_validate_constraint)) {
+      $value = $if_exists . $only . $value . ' ' . $wildcard . $this->p_do_build_action_validate_constraint();
+    }
+    else {
+      unset($value);
+      unset($if_exists);
+      unset($only);
+      unset($wildcard);
+      return new c_base_return_false();
+    }
+    unset($if_exists);
+    unset($only);
+    unset($wildcard);
 
     $this->value = static::p_QUERY_COMMAND;
     $this->value .= ' ' . $value;
index a9e538b44fd714ce579df97b5432568f2e49294e..0689f6ce7228c50f9fda018397061d3839c9342b 100644 (file)
@@ -134,7 +134,7 @@ abstract class c_database_query extends c_base_return_string implements i_databa
    *   When NULL, the placeholder is appended.
    *
    * @return i_database_query_placeholder|c_base_return_false
-   *   A query placeholder representing is returned on success.
+   *   A query placeholder representing is returned.
    *   FALSE with the error bit set is returned on error.
    */
   public function add_placeholder($value, $placeholder = NULL) {
index 73e0b420109244ade6d5f08de635e60e598bb8aa..f0225af56b861bda231231a4ee49abfdb9157317 100644 (file)
@@ -13,6 +13,7 @@ namespace n_koopa;
 class c_database_string {
   public const ACCESS_METHOD                         = 'access method';
   public const ADD                                   = 'add';
+  public const ADD_COLUMN                            = 'add column';
   public const ADD_TABLE                             = 'add table';
   public const AGGREGATE                             = 'aggregate';
   public const ALL                                   = 'all';
@@ -20,6 +21,7 @@ class c_database_string {
   public const ALTER                                 = 'alter';
   public const AS                                    = 'as';
   public const ASCEND                                = 'asc';
+  public const ATTACH_PARTITION                      = 'attach partition';
   public const AUTOSUMMARIZE                         = 'autosummarize';
   public const AUTOVACUUM_ANALYZE_SCALE_FACTOR       = 'autovacuum_analyze_scale_factor';
   public const AUTOVACUUM_ANALYZE_THRESHOLD          = 'autovacuum_analyze_threshold';
@@ -40,6 +42,7 @@ class c_database_string {
   public const CASCADE                               = 'cascade';
   public const CAST                                  = 'cast';
   public const CLUSTER_ON                            = 'cluster on';
+  public const COLLATE                               = 'collate';
   public const COLLATION                             = 'collation';
   public const COLUMN                                = 'column';
   public const CONNECT                               = 'connect';
@@ -61,9 +64,9 @@ class c_database_string {
   public const DISABLE_TRIGGER                       = 'disable trigger';
   public const DOMAIN                                = 'domain';
   public const DROP                                  = 'drop';
-  public const DROP_TABLE                            = 'drop table';
   public const DROP_CONSTRAINT                       = 'drop constraint';
   public const DROP_DEFAULT                          = 'drop default';
+  public const DROP_TABLE                            = 'drop table';
   public const ENABLE                                = 'enable';
   public const ENABLED                               = 'enabled';
   public const ENABLE_ALWAYS_TRIGGER                 = 'enable always trigger';
@@ -82,6 +85,7 @@ class c_database_string {
   public const FOR_ORDER_BY                          = 'for order by';
   public const FOR_ROLE                              = 'for role';
   public const FOR_SEARCH                            = 'for search';
+  public const FOR_VALUES                            = 'for values';
   public const FROM_CURRENT                          = 'from current';
   public const FUNCTION                              = 'function';
   public const GRANT                                 = 'grant';
@@ -173,6 +177,7 @@ class c_database_string {
   public const SEQUENCE                              = 'sequence';
   public const SERVER                                = 'server';
   public const SET                                   = 'set';
+  public const SET_DATA                              = 'set data';
   public const SET_DEFAULT                           = 'set default';
   public const SET_PUBLICATION                       = 'set publication';
   public const SET_SCHEMA                            = 'set schema';
diff --git a/common/database/enumerations/database_alter_column.php b/common/database/enumerations/database_alter_column.php
new file mode 100644 (file)
index 0000000..79d082c
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+/**
+ * @file
+ * Provides enumeration classes for managing codes used for generating specific Postgesql Queries.
+ *
+ * @see: https://www.postgresql.org/docs/current/static/sql-commands.html
+ */
+namespace n_koopa;
+
+/**
+ * Codes associated with database actions.
+ */
+class e_database_alter_column {
+  public const NONE           = 0;
+  public const DROP           = 1;
+  public const DROP_DEFAULT   = 2;
+  public const SET            = 3;
+  public const SET_DATA       = 4;
+  public const SET_DEFAULT    = 5;
+  public const SET_STATISTICS = 6;
+  public const SET_STORAGE    = 7;
+}
index 51e0b454f7175292c45a51e489a25c270122704b..4686c42ea27740dcf20f1b0faa7d9acb73a9a5f3 100644 (file)
@@ -36,7 +36,7 @@ interface i_database_query_placeholder {
    * Gets the id used for generating the placeholder name.
    *
    * @return c_base_return_id|c_base_return_null
-   *   A value is returned on success.
+   *   A value is returned.
    *   NULL is returned if not assigned.
    *   NULL with the error bit set is returned on error.
    */
@@ -46,7 +46,7 @@ interface i_database_query_placeholder {
    * Gets a placeholder name, generated from the prefix and id.
    *
    * @return c_base_return_string|c_base_return_null
-   *   A value is returned on success.
+   *   A value is returned.
    *   NULL is returned if not assigned.
    *   NULL with the error bit set is returned on error.
    */
@@ -56,7 +56,7 @@ interface i_database_query_placeholder {
    * Gets the prefix used for generating the placeholder name.
    *
    * @return c_base_return_string|c_base_return_null
-   *   A value is returned on success.
+   *   A value is returned.
    *   NULL with the error bit set is returned on error.
    */
   public function get_placeholder();
index 8732dd630b459033a99908846fb017629c3476bf..c1847d527bb7fddf97a48d59ad28d706b4956b43 100644 (file)
@@ -55,7 +55,7 @@ trait t_database_action {
    * Get the currently assigned action.
    *
    * @return c_base_return_int|c_base_return_null
-   *   Integer representing the action is returned on success.
+   *   Integer representing the action is returned.
    *   NULL is returned if undefined.
    *   FALSE with error bit set is returned on error.
    */
@@ -106,7 +106,7 @@ trait t_database_action_property {
    * Get the currently assigned action property.
    *
    * @return c_base_return_int|c_base_return_null
-   *   Integer representing the action property is returned on success.
+   *   Integer representing the action property is returned.
    *   NULL is returned if undefined.
    *   FALSE with error bit set is returned on error.
    */
@@ -162,7 +162,7 @@ trait t_database_action_parameter {
    * Get the currently assigned action parameter.
    *
    * @return c_base_return_string|c_base_return_array|c_database_query|c_base_return_null
-   *   String or array representing the action parameters are returned on success.
+   *   String or array representing the action parameters are returned.
    *   NULL is returned if undefined.
    *   FALSE with error bit set is returned on error.
    */
diff --git a/common/database/traits/database_action_add_column.php b/common/database/traits/database_action_add_column.php
new file mode 100644 (file)
index 0000000..fc2cb7a
--- /dev/null
@@ -0,0 +1,174 @@
+<?php
+/**
+ * @file
+ * Provides traits for specific Postgesql Queries.
+ *
+ * @see: https://www.postgresql.org/docs/current/static/sql-commands.html
+ */
+namespace n_koopa;
+
+require_once('common/base/classes/base_error.php');
+require_once('common/base/classes/base_return.php');
+
+/**
+ * Provide the sql action ADD COLUMN functionality.
+ */
+trait t_database_action_add_column {
+  protected $action_add_column;
+
+  /**
+   * Set the action ADD COLUMN settings.
+   *
+   * @param string|null $column_name
+   *   The column name to use.
+   *   Set to NULL to disable.
+   * @param string|null $data_type
+   *   (optional) The data type to use.
+   *   Required when $column_name is not NULL and $column_constraint is NULL.
+   *   Ignored when $column_name is NULL.
+   * @param string|null $collate
+   *   (optional) The collate to use.
+   *   Ignored when $column_name is NULL.
+   * @param array|null $column_constraints
+   *   (optional) An array of column constraint strings to add.
+   *   Ignored when $column_name is NULL.
+   *
+   * @return c_base_return_status
+   *   TRUE on success, FALSE otherwise.
+   *   FALSE with the error bit set is returned on error.
+   */
+  public function set_action_add_column($column_name, $data_type = NULL, $collate = NULL, $column_constraints = NULL) {
+    if (is_null($column_name)) {
+      $this->action_add_column = NULL;
+      return new c_base_return_true();
+    }
+
+    if (!is_string($column_name)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'column_name', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    if (!is_string($data_type)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'data_type', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    if (!is_null($collate) && !is_string($collate)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'collate', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    if (!is_null($column_constraints) && !is_array($column_constraints)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'column_constraints', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    $placeholder_column_name = $this->add_placeholder($column_name);
+    if ($placeholder_column_name->has_error()) {
+      return c_base_return_error::s_false($placeholder_column_name->get_error());
+    }
+
+    $placeholder_data_type = NULL;
+    if (!is_null($data_type)) {
+      $placeholder_data_type = $this->add_placeholder($data_type);
+      if ($placeholder_data_type->has_error()) {
+        unset($placeholder_column_name);
+        return c_base_return_error::s_false($placeholder_data_type->get_error());
+      }
+    }
+
+    $placeholder_collate = NULL;
+    if (!is_null($collate)) {
+      $placeholder_collate = $this->add_placeholder($collate);
+      if ($placeholder_collate->has_error()) {
+        unset($placeholder_column_name);
+        unset($placeholder_data_type);
+        return c_base_return_error::s_false($placeholder_collate->get_error());
+      }
+    }
+
+    $placeholder_constraints = NULL;
+    if (!is_null($column_constraint)) {
+      $placeholder_constraints = [];
+      foreach ($column_constraint as $column_constraint) {
+        if (!is_string($column_constraint)) {
+          unset($column_constraint);
+          unset($placeholder_column_name);
+          unset($placeholder_data_type);
+          unset($placeholder_collate);
+          unset($placeholder_constraints);
+          $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'column_constraints', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+          return c_base_return_error::s_false($error);
+        }
+
+        $placeholder_constraint = $this->add_placeholder($column_constraint);
+        if ($placeholder_constraint->has_error()) {
+          unset($column_constraint);
+          unset($placeholder_column_name);
+          unset($placeholder_data_type);
+          unset($placeholder_collate);
+          return c_base_return_error::s_false($placeholder_constraint->get_error());
+        }
+
+        $placeholder_constraints[] = $placeholder_constraint;
+      }
+      unset($column_constraint);
+    }
+
+    $this->action_add_column = [
+      'column_name' => $placeholder_column_name,
+      'data_type' => $placeholder_data_type,
+      'collate' => $placeholder_collate,
+      'column_constraints' => $placeholder_constraints,
+    ];
+    unset($placeholder_column_name);
+    unset($placeholder_data_type);
+    unset($placeholder_collate);
+    unset($placeholder_constraints);
+
+    return new c_base_return_true();
+  }
+
+  /**
+   * Get the currently assigned action add column settings.
+   *
+   * @return c_base_return_array|c_base_return_null
+   *   An array containing the settings.
+   *   NULL is returned if not set.
+   *   NULL with the error bit set is returned on error.
+   */
+  public function get_action_add_column() {
+    if (is_null($this->action_add_column)) {
+      return new c_base_return_null();
+    }
+
+    if (is_array($this->action_add_column)) {
+      return c_base_return_array::s_new($this->action_add_column);
+    }
+
+    $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'action_add_column', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
+    return c_base_return_error::s_null($error);
+  }
+
+  /**
+   * Perform the common build process for this trait.
+   *
+   * As an internal trait method, the caller is expected to perform any appropriate validation.
+   *
+   * @return string|null
+   *   A string is returned.
+   *   NULL is returned if there is nothing to process or there is an error.
+   */
+  protected function p_do_build_action_add_column() {
+    $value = c_database_string::ADD_COLUMN . ' ' . $this->action_add_column['column_name'] . ' ' . $this->action_add_column['data_type'];
+    if (!is_null($this->action_add_column['collate'])) {
+      $value .= ' ' . $this->action_add_column['collate'];
+    }
+
+    if (isset($this->action_add_column['column_constraints'])) {
+      $value .= ' ' . implode(' ', $this->action_add_column['column_constraints']);
+    }
+
+    return $value;
+  }
+}
diff --git a/common/database/traits/database_action_alter_column.php b/common/database/traits/database_action_alter_column.php
new file mode 100644 (file)
index 0000000..19aa2ac
--- /dev/null
@@ -0,0 +1,235 @@
+<?php
+/**
+ * @file
+ * Provides traits for specific Postgesql Queries.
+ *
+ * @see: https://www.postgresql.org/docs/current/static/sql-commands.html
+ */
+namespace n_koopa;
+
+require_once('common/base/classes/base_error.php');
+require_once('common/base/classes/base_return.php');
+
+require_once('common/base/enumerations/database_alter_column.php');
+
+/**
+ * Provide the sql action ALTER COLUMN functionality.
+ */
+trait t_database_action_alter_column {
+  protected $action_alter_column;
+
+  /**
+   * Set the action ALTER COLUMN settings.
+   *
+   * @param string|null $column_name
+   *   The column name to use.
+   *   Set to NULL to disable.
+   * @param int|null $type
+   *   (optional) An e_database_alter_column code.
+   *   Required when $column_name is not NULL.
+   *   Ignored when $column_name is NULL.
+   * @param string|int|bool|null $value
+   *   (optional) The value dependent on the $type.
+   *   Ignored when $column_name is NULL.
+   * @param string||null $value2
+   *   (optional) The value dependent on the $value.
+   *   If $value is SET_DATA, then this is a string representing the collation.
+   *   Ignored when $value does not utilize this.
+   *   Ignored when $column_name is NULL.
+   *
+   * @return c_base_return_status
+   *   TRUE on success, FALSE otherwise.
+   *   FALSE with the error bit set is returned on error.
+   */
+  public function set_action_alter_column($column_name, $type = NULL, $value = NULL, $value2 = NULL) {
+    if (is_null($column_name)) {
+      $this->action_alter_column = NULL;
+      return new c_base_return_true();
+    }
+
+    if (!is_string($column_name)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'column_name', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    $valid_value = false;
+    switch ($type) {
+      case e_database_alter_column::DROP:
+      case e_database_alter_column::SET:
+        $valid_value = is_null($value) || is_bool($value);
+        break;
+
+      case e_database_alter_column::DROP_DEFAULT:
+        break;
+
+      case e_database_alter_column::SET_DATA:
+        $valid_value = is_string($value);
+
+        if (!is_null($value2) && !is_string($value2)) {
+          unset($valid_value);
+          $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'value2', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+          return c_base_return_error::s_false($error);
+        }
+        break;
+
+      case e_database_alter_column::SET_DEFAULT:
+        $valid_value = is_string($value);
+        break;
+
+      case e_database_alter_column::SET_STATISTICS:
+        $valid_value = is_int($value);
+        break;
+
+      case e_database_alter_column::SET_STORAGE:
+        switch($value) {
+          case e_database_set_storage::EXTENDED:
+          case e_database_set_storage::EXTERNAL:
+          case e_database_set_storage::MAIN:
+          case e_database_set_storage::PLAIN:
+            $valid_value = true;
+            break;
+        }
+        break;
+
+      default:
+        unset($valid_value);
+        $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'type', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+        return c_base_return_error::s_false($error);
+    }
+
+    if (!$valid_value) {
+      unset($valid_value);
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'value', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+    unset($invalid_value);
+
+    $placeholder_column_name = $this->add_placeholder($column_name);
+    if ($placeholder_column_name->has_error()) {
+      return c_base_return_error::s_false($placeholder_column_name->get_error());
+    }
+
+    $placeholder_value = $value;
+    if (is_string($value)) {
+      $placeholder_value = $this->add_placeholder($value);
+      if ($placeholder_value->has_error()) {
+        unset($placeholder_column_name);
+        return c_base_return_error::s_false($placeholder_value->get_error());
+      }
+    }
+
+    $placeholder_value2 = NULL;
+    if ($type === e_database_alter_column::SET_DATA) {
+      $placeholder_value2 = $this->add_placeholder($value2);
+      if ($placeholder_value2->has_error()) {
+        unset($placeholder_column_name);
+        unset($placeholder_value);
+        return c_base_return_error::s_false($placeholder_value2->get_error());
+      }
+    }
+
+    $this->action_alter_column = [
+      'column_name' => $placeholder_column_name,
+      'type' => $type,
+      'value' => $placeholder_value,
+      'value2' => $placeholder_value2,
+    ];
+    unset($placeholder_column_name);
+    unset($placeholder_value);
+    unset($placeholder_value2);
+
+    return new c_base_return_true();
+  }
+
+  /**
+   * Get the currently assigned action alter column settings.
+   *
+   * @return c_base_return_array|c_base_return_null
+   *   An array containing the settings.
+   *   NULL is returned if not set.
+   *   NULL with the error bit set is returned on error.
+   */
+  public function get_action_alter_column() {
+    if (is_null($this->action_alter_column)) {
+      return new c_base_return_null();
+    }
+
+    if (is_array($this->action_alter_column)) {
+      return c_base_return_array::s_new($this->action_alter_column);
+    }
+
+    $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'action_alter_column', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
+    return c_base_return_error::s_null($error);
+  }
+
+  /**
+   * Perform the common build process for this trait.
+   *
+   * As an internal trait method, the caller is expected to perform any appropriate validation.
+   *
+   * @return string|null
+   *   A string is returned.
+   *   NULL is returned if there is nothing to process or there is an error.
+   */
+  protected function p_do_build_action_alter_column() {
+    $value = c_database_string::ALTER_COLUMN . ' ' . $this->action_alter_column['column_name'];
+
+    switch ($this->action_alter_column['type']) {
+      case e_database_alter_column::DROP:
+        $value .= ' ' . c_database_string::DROP;
+        if ($this->action_alter_column['value']) {
+          $value .= ' ' . c_database_string::NOT_NULL;
+        }
+        break;
+
+      case e_database_alter_column::SET:
+        $value .= ' ' . c_database_string::SET;
+        if ($this->action_alter_column['value']) {
+          $value .= ' ' . c_database_string::NOT_NULL;
+        }
+        break;
+
+      case e_database_alter_column::DROP_DEFAULT:
+        $value .= ' ' . c_database_string::DROP_DEFAULT;
+        break;
+
+      case e_database_alter_column::SET_DATA:
+        $value .= ' ' . c_database_string::SET_DATA;
+        $value .= ' ' . c_database_string::TYPE;
+        $value .= ' ' . strval($this->action_alter_column['value']);
+        if (isset($this->action_alter_column['value2'])) {
+          $value .= ' ' . c_database_string::COLLATE;
+          $value .= ' ' . strval($this->action_alter_column['value2']);
+        }
+        break;
+
+      case e_database_alter_column::SET_DEFAULT:
+        $value .= ' ' . c_database_string::SET_DEFAULT;
+        $value .= ' ' . strval($this->action_alter_column['value']);
+        break;
+
+      case e_database_alter_column::SET_STATISTICS:
+        $value .= ' ' . c_database_string::SET_STATISTICS;
+        $value .= ' ' . $this->action_alter_column['value'];
+        break;
+
+      case e_database_alter_column::SET_STORAGE:
+        $value .= ' ' . c_database_string::SET_STORAGE;
+        if ($this->action_alter_column['value'] === e_database_set_storage::EXTENDED) {
+          $value .= ' ' . c_database_string::EXTENDED;
+        }
+        else if ($this->action_alter_column['value'] === e_database_set_storage::EXTERNAL) {
+          $value .= ' ' . c_database_string::EXTERNAL;
+        }
+        else if ($this->action_alter_column['value'] === e_database_set_storage::MAIN) {
+          $value .= ' ' . c_database_string::MAIN;
+        }
+        else if ($this->action_alter_column['value'] === e_database_set_storage::PLAIN) {
+          $value .= ' ' . c_database_string::PLAIN;
+        }
+        break;
+    }
+
+    return $value;
+  }
+}
diff --git a/common/database/traits/database_action_alter_column_options.php b/common/database/traits/database_action_alter_column_options.php
new file mode 100644 (file)
index 0000000..3e289a4
--- /dev/null
@@ -0,0 +1,176 @@
+<?php
+/**
+ * @file
+ * Provides traits for specific Postgesql Queries.
+ *
+ * @see: https://www.postgresql.org/docs/current/static/sql-commands.html
+ */
+namespace n_koopa;
+
+require_once('common/base/classes/base_error.php');
+require_once('common/base/classes/base_return.php');
+
+require_once('common/database/enumerations/database_options.php');
+
+require_once('common/database/classes/database_string.php');
+
+/**
+ * Provide the sql action ALTER COLUMN OPTIONS functionality.
+ */
+trait t_database_action_alter_column_options {
+  protected $action_alter_column_options;
+
+  /**
+   * Set the OPTIONS settings.
+   *
+   * @param string|null $column_name
+   *   The column name to use.
+   *   Set to NULL to disable.
+   * @param int|null $type
+   *   (optional) The option type from e_database_options.
+   *   This is required when $column_name is not NULL.
+   * @param string|null $option
+   *   (optional) The configuration option.
+   *   This is required when $column_name is not NULL.
+   * @param string|null $value
+   *   (optional) The configuration options value.
+   *   This is required when $column_name is not NULL.
+   *
+   * @return c_base_return_status
+   *   TRUE on success, FALSE otherwise.
+   *   FALSE with the error bit set is returned on error.
+   */
+  public function set_action_alter_column_options($column_name, $type = NULL, $option = NULL, $value = NULL) {
+    if (is_null($column_name)) {
+      $this->action_alter_column_options = NULL;
+      return new c_base_return_true();
+    }
+
+    switch($type) {
+      case e_database_options::ADD:
+      case e_database_options::DROP:
+      case e_database_options::SET:
+        break;
+      default:
+        $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'type', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+        return c_base_return_error::s_false($error);
+    }
+
+    if (!is_string($option)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'option', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    if (!is_string($value)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'value', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    $placeholder_name = $this->add_placeholder($name);
+    if ($placeholder_name->has_error()) {
+      return c_base_return_error::s_false($placeholder_name->get_error());
+    }
+
+    $placeholder_option = $this->add_placeholder($option);
+    if ($placeholder_option->has_error()) {
+      unset($placeholder_name);
+      return c_base_return_error::s_false($placeholder_option->get_error());
+    }
+
+    $placeholder_value = $this->add_placeholder($value);
+    if ($placeholder_value->has_error()) {
+      unset($placeholder_name);
+      unset($placeholder_option);
+      return c_base_return_error::s_false($placeholder_value->get_error());
+    }
+
+    if (!is_array($this->action_alter_column_options)) {
+      $this->action_alter_column_options = [
+        'column_name' => $placeholder_name,
+        'values' => [],
+      ];
+    }
+
+    $this->action_alter_column_options[] = [
+      'type' => $type,
+      'option' => $placeholder_option,
+      'value' => $placeholder_value,
+    ];
+    unset($placeholder_name);
+    unset($placeholder_option);
+    unset($placeholder_value);
+
+    return new c_base_return_true();
+  }
+
+  /**
+   * Get the currently assigned settings.
+   *
+   * @param int|null $index
+   *   (optional) Get the settings at the specified index.
+   *   When NULL, all settings are returned.
+   *
+   * @return c_base_return_array|c_base_return_null
+   *   An array of settings or NULL if not defined.
+   *   A single settings is returned if $index is an integer.
+   *   NULL with the error bit set is returned on error.
+   */
+  public function get_action_alter_column_options($index = NULL) {
+    if (is_null($this->action_alter_column_options)) {
+      return new c_base_return_null();
+    }
+
+    if (is_null($index)) {
+      if (is_array($this->action_alter_column_options)) {
+        return c_base_return_array::s_new($this->action_alter_column_options);
+      }
+    }
+    else {
+      if (is_int($index) && array_key_exists($index, $this->action_alter_column_options)) {
+        return c_base_return_array::s_new($this->action_alter_column_options[$index]);
+      }
+
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'action_alter_column_options[index]', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
+      return c_base_return_error::s_null($error);
+    }
+
+    $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'action_alter_column_options', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
+    return c_base_return_error::s_null($error);
+  }
+
+  /**
+   * Perform the common build process for this trait.
+   *
+   * As an internal trait method, the caller is expected to perform any appropriate validation.
+   *
+   * @return string|null
+   *   A string is returned.
+   *   NULL is returned if there is nothing to process or there is an error.
+   */
+  protected function p_do_build_action_alter_column_options() {
+    $value = c_database_string::ALTER_COLUMN . ' ' . $this->action_alter_column_options['column_name'] . ' ' . c_database_string::OPTIONS;
+
+    $values = [];
+    foreach ($this->action_alter_column_options['values'] as $set) {
+      if ($set['type'] === e_database_options::ADD) {
+        $set_value = c_database_string::ADD;
+      }
+      else if ($set['type'] === e_database_options::DROP) {
+        $set_value = c_database_string::DROP;
+      }
+      else if ($set['type'] === e_database_options::SET) {
+        $set_value = c_database_string::SET;
+      }
+      else {
+        continue;
+      }
+
+      $set_value .= ' ' . $set['option'] . ' ' . $set['value'];
+      $values[] = $set_value;
+    }
+    unset($set);
+    unset($set_value);
+
+    return $value . ' ' . implode(', ', $values);
+  }
+}
diff --git a/common/database/traits/database_action_alter_column_reset.php b/common/database/traits/database_action_alter_column_reset.php
new file mode 100644 (file)
index 0000000..528f2ae
--- /dev/null
@@ -0,0 +1,128 @@
+<?php
+/**
+ * @file
+ * Provides traits for specific Postgesql Queries.
+ *
+ * @see: https://www.postgresql.org/docs/current/static/sql-commands.html
+ */
+namespace n_koopa;
+
+require_once('common/base/classes/base_error.php');
+require_once('common/base/classes/base_return.php');
+
+require_once('common/database/classes/database_string.php');
+
+/**
+ * Provide the sql action ALTER COLUMN RESET attribute_option functionality.
+ */
+trait t_database_action_alter_column_reset {
+  protected $action_alter_column_reset;
+
+  /**
+   * Set the RESET attribute option settings.
+   *
+   * @param string|null $column_name
+   *   The column name to use.
+   *   Set to NULL to disable.
+   * @param string|null $option
+   *   (optional) The configuration option.
+   *   This is required when $column_name is not NULL.
+   *
+   * @return c_base_return_status
+   *   TRUE on success, FALSE otherwise.
+   *   FALSE with the error bit reset is returned on error.
+   */
+  public function reset_action_alter_column_reset($column_name, $option = NULL) {
+    if (is_null($column_name)) {
+      $this->action_alter_column_reset = NULL;
+      return new c_base_return_true();
+    }
+
+    if (!is_string($option)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'option', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    $placeholder_name = $this->add_placeholder($name);
+    if ($placeholder_name->has_error()) {
+      return c_base_return_error::s_false($placeholder_name->get_error());
+    }
+
+    $placeholder_option = $this->add_placeholder($option);
+    if ($placeholder_option->has_error()) {
+      unset($placeholder_name);
+      return c_base_return_error::s_false($placeholder_option->get_error());
+    }
+
+    if (!is_array($this->action_alter_column_reset)) {
+      $this->action_alter_column_reset = [
+        'column_name' => $placeholder_name,
+        'values' => [],
+      ];
+    }
+
+    $this->action_alter_column_reset[] = [
+      'option' => $placeholder_option,
+    ];
+    unset($placeholder_name);
+    unset($placeholder_option);
+
+    return new c_base_return_true();
+  }
+
+  /**
+   * Get the currently assigned settings.
+   *
+   * @param int|null $index
+   *   (optional) Get the settings at the specified index.
+   *   When NULL, all settings are returned.
+   *
+   * @return c_base_return_array|c_base_return_null
+   *   An array of settings or NULL if not defined.
+   *   A single settings is returned if $index is an integer.
+   *   NULL with the error bit reset is returned on error.
+   */
+  public function get_action_alter_column_reset($index = NULL) {
+    if (is_null($this->action_alter_column_reset)) {
+      return new c_base_return_null();
+    }
+
+    if (is_null($index)) {
+      if (is_array($this->action_alter_column_reset)) {
+        return c_base_return_array::s_new($this->action_alter_column_reset);
+      }
+    }
+    else {
+      if (is_int($index) && array_key_exists($index, $this->action_alter_column_reset)) {
+        return c_base_return_array::s_new($this->action_alter_column_reset[$index]);
+      }
+
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'action_alter_column_reset[index]', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
+      return c_base_return_error::s_null($error);
+    }
+
+    $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'action_alter_column_reset', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
+    return c_base_return_error::s_null($error);
+  }
+
+  /**
+   * Perform the common build process for this trait.
+   *
+   * As an internal trait method, the caller is expected to perform any appropriate validation.
+   *
+   * @return string|null
+   *   A string is returned.
+   *   NULL is returned if there is nothing to process or there is an error.
+   */
+  protected function p_do_build_action_alter_column_reset() {
+    $value = c_database_string::ALTER_COLUMN . ' ' . $this->action_alter_column_reset['column_name'] . ' ' . c_database_string::RESET;
+
+    $values = [];
+    foreach ($this->action_alter_column_reset['values'] as $reset) {
+      $values[] = $reset['option'];
+    }
+    unset($reset);
+
+    return $value . ' ' . implode(', ', $values);
+  }
+}
diff --git a/common/database/traits/database_action_alter_column_set.php b/common/database/traits/database_action_alter_column_set.php
new file mode 100644 (file)
index 0000000..c744fc1
--- /dev/null
@@ -0,0 +1,145 @@
+<?php
+/**
+ * @file
+ * Provides traits for specific Postgesql Queries.
+ *
+ * @see: https://www.postgresql.org/docs/current/static/sql-commands.html
+ */
+namespace n_koopa;
+
+require_once('common/base/classes/base_error.php');
+require_once('common/base/classes/base_return.php');
+
+require_once('common/database/classes/database_string.php');
+
+/**
+ * Provide the sql action ALTER COLUMN SET attribute_option functionality.
+ */
+trait t_database_action_alter_column_set {
+  protected $action_alter_column_set;
+
+  /**
+   * Set the SET attribute option settings.
+   *
+   * @param string|null $column_name
+   *   The column name to use.
+   *   Set to NULL to disable.
+   * @param string|null $option
+   *   (optional) The configuration option.
+   *   This is required when $column_name is not NULL.
+   * @param string|null $value
+   *   (optional) The configuration options value.
+   *   This is required when $column_name is not NULL.
+   *
+   * @return c_base_return_status
+   *   TRUE on success, FALSE otherwise.
+   *   FALSE with the error bit set is returned on error.
+   */
+  public function set_action_alter_column_set($column_name, $option = NULL, $value = NULL) {
+    if (is_null($column_name)) {
+      $this->action_alter_column_set = NULL;
+      return new c_base_return_true();
+    }
+
+    if (!is_string($option)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'option', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    if (!is_string($value)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'value', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    $placeholder_name = $this->add_placeholder($name);
+    if ($placeholder_name->has_error()) {
+      return c_base_return_error::s_false($placeholder_name->get_error());
+    }
+
+    $placeholder_option = $this->add_placeholder($option);
+    if ($placeholder_option->has_error()) {
+      unset($placeholder_name);
+      return c_base_return_error::s_false($placeholder_option->get_error());
+    }
+
+    $placeholder_value = $this->add_placeholder($value);
+    if ($placeholder_value->has_error()) {
+      unset($placeholder_name);
+      unset($placeholder_option);
+      return c_base_return_error::s_false($placeholder_value->get_error());
+    }
+
+    if (!is_array($this->action_alter_column_set)) {
+      $this->action_alter_column_set = [
+        'column_name' => $placeholder_name,
+        'values' => [],
+      ];
+    }
+
+    $this->action_alter_column_set[] = [
+      'option' => $placeholder_option,
+      'value' => $placeholder_value,
+    ];
+    unset($placeholder_name);
+    unset($placeholder_option);
+    unset($placeholder_value);
+
+    return new c_base_return_true();
+  }
+
+  /**
+   * Get the currently assigned settings.
+   *
+   * @param int|null $index
+   *   (optional) Get the settings at the specified index.
+   *   When NULL, all settings are returned.
+   *
+   * @return c_base_return_array|c_base_return_null
+   *   An array of settings or NULL if not defined.
+   *   A single settings is returned if $index is an integer.
+   *   NULL with the error bit set is returned on error.
+   */
+  public function get_action_alter_column_set($index = NULL) {
+    if (is_null($this->action_alter_column_set)) {
+      return new c_base_return_null();
+    }
+
+    if (is_null($index)) {
+      if (is_array($this->action_alter_column_set)) {
+        return c_base_return_array::s_new($this->action_alter_column_set);
+      }
+    }
+    else {
+      if (is_int($index) && array_key_exists($index, $this->action_alter_column_set)) {
+        return c_base_return_array::s_new($this->action_alter_column_set[$index]);
+      }
+
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'action_alter_column_set[index]', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
+      return c_base_return_error::s_null($error);
+    }
+
+    $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'action_alter_column_set', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
+    return c_base_return_error::s_null($error);
+  }
+
+  /**
+   * Perform the common build process for this trait.
+   *
+   * As an internal trait method, the caller is expected to perform any appropriate validation.
+   *
+   * @return string|null
+   *   A string is returned.
+   *   NULL is returned if there is nothing to process or there is an error.
+   */
+  protected function p_do_build_action_alter_column_set() {
+    $value = c_database_string::ALTER_COLUMN . ' ' . $this->action_alter_column_set['column_name'] . ' ' . c_database_string::SET;
+
+    $values = [];
+    foreach ($this->action_alter_column_set['values'] as $set) {
+      $values[] = $set['option'] . ' = ' . $set['value'];
+    }
+    unset($set);
+
+    return $value . ' ' . implode(', ', $values);
+  }
+}
diff --git a/common/database/traits/database_action_drop_column.php b/common/database/traits/database_action_drop_column.php
new file mode 100644 (file)
index 0000000..195d717
--- /dev/null
@@ -0,0 +1,127 @@
+<?php
+/**
+ * @file
+ * Provides traits for specific Postgesql Queries.
+ *
+ * @see: https://www.postgresql.org/docs/current/static/sql-commands.html
+ */
+namespace n_koopa;
+
+require_once('common/base/classes/base_error.php');
+require_once('common/base/classes/base_return.php');
+
+require_once('common/database/enumerations/database_cascade.php');
+
+/**
+ * Provide the sql action DROP COLUMN functionality.
+ */
+trait t_database_action_drop_column {
+  protected $action_drop_column;
+
+  /**
+   * Set the action DROP COLUMN settings.
+   *
+   * @param string|null $column_name
+   *   The column name to use.
+   *   Set to NULL to disable.
+   * @param bool|null $if_exists
+   *   (optional) TRUE for IF EXISTS, FALSE does nothing.
+   *   Required when $column_name is not NULL.
+   *   Ignored when $column_name is NULL.
+   * @param int|null $cascade
+   *   (optional) The cascade type from e_database_cascade.
+   *   Ignored when $column_name is NULL.
+   *
+   * @return c_base_return_status
+   *   TRUE on success, FALSE otherwise.
+   *   FALSE with the error bit set is returned on error.
+   */
+  public function set_action_drop_column($column_name, $if_exists = NULL, $cascade = NULL) {
+    if (is_null($column_name)) {
+      $this->action_drop_column = NULL;
+      return new c_base_return_true();
+    }
+
+    if (!is_string($column_name)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'column_name', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    if (!is_null($if_exists) && !is_bool($if_exists)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'if_exists', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    switch ($cascade) {
+      case e_database_cascade::CASCADE:
+      case e_database_cascade::RESTRICT:
+        break;
+
+      default:
+        $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'cascade', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+        return c_base_return_error::s_false($error);
+    }
+
+    $placeholder_column_name = $this->add_placeholder($column_name);
+    if ($placeholder_column_name->has_error()) {
+      return c_base_return_error::s_false($placeholder_column_name->get_error());
+    }
+
+    $this->action_drop_column = [
+      'column_name' => $placeholder_column_name,
+      'if_exists' => $if_exists,
+      'cascade' => $cascade,
+    ];
+    unset($placeholder_column_name);
+
+    return new c_base_return_true();
+  }
+
+  /**
+   * Get the currently assigned action drop column settings.
+   *
+   * @return c_base_return_array|c_base_return_null
+   *   An array containing the settings.
+   *   NULL is returned if not set.
+   *   NULL with the error bit set is returned on error.
+   */
+  public function get_action_drop_column() {
+    if (is_null($this->action_drop_column)) {
+      return new c_base_return_null();
+    }
+
+    if (is_array($this->action_drop_column)) {
+      return c_base_return_array::s_new($this->action_drop_column);
+    }
+
+    $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'action_drop_column', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
+    return c_base_return_error::s_null($error);
+  }
+
+  /**
+   * Perform the common build process for this trait.
+   *
+   * As an internal trait method, the caller is expected to perform any appropriate validation.
+   *
+   * @return string|null
+   *   A string is returned.
+   *   NULL is returned if there is nothing to process or there is an error.
+   */
+  protected function p_do_build_action_drop_column() {
+    $value = c_database_string::DROP_COLUMN . ' ' . $this->action_drop_column['column_name'];
+    if ($this->action_drop_column['if_exists']) {
+      $value = c_database_string::IF_EXISTS . ' ' . $value;
+    }
+
+    switch ($this->action_drop_column['cascade']) {
+      case e_database_cascade::CASCADE:
+        $value .= ' ' . c_database_string::CASCADE;
+        break;
+      case e_database_cascade::RESTRICT:
+        $value .= ' ' . c_database_string::RESTRICT;
+        break;
+    }
+
+    return $value;
+  }
+}
diff --git a/common/database/traits/database_action_options.php b/common/database/traits/database_action_options.php
new file mode 100644 (file)
index 0000000..a3af7d3
--- /dev/null
@@ -0,0 +1,163 @@
+<?php
+/**
+ * @file
+ * Provides traits for specific Postgesql Queries.
+ *
+ * @see: https://www.postgresql.org/docs/current/static/sql-commands.html
+ */
+namespace n_koopa;
+
+require_once('common/base/classes/base_error.php');
+require_once('common/base/classes/base_return.php');
+
+require_once('common/database/enumerations/database_actions.php');
+
+/**
+ * Provide action_options support for an SQL query.
+ */
+trait t_database_action_options {
+  protected $action_options;
+
+  /**
+   * Set the in action_options.
+   *
+   * @param string|null $type
+   *   The option type to use.
+   *   Set to NULL to disable.
+   *   When NULL, this will remove all values.
+   * @param string|null $option
+   *   (optional) The option name to use.
+   *   When type is NULL, this is ignored.
+   *   Required when $type is not NULL.
+   * @param string|null $value
+   *   (optional) The value to associate with the type.
+   *   When type is NULL, this is ignored.
+   *   Required when $type is not NULL.
+   *
+   * @return c_base_return_status
+   *   TRUE on success, FALSE otherwise.
+   *   FALSE with error bit set is returned on error.
+   */
+  public function set_action_options($type, $option = NULL, $value = NULL) {
+    if (is_null($type)) {
+      $this->action_options = NULL;
+      return new c_base_return_true();
+    }
+
+    if (!is_string($option)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'option', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    if (!is_string($value)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'value', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    switch ($type) {
+      case e_database_options::ADD:
+      case e_database_options::DROP:
+      case e_database_options::SET:
+        break;
+      default:
+        $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'schema_name', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+        return c_base_return_error::s_false($error);
+    };
+
+    if (!is_array($this->action_options)) {
+      $this->action_options = [];
+    }
+
+    $placeholder_option = $this->add_placeholder($option);
+    if ($placeholder_option->has_error()) {
+      return c_base_return_error::s_false($placeholder_option->get_error());
+    }
+
+    $placeholder_value = $this->add_placeholder($value);
+    if ($placeholder_value->has_error()) {
+      unset($placeholder_option);
+      return c_base_return_error::s_false($placeholder_value->get_error());
+    }
+
+    $this->action_options[] = [
+      'type' => $type,
+      'option' => $placeholder_option,
+      'value' => $placeholder_value,
+    ];
+    unset($placeholder_option);
+    unset($placeholder_value);
+
+    return new c_base_return_true();
+  }
+
+  /**
+   * Get the action_options.
+   *
+   * @param int|null $index
+   *   (optional) Get the action_options at the specified index.
+   *   When NULL, all action_options are returned.
+   *
+   * @return c_base_return_array|c_base_return_null
+   *   An array of action_options arrays or NULL if not defined.
+   *   A single action_options array is returned if $index is an integer.
+   *   NULL with the error bit set is returned on error.
+   */
+  public function get_action_options($index = NULL) {
+    if (is_null($this->action_options)) {
+      return new c_base_return_null();
+    }
+
+    if (is_null($index)) {
+      if (is_array($this->action_options)) {
+        return c_base_return_array::s_new($this->action_options);
+      }
+    }
+    else {
+      if (is_int($index) && array_key_exists($index, $this->action_options) && is_array($this->action_options[$index])) {
+        return c_base_return_array::s_new($this->action_options[$index]);
+      }
+
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'action_options[index]', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
+      return c_base_return_error::s_null($error);
+    }
+
+    $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'action_options', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
+    return c_base_return_error::s_null($error);
+  }
+
+  /**
+   * Perform the common build process for this trait.
+   *
+   * As an internal trait method, the caller is expected to perform any appropriate validation.
+   *
+   * @return string|null
+   *   A string is returned.
+   *   NULL is returned if there is nothing to process or there is an error.
+   */
+  protected function p_do_build_action_options() {
+    $value = c_database_string::OPTIONS;
+
+    $values = [];
+    foreach ($this->action_options['values'] as $set) {
+      if ($set['type'] === e_database_options::ADD) {
+        $set_value = c_database_string::ADD;
+      }
+      else if ($set['type'] === e_database_options::DROP) {
+        $set_value = c_database_string::DROP;
+      }
+      else if ($set['type'] === e_database_options::SET) {
+        $set_value = c_database_string::SET;
+      }
+      else {
+        continue;
+      }
+
+      $set_value .= ' ' . $set['option'] . ' ' . $set['value'];
+      $values[] = $set_value;
+    }
+    unset($set);
+    unset($set_value);
+
+    return $value . ' ' . implode(', ', $values);
+  }
+}
index 76fd2e507eda1b5f93b4eabed43253b561831309..efb8e12d02c5100a9876e4754a5e1017f93c78d9 100644 (file)
@@ -224,7 +224,7 @@ trait t_database_add_operator_family {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_add_operator_family() {
index 58fcd349c323a5a7fbf0db23ee4c4ee7eceea304..a84b2bea1f29730de31f8317afcad84ebe1ee93e 100644 (file)
@@ -83,7 +83,7 @@ trait t_database_add_table {
    *   When NULL, all add table settings are returned.
    *
    * @return c_base_return_array|c_base_return_null
-   *   An array containing the add table settings on success.
+   *   An array containing the add table settings.
    *   NULL is returned if not set (add table not to be used).
    *   NULL with the error bit set is returned on error.
    */
@@ -106,7 +106,7 @@ trait t_database_add_table {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_add_table() {
index d230563342d6591f74cbb6c356ecd83187d3fcdc..c92d24339e716815dfe6d897d7895405b9f681a0 100644 (file)
@@ -73,7 +73,7 @@ trait t_database_add_user {
    * Get the add/drop user settings.
    *
    * @return c_base_return_array|c_base_return_null
-   *   An array of add/drop user settings on success.
+   *   An array of add/drop user settings.
    *   NULL is returned if not set (add/drop user is not to be used).
    *   NULL with the error bit set is returned on error.
    */
@@ -96,7 +96,7 @@ trait t_database_add_user {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_add_user() {
index 87214bf3ada86043f46de3db2618a55f2fdcc61a..eceb7e6d0a09c6d92587cd07acd730e9c2234475 100644 (file)
@@ -128,7 +128,7 @@ trait t_database_argument_type {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_argument_type() {
index 16abfbae6cffa85fff5949bd6c50a0dba2fe2521..c418da1935220f1c006017f003d6de7bd06f29bc 100644 (file)
@@ -76,7 +76,7 @@ trait t_database_as_data_type {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_as_data_type() {
diff --git a/common/database/traits/database_attach_partition.php b/common/database/traits/database_attach_partition.php
new file mode 100644 (file)
index 0000000..b4645bc
--- /dev/null
@@ -0,0 +1,104 @@
+<?php
+/**
+ * @file
+ * Provides traits for specific Postgesql Queries.
+ *
+ * @see: https://www.postgresql.org/docs/current/static/sql-commands.html
+ */
+namespace n_koopa;
+
+require_once('common/base/classes/base_error.php');
+require_once('common/base/classes/base_return.php');
+
+/**
+ * Provide the sql ATTACH PARTITION functionality.
+ */
+trait t_database_attach_partition {
+  protected $attach_partition;
+
+  /**
+   * Set the ATTACH PARTITION settings.
+   *
+   * @param string|null $name
+   *   The partition name to use.
+   *   Set to NULL to disable.
+   * @param string|null $bound_spec
+   *   The bound spec to use.
+   *   Required when $name is not NULL.
+   *   Ignored when $name is NULL.
+   *
+   * @return c_base_return_status
+   *   TRUE on success, FALSE otherwise.
+   *   FALSE with the error bit set is returned on error.
+   */
+  public function set_attach_partition($name, $bound_spec = NULL) {
+    if (is_null($name)) {
+      $this->attach_partition = NULL;
+      return new c_base_return_true();
+    }
+
+    if (!is_string($name)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'name', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    if (!is_string($bound_spec)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'bound_spec', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    $placeholder_name = $this->add_placeholder($name);
+    if ($placeholder_name->has_error()) {
+      return c_base_return_error::s_false($placeholder_name->get_error());
+    }
+
+    $placeholder_bound_spec = $this->add_placeholder($bound_spec);
+    if ($placeholder_bound_spec->has_error()) {
+      unset($placeholder_name);
+      return c_base_return_error::s_false($placeholder_bound_spec->get_error());
+    }
+
+    $this->attach_partition = [
+      'name' => $placeholder_name,
+      'bound_spec' => $placeholder_bound_spec,
+    ];
+    unset($placeholder_name);
+    unset($placeholder_bound_spec);
+
+    return new c_base_return_true();
+  }
+
+  /**
+   * Get the currently assigned rename from settings.
+   *
+   * @return c_base_return_array|c_base_return_null
+   *   An array containing attach partition settings.
+   *   NULL is returned if not set.
+   *   NULL with the error bit set is returned on error.
+   */
+  public function get_attach_partition() {
+    if (is_null($this->attach_partition)) {
+      return new c_base_return_null();
+    }
+
+    if (is_array($this->attach_partition)) {
+      return c_base_return_array::s_new($this->attach_partition);
+    }
+
+    $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'attach_partition', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
+    return c_base_return_error::s_null($error);
+  }
+
+  /**
+   * Perform the common build process for this trait.
+   *
+   * As an internal trait method, the caller is expected to perform any appropriate validation.
+   *
+   * @return string|null
+   *   A string is returned.
+   *   NULL is returned if there is nothing to process or there is an error.
+   */
+  protected function p_do_build_attach_partition() {
+    return c_database_string::ATTACH_PARTITION . ' ' . $this->attach_partition['name'] . ' ' . c_database_string::FOR_VALUES . ' ' . $this->attach_partition['bound_spec'];
+  }
+}
index 14a1d4fcc51190c0b06a97d53d5c7392596bd1a2..c2d8a7c8b74aa7527067d0ab0a78ca1b55b7d707 100644 (file)
@@ -70,7 +70,7 @@ trait t_database_cache {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_cache() {
index e99bf5dceff6f81cceac9af106308347fa496d8c..cb49b5572c39fd134f19d063048c0bd218ffdc90 100644 (file)
@@ -71,7 +71,7 @@ trait t_database_cascade {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_cascade() {
index 2a0ee79176c7f24552b9e25bb1505f03470e12fb..190d95da7f5849b128a6a08582907f76fd5bb0e9 100644 (file)
@@ -76,7 +76,7 @@ trait t_database_cluster_on {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_cluster_on() {
index ce7dcdc3d197358610ed4b63ad48c08ed280c666..38a12858c49f013550efd5d42e35bf6b0bd2d062 100644 (file)
@@ -123,7 +123,7 @@ trait t_database_column_reset {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_column_reset() {
index acb3ff0352cc4413980d860ea7e7048e5a4298ae..adc7f8991638e7b0f857d5d86db8e5dfe89b9d69 100644 (file)
@@ -99,7 +99,7 @@ trait t_database_column_set {
    *   When NULL, all index attribute option types are returned.
    *
    * @return c_base_return_array|c_base_return_null
-   *   An array containing the set index attribute option settings on success.
+   *   An array containing the set index attribute option settings.
    *   NULL is returned if not set (set index attribute option not to be used).
    *   NULL with the error bit set is returned on error.
    */
@@ -132,7 +132,7 @@ trait t_database_column_set {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_column_set() {
index deb6ecd95e8187724f7d4429fecd8808b859b561..870fa57ac20fb8ec85e64f3f9511e174b484bf8d 100644 (file)
@@ -89,7 +89,7 @@ trait t_database_column_set_statistics {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_column_set_statistics() {
index 544499e5304518cccbd65175848b3a4a95562537..320bd19a5aa0505878d3a0991652bf961a7790de 100644 (file)
@@ -95,7 +95,7 @@ trait t_database_column_set_storage {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_column_set_storage() {
index d5d8060da027abe81ded685598e1b84298d2a012..06c44de855b9fb002d61fa24d4749a7ac41b3dd4 100644 (file)
@@ -76,10 +76,10 @@ trait t_database_connection {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_connection() {
-    return c_database_string::CONNECTION . ' ' . $this->connection;
+    return c_database_string::CONNECTION . ' ' . strval($this->connection);
   }
 }
index 38e4ed8d5375ba77432166e9dc346a39ac1f67e8..911d54505fe404e38e91bc7673e518f666a40bf5 100644 (file)
@@ -111,7 +111,7 @@ trait t_database_constraint {
    * Get the currently assigned constraint settings.
    *
    * @return c_base_return_array|c_base_return_null
-   *   An array of constraint settings on success.
+   *   An array of constraint settings.
    *   NULL is returned if not set (constraint is not to be used).
    *   NULL with the error bit set is returned on error.
    */
@@ -134,7 +134,7 @@ trait t_database_constraint {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_constraint() {
index d32376cef5ea2e31c4b68fab0d5447f1cc59a027..ccb7921dc6fb429da712fd8cccadebccf544b89c 100644 (file)
@@ -70,7 +70,7 @@ trait t_database_cycle {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_cycle() {
index 334addfe75e608963dc6340d0c42c4202de79ceb..ffc7d388229b044ea55bb6061e5d999ec23c8b53 100644 (file)
@@ -71,7 +71,7 @@ trait t_database_depends_on_extension {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_depends_on_extension() {
diff --git a/common/database/traits/database_detach_partition.php b/common/database/traits/database_detach_partition.php
new file mode 100644 (file)
index 0000000..13572a0
--- /dev/null
@@ -0,0 +1,104 @@
+<?php
+/**
+ * @file
+ * Provides traits for specific Postgesql Queries.
+ *
+ * @see: https://www.postgresql.org/docs/current/static/sql-commands.html
+ */
+namespace n_koopa;
+
+require_once('common/base/classes/base_error.php');
+require_once('common/base/classes/base_return.php');
+
+/**
+ * Provide the sql ATTACH PARTITION functionality.
+ */
+trait t_database_detach_partition {
+  protected $detach_partition;
+
+  /**
+   * Set the ATTACH PARTITION settings.
+   *
+   * @param string|null $name
+   *   The partition name to use.
+   *   Set to NULL to disable.
+   * @param string|null $bound_spec
+   *   The bound spec to use.
+   *   Required when $name is not NULL.
+   *   Ignored when $name is NULL.
+   *
+   * @return c_base_return_status
+   *   TRUE on success, FALSE otherwise.
+   *   FALSE with the error bit set is returned on error.
+   */
+  public function set_detach_partition($name, $bound_spec = NULL) {
+    if (is_null($name)) {
+      $this->detach_partition = NULL;
+      return new c_base_return_true();
+    }
+
+    if (!is_string($name)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'name', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    if (!is_string($bound_spec)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'bound_spec', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    $placeholder_name = $this->add_placeholder($name);
+    if ($placeholder_name->has_error()) {
+      return c_base_return_error::s_false($placeholder_name->get_error());
+    }
+
+    $placeholder_bound_spec = $this->add_placeholder($bound_spec);
+    if ($placeholder_bound_spec->has_error()) {
+      unset($placeholder_name);
+      return c_base_return_error::s_false($placeholder_bound_spec->get_error());
+    }
+
+    $this->detach_partition = [
+      'name' => $placeholder_name,
+      'bound_spec' => $placeholder_bound_spec,
+    ];
+    unset($placeholder_name);
+    unset($placeholder_bound_spec);
+
+    return new c_base_return_true();
+  }
+
+  /**
+   * Get the currently assigned rename from settings.
+   *
+   * @return c_base_return_array|c_base_return_null
+   *   An array containing detach partition settings.
+   *   NULL is returned if not set.
+   *   NULL with the error bit set is returned on error.
+   */
+  public function get_detach_partition() {
+    if (is_null($this->detach_partition)) {
+      return new c_base_return_null();
+    }
+
+    if (is_array($this->detach_partition)) {
+      return c_base_return_array::s_new($this->detach_partition);
+    }
+
+    $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'detach_partition', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
+    return c_base_return_error::s_null($error);
+  }
+
+  /**
+   * Perform the common build process for this trait.
+   *
+   * As an internal trait method, the caller is expected to perform any appropriate validation.
+   *
+   * @return string|null
+   *   A string is returned.
+   *   NULL is returned if there is nothing to process or there is an error.
+   */
+  protected function p_do_build_detach_partition() {
+    return c_database_string::ATTACH_PARTITION . ' ' . $this->detach_partition['name'] . ' ' . c_database_string::FOR_VALUES . ' ' . $this->detach_partition['bound_spec'];
+  }
+}
index affa0b1ba7dee2dd7b9ff468d34c067d855ec886..22972860ead1b129286c63da868d914ba99f8895 100644 (file)
@@ -69,7 +69,7 @@ trait t_database_disable {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_disable() {
index 5ac08eae90681f23f913f74b75c5bd9bd5b40df3..2cb0c7b275b1367edd85dae3b5de89007869fcab 100644 (file)
@@ -83,7 +83,7 @@ trait t_database_drop_value {
    *   When NULL, all add table settings are returned.
    *
    * @return c_base_return_array|c_base_return_null
-   *   An array containing the add table settings on success.
+   *   An array containing the add table settings.
    *   NULL is returned if not set (add table not to be used).
    *   NULL with the error bit set is returned on error.
    */
@@ -106,7 +106,7 @@ trait t_database_drop_value {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_drop_value() {
index a446aff7f129dcbacb1b380c04fc3ef4c29c8b19..131b2a5cb5673f061078aad532bdbb9556b9271c 100644 (file)
@@ -69,7 +69,7 @@ trait t_database_enable {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_enable() {
index 3350fdfb3023d31c55dc83113a0151a9bb2ac0af..039e8d2f601879472ceaa721cd7c1ee9dfc663bc 100644 (file)
@@ -91,7 +91,7 @@ trait t_database_enable_trigger {
    * Get the currently assigned enable trigger settings.
    *
    * @return c_base_return_array|c_base_return_null
-   *   An array containing the enable trigger settings on success.
+   *   An array containing the enable trigger settings.
    *   NULL is returned if not set (not to be confused with DISABLE TRIGGER).
    *   NULL with the error bit set is returned on error.
    */
@@ -114,7 +114,7 @@ trait t_database_enable_trigger {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_enable_trigger() {
index eb9f933a3264231dfa1ec2b89aa12f956bf30a44..3e97d07c41632037a6745e01743bced6b92d57e7 100644 (file)
@@ -96,7 +96,7 @@ trait t_database_for_role {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_for_role() {
index ab72f787db1455950de72a955fe213cb543dca11..db4390894db8877c9d7143d78df527656094f279 100644 (file)
@@ -168,7 +168,7 @@ trait t_database_function_action {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_function_action() {
index 84e713912efeb0d44a516b4bc1c095f5fac40a33..c863e2f2d2928804df08a00c67b57ec03c38c797 100644 (file)
@@ -74,7 +74,7 @@ trait t_database_grant {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_grant() {
index 5904180969905830658463fb46839b2aa74223c9..ed8a935eff8d5c60b80c35851a4fc91d73ad89a9 100644 (file)
@@ -72,7 +72,7 @@ trait t_database_grant_option_for {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_grant_option_for() {
index 2345eefe4c902baf3c9d767a652b305cdad63a6b..6fa16c2607f25d62c9678345f4374e64ac944299 100644 (file)
@@ -98,7 +98,7 @@ trait t_database_group_by {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_group_by() {
index 46fcca62dfcd0743f81eb767156df3c0daf581f4..89a0db010dff0c9773bbacd989ee74614f5b355f 100644 (file)
@@ -97,7 +97,7 @@ trait t_database_handler {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_handler() {
diff --git a/common/database/traits/database_if_exists.php b/common/database/traits/database_if_exists.php
new file mode 100644 (file)
index 0000000..01f2dd8
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+/**
+ * @file
+ * Provides traits for specific Postgesql Queries.
+ *
+ * @see: https://www.postgresql.org/docs/current/static/sql-commands.html
+ */
+namespace n_koopa;
+
+require_once('common/base/classes/base_error.php');
+require_once('common/base/classes/base_return.php');
+
+require_once('common/database/classes/database_string.php');
+
+/**
+ * Provide the sql IF EXISTS functionality.
+ */
+trait t_database_if_exists {
+  protected $if_exists;
+
+  /**
+   * Set the IF EXISTS value.
+   *
+   * @param bool|null $if_exists
+   *   Set to TRUE for 'IF EXISTS'.
+   *   Set to FALSE to not use 'IF EXISTS'.
+   *   Set to NULL to disable.
+   *
+   * @return c_base_return_status
+   *   TRUE on success, FALSE otherwise.
+   *   FALSE with the error bit set is returned on error.
+   */
+  public function set_if_exists($if_exists) {
+    if (is_null($if_exists)) {
+      $this->if_exists = NULL;
+      return new c_base_return_true();
+    }
+
+    if (!is_bool($if_exists)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'if_exists', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    $this->if_exists = $if_exists;
+    return new c_base_return_true();
+  }
+
+  /**
+   * Get the currently assigned set with oids status.
+   *
+   * @return c_base_return_bool|c_base_return_null
+   *   TRUE for 'IF EXISTS' and FALSE for not using 'IF EXISTS'.
+   *   NULL is returned if not set.
+   *   NULL with the error bit set is returned on error.
+   */
+  public function get_if_exists() {
+    if (is_null($this->if_exists)) {
+      return new c_base_return_null();
+    }
+
+    if (is_bool($this->if_exists)) {
+      return c_base_return_bool::s_new($this->if_exists);
+    }
+
+    $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'if_exists', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
+    return c_base_return_error::s_null($error);
+  }
+
+  /**
+   * Perform the common build process for this trait.
+   *
+   * As an internal trait method, the caller is expected to perform any appropriate validation.
+   *
+   * @return string|null
+   *   A string is returned.
+   *   NULL is returned if there is nothing to process or there is an error.
+   */
+  protected function p_do_build_if_exists() {
+    return $this->if_exists ? c_database_string::IF_EXISTS : NULL;
+  }
+}
diff --git a/common/database/traits/database_if_not_exists.php b/common/database/traits/database_if_not_exists.php
new file mode 100644 (file)
index 0000000..cad6345
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+/**
+ * @file
+ * Provides traits for specific Postgesql Queries.
+ *
+ * @see: https://www.postgresql.org/docs/current/static/sql-commands.html
+ */
+namespace n_koopa;
+
+require_once('common/base/classes/base_error.php');
+require_once('common/base/classes/base_return.php');
+
+require_once('common/database/classes/database_string.php');
+
+/**
+ * Provide the sql IF NOT EXISTS functionality.
+ */
+trait t_database_if_not_exists {
+  protected $if_not_exists;
+
+  /**
+   * Set the IF NOT EXISTS value.
+   *
+   * @param bool|null $if_not_exists
+   *   Set to TRUE for 'IF NOT EXISTS'.
+   *   Set to FALSE to not use 'IF NOT EXISTS'.
+   *   Set to NULL to disable.
+   *
+   * @return c_base_return_status
+   *   TRUE on success, FALSE otherwise.
+   *   FALSE with the error bit set is returned on error.
+   */
+  public function set_if_not_exists($if_not_exists) {
+    if (is_null($if_not_exists)) {
+      $this->if_not_exists = NULL;
+      return new c_base_return_true();
+    }
+
+    if (!is_bool($if_not_exists)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'if_not_exists', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    $this->if_not_exists = $if_not_exists;
+    return new c_base_return_true();
+  }
+
+  /**
+   * Get the currently assigned set with oids status.
+   *
+   * @return c_base_return_bool|c_base_return_null
+   *   TRUE for 'IF NOT EXISTS' and FALSE for not using 'IF NOT EXISTS'.
+   *   NULL is returned if not set.
+   *   NULL with the error bit set is returned on error.
+   */
+  public function get_if_not_exists() {
+    if (is_null($this->if_not_exists)) {
+      return new c_base_return_null();
+    }
+
+    if (is_bool($this->if_not_exists)) {
+      return c_base_return_bool::s_new($this->if_not_exists);
+    }
+
+    $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'if_not_exists', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
+    return c_base_return_error::s_null($error);
+  }
+
+  /**
+   * Perform the common build process for this trait.
+   *
+   * As an internal trait method, the caller is expected to perform any appropriate validation.
+   *
+   * @return string|null
+   *   A string is returned.
+   *   NULL is returned if there is nothing to process or there is an error.
+   */
+  protected function p_do_build_if_not_exists() {
+    return $this->if_not_exists ? c_database_string::IF_NOT_EXISTS : NULL;
+  }
+}
index d1757ee7eda2e1808af22cbce345ce793a8fff99..8129fb316632b374e9e46433b8176664fb1a3d02 100644 (file)
@@ -76,7 +76,7 @@ trait t_database_in_database {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_in_database() {
index bfd899a9c5c5a2641dfa9bb1d865dc485a1edeeb..6481158784b51d8ed8351c9a3bbad9a69794a7e5 100644 (file)
@@ -97,7 +97,7 @@ trait t_database_in_schema {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_in_schema() {
index 2ab5a871c35acd3ac6c0de1970d3c6c5847624b7..7dc754d6be1f782a86a77e540516a38352cd8bb0 100644 (file)
@@ -69,7 +69,7 @@ trait t_database_increment_by {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_increment_by() {
index b6a0d4a78aee03d28c707ac9fc38873f5d1e99d2..3a0f5bfa30c2e6ffe30fecb47df687b30f76b2e6 100644 (file)
@@ -61,7 +61,7 @@ trait t_database_inherit {
    * Get the currently assigned inherit settings.
    *
    * @return c_base_return_array|c_base_return_null
-   *   An array containing the inherit settings on success.
+   *   An array containing the inherit settings.
    *   NULL is returned if not set.
    *   NULL with the error bit set is returned on error.
    */
@@ -84,7 +84,7 @@ trait t_database_inherit {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_inherit() {
index ac43fed8b85faccf8d470fce0031f6631c315378..2b7360bde1f519e4c09131fff20dd2dcaae6ec55 100644 (file)
@@ -74,7 +74,7 @@ trait t_database_max_value {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_max_value() {
index f2045cb493f0166fd297f3164ae4fdf253b4c77b..6b4194b0066dff23f5f35d1301299f2ceac82aa2 100644 (file)
@@ -74,7 +74,7 @@ trait t_database_min_value {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_min_value() {
index dc3fa7793e7dd6362b86048a5a2f3f5be2b2eaa8..6295191c1872749431fd9ffd32f2fb8f9754bcc5 100644 (file)
@@ -76,7 +76,7 @@ trait t_database_name {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_name() {
index 2046f0e3a5d72ed92c3b8e22e3d761eef53b4da7..025d2c03c84e6672de572543bdbeb385a5569073 100644 (file)
@@ -72,7 +72,7 @@ trait t_database_no_wait {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_no_wait() {
index 63a9e9c4729853987108b68466e5e71192e45e2a..09cca75aa4d8d6bb50e540484f9ccb8ce8b47b6a 100644 (file)
@@ -76,7 +76,7 @@ trait t_database_oid {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_oid() {
index 5172baba151f290817d923a1f0c95a36631ecf4b..94e8a269bfbb761179ea08dde2aaffe8783c4a11 100644 (file)
@@ -59,7 +59,7 @@ trait t_database_on {
    * Get the ON operation status.
    *
    * @return c_base_return_int|c_base_return_null
-   *   Integer representing the on operation is returned on success.
+   *   Integer representing the on operation is returned.
    *   NULL is returned if undefined.
    *   FALSE with error bit set is returned on error.
    */
@@ -77,7 +77,7 @@ trait t_database_on {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_on() {
index cbaa65971e087f93f2e1e56bb7eaa733bb46157e..62f63a17895952184d033f020c0bd9996a6c5a27 100644 (file)
@@ -76,7 +76,7 @@ trait t_database_on_table {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_on_table() {
index ce76d7270515a09bda305644b5a600bae27cc9b6..9a16244abe6d986f24fe620c56356ff267ec92b4 100644 (file)
@@ -92,7 +92,7 @@ trait t_database_operand_left {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_operand_left() {
index c5619b9d109d1eb6951f0655b60b8856a4882350..be83e0bb66ed7679d116089725fe81ecec25b072 100644 (file)
@@ -92,7 +92,7 @@ trait t_database_operand_right {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_operand_right() {
index ef936a9ee85ea93ef71524f2f834fa359b36d241..16633c19c91db25ca1248cee3afa4bda7a826d6d 100644 (file)
@@ -21,30 +21,40 @@ trait t_database_options {
   /**
    * Set the in options.
    *
-   * @param string|null $options_type
+   * @param string|null $type
    *   The option type to use.
    *   Set to NULL to disable.
    *   When NULL, this will remove all values.
-   * @param string $value
-   *   The value to associate with the options_type.
-   *   When options_type is NULL, this is ignored.
+   * @param string|null $option
+   *   (optional) The option name to use.
+   *   When type is NULL, this is ignored.
+   *   Required when $type is not NULL.
+   * @param string|null $value
+   *   (optional) The value to associate with the type.
+   *   When type is NULL, this is ignored.
+   *   Required when $type is not NULL.
    *
    * @return c_base_return_status
    *   TRUE on success, FALSE otherwise.
    *   FALSE with error bit set is returned on error.
    */
-  public function set_options($options_type, $value) {
-    if (is_null($options_type)) {
+  public function set_options($type, $option = NULL, $value = NULL) {
+    if (is_null($type)) {
       $this->options = NULL;
       return new c_base_return_true();
     }
 
+    if (!is_string($option)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'option', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
     if (!is_string($value)) {
       $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'value', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
       return c_base_return_error::s_false($error);
     }
 
-    switch ($options_type) {
+    switch ($type) {
       case e_database_options::ADD:
       case e_database_options::DROP:
       case e_database_options::SET:
@@ -58,16 +68,24 @@ trait t_database_options {
       $this->options = [];
     }
 
-    $placeholder = $this->add_placeholder($value);
-    if ($placeholder->has_error()) {
-      return c_base_return_error::s_false($placeholder->get_error());
+    $placeholder_option = $this->add_placeholder($option);
+    if ($placeholder_option->has_error()) {
+      return c_base_return_error::s_false($placeholder_option->get_error());
+    }
+
+    $placeholder_value = $this->add_placeholder($value);
+    if ($placeholder_value->has_error()) {
+      unset($placeholder_option);
+      return c_base_return_error::s_false($placeholder_value->get_error());
     }
 
     $this->options[] = [
-      'type' => $options_type,
-      'value' => $placeholder,
+      'type' => $type,
+      'option' => $placeholder_option,
+      'value' => $placeholder_value,
     ];
-    unset($placeholder);
+    unset($placeholder_option);
+    unset($placeholder_value);
 
     return new c_base_return_true();
   }
@@ -113,24 +131,33 @@ trait t_database_options {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_options() {
-    $options = [];
-    foreach ($this->options as $options_value) {
-      if ($options_value['type'] == e_database_options::ADD) {
-        $options[] = c_database_string::ADD . ' ' . $options_value['value'];
+    $value = c_database_string::OPTIONS;
+
+    $values = [];
+    foreach ($this->options['values'] as $set) {
+      if ($set['type'] === e_database_options::ADD) {
+        $set_value = c_database_string::ADD;
       }
-      else if ($options_value['type'] == e_database_options::DROP) {
-        $options[] = c_database_string::DROP . ' ' . $options_value['value'];
+      else if ($set['type'] === e_database_options::DROP) {
+        $set_value = c_database_string::DROP;
       }
-      else if ($options_value['type'] == e_database_options::SET) {
-        $options[] = c_database_string::SET . ' ' . $options_value['value'];
+      else if ($set['type'] === e_database_options::SET) {
+        $set_value = c_database_string::SET;
       }
+      else {
+        continue;
+      }
+
+      $set_value .= ' ' . $set['option'] . ' ' . $set['value'];
+      $values[] = $set_value;
     }
-    unset($options_value);
+    unset($set);
+    unset($set_value);
 
-    return empty($options) ? NULL : c_database_string::OPTIONS . ' ' . implode(', ', $options);
+    return $value . ' ' . implode(', ', $values);
   }
 }
index 523f55d97df558611ddcaaafacdaadcf6b7c0a62..7fb7ff03c7ad249d332c779bf216c5e8c70c4610 100644 (file)
@@ -96,7 +96,7 @@ trait t_database_order_by {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_order_by() {
index 34e96e4bfe2e4da32ec683c1f57d628c55b2a85f..b96a8b7d4a6681265e30a70bb7df12450d88bbb5 100644 (file)
@@ -111,7 +111,7 @@ trait t_database_owned_by {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_owned_by() {
index 20e7fddd3a8abdf5d0d09786523d30faeeeba9bf..bc064b75148d97a888814849becdc131bfec716f 100644 (file)
@@ -90,7 +90,7 @@ trait t_database_owner_to {
    * Get the currently assigned owner to settings.
    *
    * @return c_base_return_array|c_base_return_null
-   *   An array containing the owner to settings on success.
+   *   An array containing the owner to settings.
    *   NULL without error bit set is returned if not assigned.
    *   NULL with the error bit set is returned on error.
    */
@@ -113,7 +113,7 @@ trait t_database_owner_to {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_owner_to() {
index 1261782fba648df0377041e4102b125d6a4cdd44..9cf3c486431b7d564076209594eba88a4508d261 100644 (file)
@@ -104,7 +104,7 @@ trait t_database_privilege {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_privilege() {
index 07dac9e11e036e93ec6de7dce4ce3fa89cd9f98d..293af919a58e0a12fce6da29503f8171f5d7ea10 100644 (file)
@@ -72,7 +72,7 @@ trait t_database_procedural {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_procedural() {
index 53c1dfe4dedbbbc8a8c6f71a56f8476317f5fdc9..91331688617a46045923122d04dce97117baea71 100644 (file)
@@ -66,7 +66,7 @@ trait t_database_refresh_publication {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_refresh_publication() {
index ec3aa41629097791529ba6aa0647fb89086c1567..aaea751c9263d8092313c89c6afe2fee4450bf43 100644 (file)
@@ -72,7 +72,7 @@ trait t_database_rename_column {
    * Get the currently assigned rename from settings.
    *
    * @return c_base_return_array|c_base_return_null
-   *   An array containing rename from settings on success.
+   *   An array containing rename from settings.
    *   NULL is returned if not set.
    *   NULL with the error bit set is returned on error.
    */
@@ -82,7 +82,7 @@ trait t_database_rename_column {
     }
 
     if (is_array($this->rename_column)) {
-      return c_base_return_array::s_new($this->rename_column['from']);
+      return c_base_return_array::s_new($this->rename_column);
     }
 
     $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'rename_column', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
@@ -95,7 +95,7 @@ trait t_database_rename_column {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_rename_column() {
diff --git a/common/database/traits/database_rename_constraint.php b/common/database/traits/database_rename_constraint.php
new file mode 100644 (file)
index 0000000..fa844ae
--- /dev/null
@@ -0,0 +1,104 @@
+<?php
+/**
+ * @file
+ * Provides traits for specific Postgesql Queries.
+ *
+ * @see: https://www.postgresql.org/docs/current/static/sql-commands.html
+ */
+namespace n_koopa;
+
+require_once('common/base/classes/base_error.php');
+require_once('common/base/classes/base_return.php');
+
+/**
+ * Provide the sql RENAME CONSTRAINT functionality.
+ */
+trait t_database_rename_constraint {
+  protected $rename_constraint;
+
+  /**
+   * Set the RENAME CONSTRAINT settings.
+   *
+   * @param string|null $from_name
+   *   The constraint name to rename from.
+   *   Set to NULL to disable.
+   * @param string|null $to_name
+   *   The constraint name to rename to.
+   *   Required when $from_name is not NULL.
+   *   Ignored when $from_name is NULL.
+   *
+   * @return c_base_return_status
+   *   TRUE on success, FALSE otherwise.
+   *   FALSE with the error bit set is returned on error.
+   */
+  public function set_rename_constraint($from_name, $to_name = NULL) {
+    if (is_null($from_name)) {
+      $this->rename_constraint = NULL;
+      return new c_base_return_true();
+    }
+
+    if (!is_string($from_name)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'from_name', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    if (!is_string($to_name)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'to_name', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    $placeholder_from = $this->add_placeholder($from_name);
+    if ($placeholder_from->has_error()) {
+      return c_base_return_error::s_false($placeholder_from->get_error());
+    }
+
+    $placeholder_to = $this->add_placeholder($to_name);
+    if ($placeholder_to->has_error()) {
+      unset($placeholder_from);
+      return c_base_return_error::s_false($placeholder_to->get_error());
+    }
+
+    $this->rename_constraint = [
+      'from' => $placeholder_from,
+      'to' => $placeholder_to,
+    ];
+    unset($placeholder_from);
+    unset($placeholder_to);
+
+    return new c_base_return_true();
+  }
+
+  /**
+   * Get the currently assigned rename from settings.
+   *
+   * @return c_base_return_array|c_base_return_null
+   *   An array containing rename from settings.
+   *   NULL is returned if not set.
+   *   NULL with the error bit set is returned on error.
+   */
+  public function get_rename_constraint() {
+    if (is_null($this->rename_constraint)) {
+      return new c_base_return_null();
+    }
+
+    if (is_array($this->rename_constraint)) {
+      return c_base_return_array::s_new($this->rename_constraint);
+    }
+
+    $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'rename_constraint', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
+    return c_base_return_error::s_null($error);
+  }
+
+  /**
+   * Perform the common build process for this trait.
+   *
+   * As an internal trait method, the caller is expected to perform any appropriate validation.
+   *
+   * @return string|null
+   *   A string is returned.
+   *   NULL is returned if there is nothing to process or there is an error.
+   */
+  protected function p_do_build_rename_constraint() {
+    return c_database_string::RENAME_CONSTRAINT . ' ' . $this->rename_constraint['from'] . ' ' . c_database_string::TO . ' ' . $this->rename_constraint['to'];
+  }
+}
index 9a145495c1dd5ce136b6d6be7892e71d4eaae0b6..c8da2b7ba8e0a5a941be2b66fc31e29d0b953502 100644 (file)
@@ -73,7 +73,7 @@ trait t_database_rename_to {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_rename_to() {
index 688ba4f67f5d76e52bf388245b6d5d03f88562bb..cf399c7890abe3ad7d53b47a389937c8e8685fa7 100644 (file)
@@ -81,7 +81,7 @@ trait t_database_reset_configuration_parameter {
    * Get the currently assigned reset configuration_parameter settings.
    *
    * @return c_base_return_array|c_base_return_null
-   *   An array containing reset settings on success.
+   *   An array containing reset settings.
    *   NULL is returned if not set (reset tablespace is not to be used).
    *   NULL with the error bit set is returned on error.
    */
@@ -104,7 +104,7 @@ trait t_database_reset_configuration_parameter {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_reset_configuration_parameter() {
index 142a66be3351b5f3e9891820242b1580b8774b6f..cb4fcbf395745fd8c0b40401e92e9e1ea3ab30e7 100644 (file)
@@ -100,7 +100,7 @@ trait t_database_reset_storage_parameter {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_reset_storage_parameter() {
index c4f162d4524fc464700a4430b9b0445710cab8e2..06b8dd9d6420f32ac2ee8d14ee15c1459f7d1dc4 100644 (file)
@@ -74,7 +74,7 @@ trait t_database_restart_with {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_restart_with() {
index 9c306e906b1244cb064c2a66acb78ddd5c1c080d..6b43eaa35a92f1ae5715252806449ad12f1463ed 100644 (file)
@@ -72,7 +72,7 @@ trait t_database_restrict {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_restrict() {
index d54d9dac9123b07bf60a5becd51c2ed24dec762a..186621b83d265150fc39818cbca1e92fe765f26e 100644 (file)
@@ -88,7 +88,7 @@ trait t_database_role_specification {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_role_specification() {
index ae5a225e306c984258a0d3e326c6c795b4a4127b..520597bdf793c562de9a447c4dbad9bcc9eeea7b 100644 (file)
@@ -80,8 +80,8 @@ trait t_database_set_configuration_parameter {
         }
 
         $set['value'] = $placeholder;
-        unset($placeholder);
       }
+      unset($placeholder);
 
       $this->set_configuration_parameter = $configuration_parameter;
       unset($configuration_parameter);
@@ -105,7 +105,7 @@ trait t_database_set_configuration_parameter {
    * Get the currently assigned set configuration parameter settings.
    *
    * @return c_base_return_array|c_base_return_null
-   *   An array containing set configuration parameter settings on success.
+   *   An array containing set configuration parameter settings.
    *   NULL is returned if not set (set tablespace is not to be used).
    *   NULL with the error bit set is returned on error.
    */
@@ -128,7 +128,7 @@ trait t_database_set_configuration_parameter {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_set_configuration_parameter() {
index 55eb62cd503f5ae7f5d9f85b718b71ce38ee65d7..952802d47c6bc8f9f1e3b720c0e555613fb7f81a 100644 (file)
@@ -118,7 +118,7 @@ trait t_database_set_operator {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_set_operator() {
index 2a82eb2e3aca13d0ea49f355ca4c2e983f07c306..72e03266a972139f316256e4be9bf0075acc4fac 100644 (file)
@@ -89,7 +89,7 @@ trait t_database_set_publication_name {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_set_publication_name() {
index cbfa271080d32492428f3a9292777a62cddccbf6..6f3629a0382c3eb30b2c0e75a0ed9dec65f5fb6f 100644 (file)
@@ -81,7 +81,7 @@ trait t_database_set_publication_parameter {
    *   When NULL, all publication parameter types are returned.
    *
    * @return c_base_return_array|c_base_return_null
-   *   An array containing the set publication parameter settings on success.
+   *   An array containing the set publication parameter settings.
    *   NULL is returned if not set (publication parameter not to be used).
    *   NULL with the error bit set is returned on error.
    */
@@ -114,7 +114,7 @@ trait t_database_set_publication_parameter {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_set_publication_parameter() {
index 99431cb2d1cfecc5a37e5a5fc86987d617cff248..05a597cd70a8751510568822b1691fc7972b5241 100644 (file)
@@ -73,7 +73,7 @@ trait t_database_set_schema {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_set_schema() {
index 3addcda0b4cf437edc8f09f0bcd557c1c51f10ad..4c04a4e9b1e75cecbbabdced874ec185185afbaa 100644 (file)
@@ -86,7 +86,7 @@ trait t_database_set_storage_parameter {
    *   When NULL, all index storage parameter types are returned.
    *
    * @return c_base_return_array|c_base_return_null
-   *   An array containing the set index storage parameter settings on success.
+   *   An array containing the set index storage parameter settings.
    *   NULL is returned if not set (set index storage parameter not to be used).
    *   NULL with the error bit set is returned on error.
    */
@@ -119,7 +119,7 @@ trait t_database_set_storage_parameter {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_set_storage_parameter() {
index 330a3127bfbaf7dab5a4cb623c1afb758a101dc1..63aaa32f3625de621f1f3ba1fda43406b9d1af67 100644 (file)
@@ -83,7 +83,7 @@ trait t_database_set_table {
    *   When NULL, all add table settings are returned.
    *
    * @return c_base_return_array|c_base_return_null
-   *   An array containing the add table settings on success.
+   *   An array containing the add table settings.
    *   NULL is returned if not set (add table not to be used).
    *   NULL with the error bit set is returned on error.
    */
@@ -106,7 +106,7 @@ trait t_database_set_table {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_set_table() {
index 5ba34fd442a54488fd556a9acd2b74d3b870b576..3c8c5b87da4c50cddf9b6f2ecfd9d3806001169d 100644 (file)
@@ -73,7 +73,7 @@ trait t_database_set_tablespace {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_set_tablespace() {
index da76ffae353113993b773835ec1b3b9f0021eaa6..4b6efd299ff403cd4f4fa46221a7901aef9f4078 100644 (file)
@@ -72,7 +72,7 @@ trait t_database_set_with_oids {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_set_with_oids() {
index 7fc3235b77994e5680d416d3cc935403de2c26fe..170cf763431d63a847d4d175bf8707fe1fabfe24 100644 (file)
@@ -72,7 +72,7 @@ trait t_database_set_without_cluster {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_set_without_cluster() {
index 013d09807a8ffa3fab9b14046ceaa662dc107493..6f36e9afe261ffc1fff2a34eaf82adeef54affc2 100644 (file)
@@ -69,7 +69,7 @@ trait t_database_start_with {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_start_with() {
index 16523436039e888da6c5ba909405e800b07b3ab1..7bbfff753e80687589909af7ecbf5eddb6d33d22 100644 (file)
@@ -114,7 +114,7 @@ trait t_database_to_role {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_to_role() {
index 383c5195f276a6b1ca42b70aefcde00635931d15..4a389c2abb851236d98ec2cdcb5acf4ddfe8e5dd 100644 (file)
@@ -71,7 +71,7 @@ trait t_database_using_expression {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_using_expression() {
index 169dfa824d69ec2c4228ccf201fff98a1d41969d..1057b9c0b0ab6d582bf03bfb950e1de01e13f5c5 100644 (file)
@@ -76,7 +76,7 @@ trait t_database_using_index_method {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_using_index_method() {
index 46f5d240981bb3e03795a18a7dc25301425c8551..61a6c7f4d96aeed6ba19c9667281911fc503a0c3 100644 (file)
@@ -96,7 +96,7 @@ trait t_database_validator {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_validator() {
index 21fb5ddb5dbf3095ffab61aaba025daf6cb0d840..3f7d7ac5bc65f51d554df92ba5a4bc8254bdd246 100644 (file)
@@ -76,7 +76,7 @@ trait t_database_version {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_version() {
diff --git a/common/database/traits/database_wildcard.php b/common/database/traits/database_wildcard.php
new file mode 100644 (file)
index 0000000..311351a
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+/**
+ * @file
+ * Provides traits for specific Postgesql Queries.
+ *
+ * @see: https://www.postgresql.org/docs/current/static/sql-commands.html
+ */
+namespace n_koopa;
+
+require_once('common/base/classes/base_error.php');
+require_once('common/base/classes/base_return.php');
+
+require_once('common/database/classes/database_string.php');
+
+/**
+ * Provide the sql * functionality.
+ */
+trait t_database_wildcard {
+  protected $wildcard;
+
+  /**
+   * Set the * value.
+   *
+   * @param bool|null $wildcard
+   *   Set to TRUE for '*'.
+   *   Set to FALSE to not use '*'.
+   *   Set to NULL to disable.
+   *
+   * @return c_base_return_status
+   *   TRUE on success, FALSE otherwise.
+   *   FALSE with the error bit set is returned on error.
+   */
+  public function set_wildcard($wildcard) {
+    if (is_null($wildcard)) {
+      $this->wildcard = NULL;
+      return new c_base_return_true();
+    }
+
+    if (!is_bool($wildcard)) {
+      $error = c_base_error::s_log(NULL, ['arguments' => [':{argument_name}' => 'wildcard', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_ARGUMENT);
+      return c_base_return_error::s_false($error);
+    }
+
+    $this->wildcard = $wildcard;
+    return new c_base_return_true();
+  }
+
+  /**
+   * Get the currently assigned set with oids status.
+   *
+   * @return c_base_return_bool|c_base_return_null
+   *   TRUE for '*' and FALSE for not using '*'.
+   *   NULL is returned if not set.
+   *   NULL with the error bit set is returned on error.
+   */
+  public function get_wildcard() {
+    if (is_null($this->wildcard)) {
+      return new c_base_return_null();
+    }
+
+    if (is_bool($this->wildcard)) {
+      return c_base_return_bool::s_new($this->wildcard);
+    }
+
+    $error = c_base_error::s_log(NULL, ['arguments' => [':{variable_name}' => 'wildcard', ':{function_name}' => __CLASS__ . '->' . __FUNCTION__]], i_base_error_messages::INVALID_VARIABLE);
+    return c_base_return_error::s_null($error);
+  }
+
+  /**
+   * Perform the common build process for this trait.
+   *
+   * As an internal trait method, the caller is expected to perform any appropriate validation.
+   *
+   * @return string|null
+   *   A string is returned.
+   *   NULL is returned if there is nothing to process or there is an error.
+   */
+  protected function p_do_build_wildcard() {
+    return $this->wildcard ? '*' : NULL;
+  }
+}
index 3591eb22bbd77ddf2a6e37fca97a209937b36165..253197e0d6f6c0fb23b52ab3a35b533b1c39dc89 100644 (file)
@@ -71,7 +71,7 @@ trait t_database_with_check_expression {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_with_check_expression() {
index 6ccefa8a65b3968bc74f4f825c0b86d55c562783..100f1446167ca10b18e00a0096c3626798631eda 100644 (file)
@@ -72,7 +72,7 @@ trait t_database_with_grant_option {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_with_grant_option() {
index 1b6695f6535aa996f30e8b8643fa15c58d11039b..48eb368accf6940f8a7f3a5eab6454e2b7c78d03 100644 (file)
@@ -75,7 +75,7 @@ trait t_database_with_publication_option {
    *   When NULL, all publication options are returned.
    *
    * @return c_base_return_array|c_base_return_null
-   *   An array containing the with publication option settings on success.
+   *   An array containing the with publication option settings.
    *   NULL is returned if not set (with publication option not to be used).
    *   NULL with the error bit set is returned on error.
    */
@@ -108,7 +108,7 @@ trait t_database_with_publication_option {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_with_publication_option() {
index 77c458c7461736e69dd5d3f9c265ea61194525a7..8c0cfedc5601278c9713719be5b00369ea4aa766 100644 (file)
@@ -75,7 +75,7 @@ trait t_database_with_refresh_option {
    *   When NULL, all refresh options are returned.
    *
    * @return c_base_return_array|c_base_return_null
-   *   An array containing the with refresh option settings on success.
+   *   An array containing the with refresh option settings.
    *   NULL is returned if not set (with refresh option not to be used).
    *   NULL with the error bit set is returned on error.
    */
@@ -108,7 +108,7 @@ trait t_database_with_refresh_option {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_with_refresh_option() {
index a3ed53b9c153a808f4c1a929737fd7417f1fe06f..cede4b1a41b107dd463536abaa2cdc6a2cf23fb5 100644 (file)
@@ -114,7 +114,7 @@ trait t_database_with_role_option {
    * Get the with role option settings.
    *
    * @return c_base_return_array|c_base_return_null
-   *   An array of with role option settings on success.
+   *   An array of with role option settings.
    *   NULL is returned if not set (with role option is not to be used).
    *   NULL with the error bit set is returned on error.
    */
@@ -137,7 +137,7 @@ trait t_database_with_role_option {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_with_role_option() {
index 0af7ea4a751d1ac0e8966d162a6d6ecdb1075c95..5fca01fdae20aa40e49c9d78fd1a2e0aea98f954 100644 (file)
@@ -86,7 +86,7 @@ trait t_database_with_storage_parameter {
    *   When NULL, all index storage parameter types are returned.
    *
    * @return c_base_return_array|c_base_return_null
-   *   An array containing the set index storage parameter settings on success.
+   *   An array containing the set index storage parameter settings.
    *   NULL is returned if not set (set index storage parameter not to be used).
    *   NULL with the error bit set is returned on error.
    */
@@ -119,7 +119,7 @@ trait t_database_with_storage_parameter {
    * As an internal trait method, the caller is expected to perform any appropriate validation.
    *
    * @return string|null
-   *   A string is returned on success.
+   *   A string is returned.
    *   NULL is returned if there is nothing to process or there is an error.
    */
   protected function p_do_build_with_storage_parameter() {