
######
DBCRUD
######


****
NAME
****


Kernel::System::DBCRUD

new()
=====


Don't use the constructor directly, use the ObjectManager instead:


.. code-block:: perl

     my $DBCRUDObject = $Kernel::OM->Get('Kernel::System::DBCRUD');



DataAdd()
=========


To use this function you need a DB CRUD module like e.g. Kernel::System::UnitTest::DBCRUD.

Add data to table.


.. code-block:: perl

     my $Success = $DBCRUDObject->DataAdd(
         ID          => '...',
         # ...
         CreateTime  => '...', # optional
         ChangeTime  => '...', # optional
     );


Returns:


.. code-block:: perl

     my $Success = 1;



DataUpdate()
============


To use this function you need a DB CRUD module like e.g. Kernel::System::UnitTest::DBCRUD.

Update data attributes.


.. code-block:: perl

     my $Success = $DBCRUDObject->DataUpdate(
         ID     => 1234,
         UserID => 1,
         # all other attributes are optional
     );


Returns:


.. code-block:: perl

     my $Success = 1; # 1|0



DataGet()
=========


To use this function you need a DB CRUD module like e.g. Kernel::System::UnitTest::DBCRUD.

Get data attributes.


.. code-block:: perl

     my %Data = $DBCRUDObject->DataGet(
         ID          => '...', # optional
         CreateTime  => '...', # optional
         ChangeTime  => '...', # optional
     );


Returns:


.. code-block:: perl

     my %Data = (
         ID          => '...',
         CreateTime  => '...',
         ChangeTime  => '...',
     );



DataListGet()
=============


To use this function you need a DB CRUD module like e.g. Kernel::System::UnitTest::DBCRUD.

Get list data with attributes.


.. code-block:: perl

     my @Data = $DBCRUDObject->DataListGet(
         ID          => '...', # optional
         CreateTime  => '...', # optional
         ChangeTime  => '...', # optional
     );


Returns:


.. code-block:: perl

     my @Data = (
         {
             ID          => '...',
             CreateTime  => '...',
             ChangeTime  => '...',
         },
         # ...
     );



DataSearch()
============


To use this function you need a DB CRUD module like e.g. Kernel::System::UnitTest::DBCRUD.

Search for value in defined attributes.


.. code-block:: perl

     my %Data = $DBCRUDObject->DataSearch(
         Search      => 'test*test',
         ID          => '...', # optional
         CreateTime  => '...', # optional
         ChangeTime  => '...', # optional
     );


Returns:


.. code-block:: perl

     my %Data = (
         '1' => {
             ID          => '...',
             CreateTime  => '...',
             ChangeTime  => '...',
         },
         # ...
     );



DataDelete()
============


To use this function you need a DB CRUD module like e.g. Kernel::System::UnitTest::DBCRUD.

Remove data from table.


.. code-block:: perl

     my $Success = $DBCRUDObject->DataDelete(
         ID          => '...', # optional
         CreateTime  => '...', # optional
         ChangeTime  => '...', # optional
     );


Returns:


.. code-block:: perl

     my $Success = 1;



DataExport()
============


To use this function you need a DB CRUD module like e.g. Kernel::System::UnitTest::DBCRUD.

Exports data.


.. code-block:: perl

     my $Export = $DBCRUDObject->DataExport(
         Format => 'yml',
         Cache  => 0,
         Filter => {
             Source => '...'
         }
     );


Returns:


.. code-block:: perl

     my $Export = 'STRING';



DataImport()
============


To use this function you need a DB CRUD module like e.g. Kernel::System::UnitTest::DBCRUD.

Imports data.


.. code-block:: perl

     my $Success = $DBCRUDObject->DataImport(
         Content   => $ContentString,
         Format    => 'yml',                 # optional - default
         Overwrite => 1,                     # optional to overwrite existing data
         Data      => {                      # additional data if not all needed data exists
             ValidID => 1,
         }
     );


Returns:


.. code-block:: perl

     my $Success = 1;



DataCopy()
==========


To use this function you need a DB CRUD module like e.g. Kernel::System::UnitTest::DBCRUD.

Copies object.


.. code-block:: perl

     my $ObjectID = $DBCRUDObject->DataCopy(
         ID     => 123,
         UserID => 123,
     );


Returns:


.. code-block:: perl

     my $ObjectID = 141;



DataNameExists()
================


Checks if the given name already exists in the table 'name'.


.. code-block:: perl

     my $Success = $DBCRUDObject->DataNameExists(
         Name   => 'name',
         UserID => 123,
     );


Returns:


.. code-block:: perl

     my $Success = 1;



IsUUIDDatabaseTableColumnPresent()
==================================



.. code-block:: perl

     Checks if the column for the UUID.
 
     my $UUIDColumnPresent = $DBCRUDObject->IsUUIDDatabaseTableColumnPresent();
 
     Returns true value if column for UUID is present.



CreateUUIDDatabaseTableColumn()
===============================



.. code-block:: perl

     Creates the UUID database table column.
 
     my $UUIDColumnCreated = $DBCRUDObject->CreateUUIDDatabaseTableColumn();
 
     Returns true value if column has been created successfully.



CreateMissingUUIDDatabaseTableColumns()
=======================================



.. code-block:: perl

     Creates missing UUID database table column in backend's database table
     and it's history database table, if one is configured.
 
     my $Success = $DBCRUDObject->CreateMissingUUIDDatabaseTableColumns();
 
     Returns true value on success (also if columns already existed).
     Returns false value if something went wrong.



MigrateUUIDDatabaseTableColumns()
=================================



.. code-block:: perl

     Renames the UUID column from z4o_database_backend_uuid (used up until Znuny 6.0) or
     database_backend_uuid (used in Znuny 6.1 and 6.2) to dbcrud_uuid (Znuny 6.3 and up).
     Also includes table from history backend, if present.
 
     my $Success = $DBCRUDObject->MigrateUUIDDatabaseTableColumns();
 
     Returns true value on success.



_WhereTimeStamp()
=================


Additional WHERE to handle TimeStamp clauses.


.. code-block:: perl

     my %Result = $Self->_WhereTimeStamp(
         Param  => {
             'ChangeTimeNewerDate'  => '2016-04-15 10:45:00',
             'ChangeTimeNewerUnit'  => 'Minutes',
             'ChangeTimeNewerValue' => 2
         }
         Column => {
             'TimeStampAdd' => 1,
             'Column'       => 'create_time',
             'Name'         => 'CreateTime',
             'TimeStamp'    => 1
         }
     );


Returns:


.. code-block:: perl

     my %Result = {
         'Where' => [
             'change_time >= ?'
         ],
         'Bind' => [
             \'2016-04-15 10:47:00'
         ],
         'Cache' => [
             'ChangeTimeNewerDate::2016-04-15 10:47:00'
         ]
     };




