0012060: fix doctrine schema creation for pgsql
authorPhilipp Schüle <p.schuele@metaways.de>
Tue, 19 Jul 2016 16:46:04 +0000 (18:46 +0200)
committerPhilipp Schüle <p.schuele@metaways.de>
Thu, 21 Jul 2016 15:10:46 +0000 (17:10 +0200)
* fixing doctrine modelconfig for pgsql
* use smallint for is_deleted & deprecated_status
* always map boolean to smallint
* don't forget to increase version to start update

https://forge.tine20.org/view.php?id=12060

Change-Id: Ib4e7ed16b03afb8595b2b92989746839ff19389d
Reviewed-on: http://gerrit.tine20.com/customers/3372
Tested-by: Jenkins CI (http://ci.tine20.com/)
Reviewed-by: Philipp Schüle <p.schuele@metaways.de>
tine20/Inventory/Model/InventoryItem.php
tine20/Inventory/Setup/Update/Release10.php [new file with mode: 0644]
tine20/Inventory/Setup/Update/Release9.php
tine20/Inventory/Setup/setup.xml
tine20/Tinebase/ModelConfiguration.php
tine20/Tinebase/Record/DoctrineMappingDriver.php

index 18c995e..3ed0b3d 100644 (file)
@@ -32,7 +32,7 @@ class Inventory_Model_InventoryItem extends Tinebase_Record_Abstract
      * @var array
      */
     protected static $_modelConfiguration = array(
-        'version'           => 7,
+        'version'           => 8,
         'recordName'        => 'Inventory item',
         'recordsName'       => 'Inventory items', // ngettext('Inventory item', 'Inventory items', n)
         'containerProperty' => 'container_id',
@@ -185,11 +185,11 @@ class Inventory_Model_InventoryItem extends Tinebase_Record_Abstract
                 'nullable'   => true,
             ),
             'deprecated_status' => array(
-                'type'         => 'boolean',
+                'type'         => 'integer',
                 'validators'   => array(Zend_Filter_Input::ALLOW_EMPTY => TRUE, Zend_Filter_Input::DEFAULT_VALUE => 0),
                 //'label'        => 'Deprecate', // _('Deprecate')
                 'label'        => NULL,
-                'default'      => false,
+                'default'      => 0,
             ),
             'image' => array(
                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => TRUE),
diff --git a/tine20/Inventory/Setup/Update/Release10.php b/tine20/Inventory/Setup/Update/Release10.php
new file mode 100644 (file)
index 0000000..d5e4daa
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+/**
+ * Tine 2.0
+ *
+ * @package     Inventory
+ * @subpackage  Setup
+ * @license     http://www.gnu.org/licenses/agpl.html AGPL3
+ * @copyright   Copyright (c) 2012-2016 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @author      Stefanie Stamer <s.stamer@metaways.de>
+ */
+class Inventory_Setup_Update_Release10 extends Setup_Update_Abstract
+{
+    /**
+     * update to 10.1
+     *
+     * - convert is_deleted to smallint
+     * - convert deprecated_status to smallint
+     *
+     * @return void
+     */
+    public function update_0()
+    {
+        // update according to current modelconfigV2 definition using doctrine2
+        // NOTE: depending on update action you might need to move this to a later update
+        //       as your update case might be gone after this got executed in an previous
+        //      (this) update
+        $this->updateSchema('Inventory', array('Inventory_Model_InventoryItem'));
+
+        $this->setApplicationVersion('Inventory', '10.1');
+    }
+}
index cb075df..a527414 100644 (file)
@@ -17,11 +17,6 @@ class Inventory_Setup_Update_Release9 extends Setup_Update_Abstract
      */
     public function update_0()
     {
-        // update according to current modelconfigV2 definition using doctrine2
-        // NOTE: depending on update action you might need to move this to a later update
-        //       as your update case might be gone ofter this got executetd in an previoud (this) update
-        $this->updateSchema('Inventory', array('Inventory_Model_InventoryItem'));
-
         $this->setApplicationVersion('Inventory', '10.0');
     }
 }
index 3f0abe1..0f69b98 100644 (file)
@@ -2,7 +2,7 @@
 <application>
     <name>Inventory</name>
     <!-- gettext('Inventory') -->   
-    <version>10</version>
+    <version>10.1</version>
     <order>60</order>
     <status>enabled</status>
 </application>
index 98a6983..6697465 100644 (file)
@@ -791,7 +791,13 @@ class Tinebase_ModelConfiguration {
             // don't show deleted information
             $this->_fields['deleted_by']         = array('label' => NULL, 'type' => 'user',     'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => true), 'useGlobalTranslation' => TRUE, 'length' => 40, 'nullable' => true);
             $this->_fields['deleted_time']       = array('label' => NULL, 'type' => 'datetime', 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => true), 'useGlobalTranslation' => TRUE, 'nullable' => true);
-            $this->_fields['is_deleted']         = array('label' => NULL, 'type' => 'boolean',  'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => true), 'useGlobalTranslation' => TRUE, 'default' => false);
+            $this->_fields['is_deleted']         = array(
+                'label'   => NULL,
+                'type'    => 'integer',
+                'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => true),
+                'useGlobalTranslation' => TRUE,
+                'default' => 0
+            );
 
         } elseif ($this->_hasNotes) {
             $this->_fields['notes'] = array('label' => NULL, 'type' => 'note', 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => true, Zend_Filter_Input::DEFAULT_VALUE => NULL));
index 0ce9f37..2f5883a 100644 (file)
@@ -35,7 +35,9 @@ class Tinebase_Record_DoctrineMappingDriver implements Doctrine\Common\Persisten
         'record'    => 'string',
         'keyfield'  => 'string',
         'user'      => 'string',
-        'boolean'   => 'boolean',
+        // NOTE 1: smallint is not working somehow ...
+        // NOTE 2: we need int here because otherwise we need to typecast values for pgsql
+        'boolean'   => 'integer',
     );
 
     /**