]> git.mxchange.org Git - friendica.git/blobdiff - src/BaseRepository.php
Refactor API notification usage
[friendica.git] / src / BaseRepository.php
index 9f43d8fe144437adb62ee5c311667cb45833eb50..c14d6f7bc1283bbca258a8652ad28f7bcd36e5f0 100644 (file)
@@ -122,7 +122,12 @@ abstract class BaseRepository extends BaseFactory
         */
        public function update(BaseModel $model)
        {
-               return $this->dba->update(static::$table_name, $model->toArray(), ['id' => $model->id], true);
+               if ($this->dba->update(static::$table_name, $model->toArray(true), ['id' => $model->id], $model->getOriginalData())) {
+                       $model->resetOriginalData();
+                       return true;
+               }
+
+               return false;
        }
 
        /**
@@ -136,11 +141,13 @@ abstract class BaseRepository extends BaseFactory
        {
                $return = $this->dba->insert(static::$table_name, $fields);
 
-               if ($return) {
-                       $fields['id'] = $this->dba->lastInsertId();
-                       $return = $this->create($fields);
+               if (!$return) {
+                       throw new HTTPException\InternalServerErrorException('Unable to insert new row in table "' . static::$table_name . '"');
                }
 
+               $fields['id'] = $this->dba->lastInsertId();
+               $return = $this->create($fields);
+
                return $return;
        }
 
@@ -197,4 +204,12 @@ abstract class BaseRepository extends BaseFactory
 
                return $models;
        }
+
+       /**
+        * @param BaseCollection $collection
+        */
+       public function saveCollection(BaseCollection $collection)
+       {
+               $collection->map([$this, 'update']);
+       }
 }