update 2023-04-30 01:34:12

This commit is contained in:
Robot 2023-04-30 01:34:32 +02:00
parent 2ff1061957
commit 304e850c2a
Signed by untrusted user: Robot
GPG Key ID: 14DECD44E7E1BB95
10 changed files with 499 additions and 27 deletions

View File

@ -48,6 +48,7 @@ This repository contains an index (see below) of all the approved powers within
- **final class Insert** | [Details](src/524eb8f6-38d4-47dc-92ad-98b94e099ac0) | [Code](src/524eb8f6-38d4-47dc-92ad-98b94e099ac0/code.php) | [Settings](src/524eb8f6-38d4-47dc-92ad-98b94e099ac0/settings.json) | [524eb8f6-38d4-47dc-92ad-98b94e099ac0](src/524eb8f6-38d4-47dc-92ad-98b94e099ac0) - **final class Insert** | [Details](src/524eb8f6-38d4-47dc-92ad-98b94e099ac0) | [Code](src/524eb8f6-38d4-47dc-92ad-98b94e099ac0/code.php) | [Settings](src/524eb8f6-38d4-47dc-92ad-98b94e099ac0/settings.json) | [524eb8f6-38d4-47dc-92ad-98b94e099ac0](src/524eb8f6-38d4-47dc-92ad-98b94e099ac0)
- **final class Load** | [Details](src/06f8eada-d59b-441c-b287-0aea1793da5a) | [Code](src/06f8eada-d59b-441c-b287-0aea1793da5a/code.php) | [Settings](src/06f8eada-d59b-441c-b287-0aea1793da5a/settings.json) | [06f8eada-d59b-441c-b287-0aea1793da5a](src/06f8eada-d59b-441c-b287-0aea1793da5a) - **final class Load** | [Details](src/06f8eada-d59b-441c-b287-0aea1793da5a) | [Code](src/06f8eada-d59b-441c-b287-0aea1793da5a/code.php) | [Settings](src/06f8eada-d59b-441c-b287-0aea1793da5a/settings.json) | [06f8eada-d59b-441c-b287-0aea1793da5a](src/06f8eada-d59b-441c-b287-0aea1793da5a)
- **final class Update** | [Details](src/cce56585-58b0-4f72-a92c-e2635ea52d83) | [Code](src/cce56585-58b0-4f72-a92c-e2635ea52d83/code.php) | [Settings](src/cce56585-58b0-4f72-a92c-e2635ea52d83/settings.json) | [cce56585-58b0-4f72-a92c-e2635ea52d83](src/cce56585-58b0-4f72-a92c-e2635ea52d83)
- **Namespace**: [VDM\Joomla\Componentbuilder\Interfaces](#vdm-joomla-componentbuilder-interfaces) - **Namespace**: [VDM\Joomla\Componentbuilder\Interfaces](#vdm-joomla-componentbuilder-interfaces)
- **interface ModelInterface** | [Details](src/8aef58c1-3f70-4bd4-b9e4-3f29fcd41cff) | [Code](src/8aef58c1-3f70-4bd4-b9e4-3f29fcd41cff/code.php) | [Settings](src/8aef58c1-3f70-4bd4-b9e4-3f29fcd41cff/settings.json) | [8aef58c1-3f70-4bd4-b9e4-3f29fcd41cff](src/8aef58c1-3f70-4bd4-b9e4-3f29fcd41cff) - **interface ModelInterface** | [Details](src/8aef58c1-3f70-4bd4-b9e4-3f29fcd41cff) | [Code](src/8aef58c1-3f70-4bd4-b9e4-3f29fcd41cff/code.php) | [Settings](src/8aef58c1-3f70-4bd4-b9e4-3f29fcd41cff/settings.json) | [8aef58c1-3f70-4bd4-b9e4-3f29fcd41cff](src/8aef58c1-3f70-4bd4-b9e4-3f29fcd41cff)
@ -305,6 +306,13 @@ namespace VDM\Joomla\Componentbuilder\Database #Olive {
# one() : bool # one() : bool
# query() : ?object # query() : ?object
} }
class Update << (F,LightGreen) >> #Green {
+ rows() : bool
+ items() : bool
+ row() : bool
+ item() : bool
}
} }

View File

@ -181,12 +181,6 @@ final class Insert extends Database implements InsertInterface
**/ **/
protected function insert(array &$data, string $table, array $columns, bool $isArray): bool protected function insert(array &$data, string $table, array $columns, bool $isArray): bool
{ {
// get a query object
$query = $this->db->getQuery(true);
// set the query targets
$query->insert($this->db->quoteName($this->getTable($table)))->columns($this->db->quoteName(array_keys($columns)));
// set joomla default columns // set joomla default columns
$add_created = false; $add_created = false;
$add_version = false; $add_version = false;
@ -200,24 +194,30 @@ final class Insert extends Database implements InsertInterface
if (!isset($columns['created'])) if (!isset($columns['created']))
{ {
$columns['created'] = '_|-v-|_'; $columns['created'] = ' (o_O) ';
$add_created = true; $add_created = true;
} }
if (!isset($columns['version'])) if (!isset($columns['version']))
{ {
$columns['version'] = '_|-v-|_'; $columns['version'] = ' (o_O) ';
$add_version = true; $add_version = true;
} }
if (!isset($columns['version'])) if (!isset($columns['version']))
{ {
$columns['published'] = '_|-v-|_'; $columns['published'] = ' (o_O) ';
$add_published = true; $add_published = true;
} }
// the _|-v-|_ prevents an empty value from being loaded // the (o_O) prevents an empty value from being loaded
} }
// get a query object
$query = $this->db->getQuery(true);
// set the query targets
$query->insert($this->db->quoteName($this->getTable($table)))->columns($this->db->quoteName(array_keys($columns)));
// limiting factor on the amount of rows to insert before we reset the query // limiting factor on the amount of rows to insert before we reset the query
$limit = 300; $limit = 300;
@ -244,7 +244,7 @@ final class Insert extends Database implements InsertInterface
$row = []; $row = [];
foreach ($columns as $column => $key) foreach ($columns as $column => $key)
{ {
if ('_|-v-|_' !== $key) if (' (o_O) ' !== $key)
{ {
$row[] = ($isArray && isset($value[$key])) ? $this->quote($value[$key]) $row[] = ($isArray && isset($value[$key])) ? $this->quote($value[$key])
: ((!$isArray && isset($value->{$key})) ? $this->quote($value->{$key}) : ''); : ((!$isArray && isset($value->{$key})) ? $this->quote($value->{$key}) : '');
@ -286,6 +286,5 @@ final class Insert extends Database implements InsertInterface
return true; return true;
} }
} }

View File

@ -154,12 +154,6 @@
**/ **/
protected function insert(array &$data, string $table, array $columns, bool $isArray): bool protected function insert(array &$data, string $table, array $columns, bool $isArray): bool
{ {
// get a query object
$query = $this->db->getQuery(true);
// set the query targets
$query->insert($this->db->quoteName($this->getTable($table)))->columns($this->db->quoteName(array_keys($columns)));
// set joomla default columns // set joomla default columns
$add_created = false; $add_created = false;
$add_version = false; $add_version = false;
@ -173,24 +167,30 @@
if (!isset($columns['created'])) if (!isset($columns['created']))
{ {
$columns['created'] = '_|-v-|_'; $columns['created'] = ' (o_O) ';
$add_created = true; $add_created = true;
} }
if (!isset($columns['version'])) if (!isset($columns['version']))
{ {
$columns['version'] = '_|-v-|_'; $columns['version'] = ' (o_O) ';
$add_version = true; $add_version = true;
} }
if (!isset($columns['version'])) if (!isset($columns['version']))
{ {
$columns['published'] = '_|-v-|_'; $columns['published'] = ' (o_O) ';
$add_published = true; $add_published = true;
} }
// the _|-v-|_ prevents an empty value from being loaded // the (o_O) prevents an empty value from being loaded
} }
// get a query object
$query = $this->db->getQuery(true);
// set the query targets
$query->insert($this->db->quoteName($this->getTable($table)))->columns($this->db->quoteName(array_keys($columns)));
// limiting factor on the amount of rows to insert before we reset the query // limiting factor on the amount of rows to insert before we reset the query
$limit = 300; $limit = 300;
@ -217,7 +217,7 @@
$row = []; $row = [];
foreach ($columns as $column => $key) foreach ($columns as $column => $key)
{ {
if ('_|-v-|_' !== $key) if (' (o_O) ' !== $key)
{ {
$row[] = ($isArray && isset($value[$key])) ? $this->quote($value[$key]) $row[] = ($isArray && isset($value[$key])) ? $this->quote($value[$key])
: ((!$isArray && isset($value->{$key})) ? $this->quote($value->{$key}) : ''); : ((!$isArray && isset($value->{$key})) ? $this->quote($value->{$key}) : '');

View File

@ -185,7 +185,8 @@ abstract class GuidHelper
} }
} }
} }
return false;
return null;
} }
/** /**

View File

@ -160,7 +160,8 @@
} }
} }
} }
return false;
return null;
} }
/** /**

View File

@ -0,0 +1,83 @@
```
██████╗ ██████╗ ██╗ ██╗███████╗██████╗
██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
██████╔╝██║ ██║██║ █╗ ██║█████╗ ██████╔╝
██╔═══╝ ██║ ██║██║███╗██║██╔══╝ ██╔══██╗
██║ ╚██████╔╝╚███╔███╔╝███████╗██║ ██║
╚═╝ ╚═════╝ ╚══╝╚══╝ ╚══════╝╚═╝ ╚═╝
```
# final class Update (Details)
> namespace: **VDM\Joomla\Componentbuilder\Database**
```uml
@startuml
class Update << (F,LightGreen) >> #Green {
+ rows(array $data, string $key, ...) : bool
+ items(array $data, string $key, ...) : bool
+ row(array $data, string $key, ...) : bool
+ item(object $data, string $key, ...) : bool
}
note right of Update::rows
Update rows in the database (with remapping and filtering columns option)
since: 3.2.0
return: bool
arguments:
array $data
string $key
string $table
array $columns = []
end note
note right of Update::items
Update items in the database (with remapping and filtering columns option)
since: 3.2.0
return: bool
arguments:
array $data
string $key
string $table
array $columns = []
end note
note right of Update::row
Update row in the database
since: 3.2.0
return: bool
arguments:
array $data
string $key
string $table
end note
note right of Update::item
Update item in the database
since: 3.2.0
return: bool
arguments:
object $data
string $key
string $table
end note
@enduml
```
---
```
██╗ ██████╗██████╗
██║██╔════╝██╔══██╗
██║██║ ██████╔╝
██ ██║██║ ██╔══██╗
╚█████╔╝╚██████╗██████╔╝
╚════╝ ╚═════╝╚═════╝
```
> Build with [Joomla Component Builder](https://git.vdm.dev/joomla/Component-Builder)

View File

@ -0,0 +1,189 @@
<?php
/**
* @package Joomla.Component.Builder
*
* @created 4th September, 2022
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
namespace VDM\Joomla\Componentbuilder\Database;
use VDM\Joomla\Componentbuilder\Interfaces\UpdateInterface;
use VDM\Joomla\Componentbuilder\Abstraction\Database;
/**
* Database Update Class
*
* @since 3.2.0
*/
final class Update extends Database implements UpdateInterface
{
/**
* Update rows in the database (with remapping and filtering columns option)
*
* @param array $data Dataset to update in database [array of arrays (key => value)]
* @param string $key Dataset key column to use in updating the values in the Database
* @param string $table The table where the data is being updated
* @param array $columns Data columns for remapping and filtering
*
* @return bool
* @since 3.2.0
**/
public function rows(array $data, string $key, string $table, array $columns = []): bool
{
// set the update columns
if ($data === [] || strlen($key) == 0)
{
return false;
}
// set the update values
foreach ($data as $values)
{
if ($columns !== [])
{
// load only what is part of the columns set
$row = [];
foreach ($columns as $column => $key_)
{
if (isset($values[$key_]))
{
$row[$column] = $values[$key_];
}
}
// update the row
$this->row($row, $key, $table);
}
else
{
// update the row
$this->row((array) $values, $key, $table);
}
}
return true;
}
/**
* Update items in the database (with remapping and filtering columns option)
*
* @param array $data Data to updated in database (array of objects)
* @param string $key Dataset key column to use in updating the values in the Database
* @param string $table The table where the data is being update
* @param array $columns Data columns for remapping and filtering
*
* @return bool
* @since 3.2.0
**/
public function items(array $data, string $key, string $table, array $columns = []): bool
{
// set the update columns
if ($data === [] || strlen($key) == 0)
{
return false;
}
// set the update values
foreach ($data as $nr => $values)
{
if ($columns !== [])
{
// load only what is part of the columns set
$row = [];
foreach ($columns as $column => $key_)
{
if (isset($values->{$key_}))
{
$row[$column] = $values->{$key_};
}
}
// update the row
$this->row($row, $key, $table);
}
else
{
// update the row
$this->row((array) $values, $key, $table);
}
}
return true;
}
/**
* Update row in the database
*
* @param array $data Dataset to update in database (key => value)
* @param string $key Dataset key column to use in updating the values in the Database
* @param string $table The table where the data is being updated
*
* @return bool
* @since 3.2.0
**/
public function row(array $data, string $key, string $table): bool
{
// set the update columns
if ($data === [] || strlen($key) == 0)
{
return false;
}
// get a query object
$query = $this->db->getQuery(true);
// set the query targets
$query->update($this->db->quoteName($this->getTable($table)));
// set the update values
$key_ = null;
foreach ($data as $column => $value)
{
if ($column === $key)
{
$key_ = $value;
}
else
{
$query->set($this->db->quoteName($column) . ' = ' . $this->quote($value));
}
}
// add the key condition
if ($key_ !== null)
{
$query->where($this->db->quoteName($key) . ' = ' . $this->quote($key_));
// execute the final query
$this->db->setQuery($query);
return $this->db->execute();
}
return false;
}
/**
* Update item in the database
*
* @param object $data Dataset to update in database (key => value)
* @param string $key Dataset key column to use in updating the values in the Database
* @param string $table The table where the data is being updated
*
* @return bool
* @since 3.2.0
**/
public function item(object $data, string $key, string $table): bool
{
// convert to an array
return $this->row((array) get_object_vars($data), $key, $table);
}
}

View File

@ -0,0 +1,161 @@
/**
* Update rows in the database (with remapping and filtering columns option)
*
* @param array $data Dataset to update in database [array of arrays (key => value)]
* @param string $key Dataset key column to use in updating the values in the Database
* @param string $table The table where the data is being updated
* @param array $columns Data columns for remapping and filtering
*
* @return bool
* @since 3.2.0
**/
public function rows(array $data, string $key, string $table, array $columns = []): bool
{
// set the update columns
if ($data === [] || strlen($key) == 0)
{
return false;
}
// set the update values
foreach ($data as $values)
{
if ($columns !== [])
{
// load only what is part of the columns set
$row = [];
foreach ($columns as $column => $key_)
{
if (isset($values[$key_]))
{
$row[$column] = $values[$key_];
}
}
// update the row
$this->row($row, $key, $table);
}
else
{
// update the row
$this->row((array) $values, $key, $table);
}
}
return true;
}
/**
* Update items in the database (with remapping and filtering columns option)
*
* @param array $data Data to updated in database (array of objects)
* @param string $key Dataset key column to use in updating the values in the Database
* @param string $table The table where the data is being update
* @param array $columns Data columns for remapping and filtering
*
* @return bool
* @since 3.2.0
**/
public function items(array $data, string $key, string $table, array $columns = []): bool
{
// set the update columns
if ($data === [] || strlen($key) == 0)
{
return false;
}
// set the update values
foreach ($data as $nr => $values)
{
if ($columns !== [])
{
// load only what is part of the columns set
$row = [];
foreach ($columns as $column => $key_)
{
if (isset($values->{$key_}))
{
$row[$column] = $values->{$key_};
}
}
// update the row
$this->row($row, $key, $table);
}
else
{
// update the row
$this->row((array) $values, $key, $table);
}
}
return true;
}
/**
* Update row in the database
*
* @param array $data Dataset to update in database (key => value)
* @param string $key Dataset key column to use in updating the values in the Database
* @param string $table The table where the data is being updated
*
* @return bool
* @since 3.2.0
**/
public function row(array $data, string $key, string $table): bool
{
// set the update columns
if ($data === [] || strlen($key) == 0)
{
return false;
}
// get a query object
$query = $this->db->getQuery(true);
// set the query targets
$query->update($this->db->quoteName($this->getTable($table)));
// set the update values
$key_ = null;
foreach ($data as $column => $value)
{
if ($column === $key)
{
$key_ = $value;
}
else
{
$query->set($this->db->quoteName($column) . ' = ' . $this->quote($value));
}
}
// add the key condition
if ($key_ !== null)
{
$query->where($this->db->quoteName($key) . ' = ' . $this->quote($key_));
// execute the final query
$this->db->setQuery($query);
return $this->db->execute();
}
return false;
}
/**
* Update item in the database
*
* @param object $data Dataset to update in database (key => value)
* @param string $key Dataset key column to use in updating the values in the Database
* @param string $table The table where the data is being updated
*
* @return bool
* @since 3.2.0
**/
public function item(object $data, string $key, string $table): bool
{
// convert to an array
return $this->row((array) get_object_vars($data), $key, $table);
}

View File

@ -0,0 +1,20 @@
{
"add_head": "0",
"add_licensing_template": "2",
"extends": "6cbef8f8-4813-48e3-b05a-65e1aea95171",
"guid": "cce56585-58b0-4f72-a92c-e2635ea52d83",
"implements": [
"7179fde6-1e51-4b51-8545-7ca18f74a0f4"
],
"load_selection": null,
"name": "Update",
"power_version": "1.0.0",
"system_name": "JCB.Database.Update",
"type": "final class",
"use_selection": null,
"namespace": "VDM\\Joomla\\Componentbuilder.Database.Update",
"description": "Database Update Class\r\n\r\n@since 3.2.0",
"licensing_template": "\/**\r\n * @package Joomla.Component.Builder\r\n *\r\n * @created 4th September, 2022\r\n * @author Llewellyn van der Merwe <https:\/\/dev.vdm.io>\r\n * @git Joomla Component Builder <https:\/\/git.vdm.dev\/joomla\/Component-Builder>\r\n * @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.\r\n * @license GNU General Public License version 2 or later; see LICENSE.txt\r\n *\/\r\n",
"head": "",
"composer": ""
}

View File

@ -209,6 +209,16 @@
"path": "src\/584747d1-3a86-453d-b7a3-a2219de8d777", "path": "src\/584747d1-3a86-453d-b7a3-a2219de8d777",
"guid": "584747d1-3a86-453d-b7a3-a2219de8d777" "guid": "584747d1-3a86-453d-b7a3-a2219de8d777"
}, },
"cce56585-58b0-4f72-a92c-e2635ea52d83": {
"name": "Update",
"type": "final class",
"namespace": "VDM\\Joomla\\Componentbuilder\\Database",
"code": "src\/cce56585-58b0-4f72-a92c-e2635ea52d83\/code.php",
"power": "src\/cce56585-58b0-4f72-a92c-e2635ea52d83\/code.power",
"settings": "src\/cce56585-58b0-4f72-a92c-e2635ea52d83\/settings.json",
"path": "src\/cce56585-58b0-4f72-a92c-e2635ea52d83",
"guid": "cce56585-58b0-4f72-a92c-e2635ea52d83"
},
"b84e947d-2a13-44f7-ac0f-3902ae55ae0c": { "b84e947d-2a13-44f7-ac0f-3902ae55ae0c": {
"name": "BaseRegistry", "name": "BaseRegistry",
"type": "abstract class", "type": "abstract class",