]> git.mxchange.org Git - friendica.git/blob - src/Model/Storage/Database.php
Add Database storage backend
[friendica.git] / src / Model / Storage / Database.php
1 <?php
2 /**
3  * @file src/Model/Storage/Filesystem.php
4  * @brief Storage backend system
5  */
6
7 namespace Friendica\Model\Storage;
8
9 use Friendica\Core\Logger;
10 use Friendica\Core\L10n;
11 use Friendica\Core\System;
12 use Friendica\Database\DBA;
13
14 /**
15  * @brief Database based storage system
16  *
17  * This class manage data stored in database table.
18  */
19 class Database implements IStorage
20 {
21         public static function get($ref)
22         {
23                 $r = DBA::selectFirst('storage', ['data'], ['id' => $ref]);
24                 if (!DBA::isResult($r)) {
25                         return '';
26                 }
27
28                 return $r['data'];
29         }
30
31         public static function put($data, $ref = '')
32         {
33                 if ($ref !== '') {
34                         $r = DBA::update('storage', ['data' => $data], ['id' => $ref]);
35                         if ($r === false) {
36                                 Logger::log('Failed to update data with id ' . $ref . ': ' . DBA::errorNo() . ' : ' . DBA::errorMessage());
37                                 throw new StorageException(L10n::t('Database storage failed to update %s', $ref));
38                         }
39                         return $ref;
40                 } else {
41                         $r = DBA::insert('storage', ['data' => $data]);
42                         if ($r === false) {
43                                 Logger::log('Failed to insert data: ' . DBA::errorNo() . ' : ' . DBA::errorMessage());
44                                 throw new StorageException(L10n::t('Database storage failed to insert data'));
45                         }
46                         return DBA::lastInsertId();
47                 }
48         }
49
50         public static function delete($ref)
51         {
52                 return DBA::delete('storage', ['id' => $ref]);
53         }
54 }