Add migrations for Nag, remove old SQL scripts
authorChuck Hagenbuch <chuck@horde.org>
Sun, 3 Oct 2010 21:17:16 +0000 (17:17 -0400)
committerChuck Hagenbuch <chuck@horde.org>
Sun, 3 Oct 2010 21:19:36 +0000 (17:19 -0400)
nag/migration/1_nag_base_tables.php [new file with mode: 0644]
nag/scripts/sql/nag.mssql.sql [deleted file]
nag/scripts/sql/nag.oci8.sql [deleted file]
nag/scripts/sql/nag.sql [deleted file]
nag/scripts/sql/nag.xml [deleted file]

diff --git a/nag/migration/1_nag_base_tables.php b/nag/migration/1_nag_base_tables.php
new file mode 100644 (file)
index 0000000..db8b068
--- /dev/null
@@ -0,0 +1,109 @@
+<?php
+/**
+ * Create Nag base tables (as of Nag 2.x).
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (GPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
+ *
+ * @author   Chuck Hagenbuch <chuck@horde.org>
+ * @category Horde
+ * @license  http://www.fsf.org/copyleft/gpl.html GPL
+ * @package  Nag
+ */
+class NagBaseTables extends Horde_Db_Migration_Base
+{
+    /**
+     * Upgrade.
+     */
+    public function up()
+    {
+        $tableList = $this->tables();
+
+        if (!in_array('nag_tasks', $tableList)) {
+            $t = $this->createTable('nag_tasks', array('primaryKey' => false));
+            $t->column('task_id', 'string', array('limit' => 32, 'null' => false));
+            $t->column('task_owner', 'string', array('null' => false));
+            $t->column('task_creator', 'string', array('null' => false));
+            $t->column('task_parent', 'string');
+            $t->column('task_assignee', 'string');
+            $t->column('task_name', 'string', array('null' => false));
+            $t->column('task_uid', 'string', array('null' => false));
+            $t->column('task_desc', 'text');
+            $t->column('task_start', 'integer');
+            $t->column('task_due', 'integer');
+            $t->column('task_priority', 'integer', array('default' => 0, 'null' => false));
+            $t->column('task_estimate', 'float');
+            $t->column('task_category', 'string', array('limit' => 80));
+            $t->column('task_completed', 'integer', array('limit' => 1, 'default' => 0, 'null' => false));
+            $t->column('task_completed_date', 'integer');
+            $t->column('task_alarm', 'integer', array('default' => 0, 'null' => false));
+            $t->column('task_alarm_methods', 'text');
+            $t->column('task_private', 'integer', array('limit' => 1, 'default' => 0, 'null' => false));
+            $t->primaryKey(array('task_id'));
+            $t->end();
+
+            $this->addIndex('nag_tasks', 'task_owner');
+            $this->addIndex('nag_tasks', 'task_uid');
+            $this->addIndex('nag_tasks', 'task_start');
+        }
+
+        if (!in_array('nag_shares', $tableList)) {
+            $t = $this->createTable('nag_shares', array('primaryKey' => 'share_id'));
+            $t->column('share_id', 'integer', array('null' => false));
+            $t->column('share_name', 'string', array('null' => false));
+            $t->column('share_owner', 'string');
+            $t->column('share_flags', 'integer', array('limit' => 2, 'default' => 0, 'null' => false));
+            $t->column('perm_creator', 'integer', array('limit' => 2, 'default' => 0, 'null' => false));
+            $t->column('perm_default', 'integer', array('limit' => 2, 'default' => 0, 'null' => false));
+            $t->column('perm_guest', 'integer', array('limit' => 2, 'default' => 0, 'null' => false));
+            $t->column('attribute_name', 'string', array('null' => false));
+            $t->column('attribute_desc', 'string');
+            $t->column('attribute_color', 'string', array('limit' => 7));
+            $t->primaryKey(array('share_id'));
+            $t->end();
+
+            $this->addIndex('nag_shares', 'share_name');
+            $this->addIndex('nag_shares', 'share_owner');
+            $this->addIndex('nag_shares', 'perm_creator');
+            $this->addIndex('nag_shares', 'perm_default');
+            $this->addIndex('nag_shares', 'perm_guest');
+        }
+
+        if (!in_array('nag_shares_groups', $tableList)) {
+            $t = $this->createTable('nag_shares_groups', array('primaryKey' => false));
+            $t->column('share_id', 'integer', array('null' => false));
+            $t->column('group_uid', 'string', array('null' => false));
+            $t->column('perm', 'integer', array('limit' => 2, 'null' => false));
+            $t->end();
+
+            $this->addIndex('nag_shares_groups', 'share_id');
+            $this->addIndex('nag_shares_groups', 'group_uid');
+            $this->addIndex('nag_shares_groups', 'perm');
+        }
+
+        if (!in_array('nag_shares_users', $tableList)) {
+            $t = $this->createTable('nag_shares_users', array('primaryKey' => false));
+            $t->column('share_id', 'integer', array('null' => false));
+            $t->column('user_uid', 'string', array('null' => false));
+            $t->column('perm', 'integer', array('limit' => 2, 'null' => false));
+            $t->end();
+
+            $this->addIndex('nag_shares_users', 'share_id');
+            $this->addIndex('nag_shares_users', 'user_uid');
+            $this->addIndex('nag_shares_users', 'perm');
+        }
+    }
+
+    /**
+     * Downgrade.
+     */
+    public function down()
+    {
+        $this->dropTable('nag_tasks');
+        $this->dropTable('nag_shares');
+        $this->dropTable('nag_shares_groups');
+        $this->dropTable('nag_shares_users');
+    }
+}
diff --git a/nag/scripts/sql/nag.mssql.sql b/nag/scripts/sql/nag.mssql.sql
deleted file mode 100644 (file)
index 5298d13..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-CREATE TABLE nag_tasks (
-    task_id              VARCHAR(32) NOT NULL,
-    task_owner           VARCHAR(255) NOT NULL,
-    task_creator         VARCHAR(255) NOT NULL,
-    task_parent          VARCHAR(255),
-    task_assignee        VARCHAR(255),
-    task_name            VARCHAR(255) NOT NULL,
-    task_uid             VARCHAR(255) NOT NULL,
-    task_desc            VARCHAR(MAX),
-    task_start           INT,
-    task_due             INT,
-    task_priority        INT DEFAULT 0 NOT NULL,
-    task_estimate        FLOAT,
-    task_category        VARCHAR(80),
-    task_completed       SMALLINT DEFAULT 0 NOT NULL,
-    task_completed_date  INT,
-    task_alarm           INT DEFAULT 0 NOT NULL,
-    task_alarm_methods   VARCHAR(MAX),
-    task_private         SMALLINT DEFAULT 0 NOT NULL,
---
-    PRIMARY KEY (task_id)
-);
-
-CREATE INDEX nag_tasklist_idx ON nag_tasks (task_owner);
-CREATE INDEX nag_uid_idx ON nag_tasks (task_uid);
-CREATE INDEX nag_start_idx ON nag_tasks (task_start);
-
-CREATE TABLE nag_shares (
-    share_id INT NOT NULL,
-    share_name VARCHAR(255) NOT NULL,
-    share_owner VARCHAR(255),
-    share_flags SMALLINT DEFAULT 0 NOT NULL,
-    perm_creator SMALLINT DEFAULT 0 NOT NULL,
-    perm_default SMALLINT DEFAULT 0 NOT NULL,
-    perm_guest SMALLINT DEFAULT 0 NOT NULL,
-    attribute_name VARCHAR(255) NOT NULL,
-    attribute_desc VARCHAR(255),
-    attribute_color VARCHAR(7),
-    PRIMARY KEY (share_id)
-);
-
-CREATE INDEX nag_shares_share_name_idx ON nag_shares (share_name);
-CREATE INDEX nag_shares_share_owner_idx ON nag_shares (share_owner);
-CREATE INDEX nag_shares_perm_creator_idx ON nag_shares (perm_creator);
-CREATE INDEX nag_shares_perm_default_idx ON nag_shares (perm_default);
-CREATE INDEX nag_shares_perm_guest_idx ON nag_shares (perm_guest);
-
-CREATE TABLE nag_shares_groups (
-    share_id INT NOT NULL,
-    group_uid VARCHAR(255) NOT NULL,
-    perm SMALLINT NOT NULL
-);
-
-CREATE INDEX nag_shares_groups_share_id_idx ON nag_shares_groups (share_id);
-CREATE INDEX nag_shares_groups_group_uid_idx ON nag_shares_groups (group_uid);
-CREATE INDEX nag_shares_groups_perm_idx ON nag_shares_groups (perm);
-
-CREATE TABLE nag_shares_users (
-    share_id INT NOT NULL,
-    user_uid VARCHAR(255) NOT NULL,
-    perm SMALLINT NOT NULL
-);
-
-CREATE INDEX nag_shares_users_share_id_idx ON nag_shares_users (share_id);
-CREATE INDEX nag_shares_users_user_uid_idx ON nag_shares_users (user_uid);
-CREATE INDEX nag_shares_users_perm_idx ON nag_shares_users (perm);
diff --git a/nag/scripts/sql/nag.oci8.sql b/nag/scripts/sql/nag.oci8.sql
deleted file mode 100644 (file)
index 3d0ade7..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-CREATE TABLE nag_tasks (
-    task_id              VARCHAR2(32) NOT NULL,
-    task_owner           VARCHAR2(255) NOT NULL,
-    task_creator         VARCHAR2(255) NOT NULL,
-    task_parent          VARCHAR2(255),
-    task_assignee        VARCHAR2(255),
-    task_name            VARCHAR2(255) NOT NULL,
-    task_uid             VARCHAR2(255) NOT NULL,
-    task_desc            CLOB,
-    task_start           NUMBER(16),
-    task_due             NUMBER(16),
-    task_priority        NUMBER(16) DEFAULT 0 NOT NULL,
-    task_estimate        FLOAT,
-    task_category        VARCHAR2(80),
-    task_completed       NUMBER(8) DEFAULT 0 NOT NULL,
-    task_completed_date  NUMBER(16),
-    task_alarm           NUMBER(16) DEFAULT 0 NOT NULL,
-    task_alarm_methods   CLOB,
-    task_private         NUMBER(8) DEFAULT 0 NOT NULL,
---
-    PRIMARY KEY (task_id)
-);
-
-CREATE INDEX nag_tasklist_idx ON nag_tasks (task_owner);
-CREATE INDEX nag_uid_idx ON nag_tasks (task_uid);
-CREATE INDEX nag_start_idx ON nag_tasks (task_start);
-
-CREATE TABLE nag_shares (
-    share_id NUMBER(16) NOT NULL,
-    share_name VARCHAR2(255) NOT NULL,
-    share_owner VARCHAR2(25),
-    share_flags NUMBER(8) DEFAULT 0 NOT NULL,
-    perm_creator NUMBER(8) DEFAULT 0 NOT NULL,
-    perm_default NUMBER(8) DEFAULT 0 NOT NULL,
-    perm_guest NUMBER(8) DEFAULT 0 NOT NULL,
-    attribute_name VARCHAR2(255) NOT NULL,
-    attribute_desc VARCHAR2(255),
-    attribute_color VARCHAR2(7),
-    PRIMARY KEY (share_id)
-);
-
-CREATE INDEX nag_shares_name_idx ON nag_shares (share_name);
-CREATE INDEX nag_shares_owner_idx ON nag_shares (share_owner);
-CREATE INDEX nag_shares_creator_idx ON nag_shares (perm_creator);
-CREATE INDEX nag_shares_default_idx ON nag_shares (perm_default);
-CREATE INDEX nag_shares_guest_idx ON nag_shares (perm_guest);
-
-CREATE TABLE nag_shares_groups (
-    share_id NUMBER(16) NOT NULL,
-    group_uid VARCHAR2(255) NOT NULL,
-    perm NUMBER(8) NOT NULL
-);
-
-CREATE INDEX nag_groups_share_id_idx ON nag_shares_groups (share_id);
-CREATE INDEX nag_groups_group_uid_idx ON nag_shares_groups (group_uid);
-CREATE INDEX nag_groups_perm_idx ON nag_shares_groups (perm);
-
-CREATE TABLE nag_shares_users (
-    share_id NUMBER(16) NOT NULL,
-    user_uid VARCHAR2(255) NOT NULL,
-    perm NUMBER(8) NOT NULL
-);
-
-CREATE INDEX nag_users_share_id_idx ON nag_shares_users (share_id);
-CREATE INDEX nag_users_user_uid_idx ON nag_shares_users (user_uid);
-CREATE INDEX nag_users_perm_idx ON nag_shares_users (perm);
diff --git a/nag/scripts/sql/nag.sql b/nag/scripts/sql/nag.sql
deleted file mode 100644 (file)
index dfdf2ce..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-CREATE TABLE nag_tasks (
-    task_id              VARCHAR(32) NOT NULL,
-    task_owner           VARCHAR(255) NOT NULL,
-    task_creator         VARCHAR(255) NOT NULL,
-    task_parent          VARCHAR(255),
-    task_assignee        VARCHAR(255),
-    task_name            VARCHAR(255) NOT NULL,
-    task_uid             VARCHAR(255) NOT NULL,
-    task_desc            TEXT,
-    task_start           INT,
-    task_due             INT,
-    task_priority        INT DEFAULT 0 NOT NULL,
-    task_estimate        FLOAT,
-    task_category        VARCHAR(80),
-    task_completed       SMALLINT DEFAULT 0 NOT NULL,
-    task_completed_date  INT,
-    task_alarm           INT DEFAULT 0 NOT NULL,
-    task_alarm_methods   TEXT,
-    task_private         SMALLINT DEFAULT 0 NOT NULL,
---
-    PRIMARY KEY (task_id)
-);
-
-CREATE INDEX nag_tasklist_idx ON nag_tasks (task_owner);
-CREATE INDEX nag_uid_idx ON nag_tasks (task_uid);
-CREATE INDEX nag_start_idx ON nag_tasks (task_start);
-
-CREATE TABLE nag_shares (
-    share_id INT NOT NULL,
-    share_name VARCHAR(255) NOT NULL,
-    share_owner VARCHAR(255),
-    share_flags SMALLINT DEFAULT 0 NOT NULL,
-    perm_creator SMALLINT DEFAULT 0 NOT NULL,
-    perm_default SMALLINT DEFAULT 0 NOT NULL,
-    perm_guest SMALLINT DEFAULT 0 NOT NULL,
-    attribute_name VARCHAR(255) NOT NULL,
-    attribute_desc VARCHAR(255),
-    attribute_color VARCHAR(7),
-    PRIMARY KEY (share_id)
-);
-
-CREATE INDEX nag_shares_share_name_idx ON nag_shares (share_name);
-CREATE INDEX nag_shares_share_owner_idx ON nag_shares (share_owner);
-CREATE INDEX nag_shares_perm_creator_idx ON nag_shares (perm_creator);
-CREATE INDEX nag_shares_perm_default_idx ON nag_shares (perm_default);
-CREATE INDEX nag_shares_perm_guest_idx ON nag_shares (perm_guest);
-
-CREATE TABLE nag_shares_groups (
-    share_id INT NOT NULL,
-    group_uid VARCHAR(255) NOT NULL,
-    perm SMALLINT NOT NULL
-);
-
-CREATE INDEX nag_shares_groups_share_id_idx ON nag_shares_groups (share_id);
-CREATE INDEX nag_shares_groups_group_uid_idx ON nag_shares_groups (group_uid);
-CREATE INDEX nag_shares_groups_perm_idx ON nag_shares_groups (perm);
-
-CREATE TABLE nag_shares_users (
-    share_id INT NOT NULL,
-    user_uid VARCHAR(255) NOT NULL,
-    perm SMALLINT NOT NULL
-);
-
-CREATE INDEX nag_shares_users_share_id_idx ON nag_shares_users (share_id);
-CREATE INDEX nag_shares_users_user_uid_idx ON nag_shares_users (user_uid);
-CREATE INDEX nag_shares_users_perm_idx ON nag_shares_users (perm);
diff --git a/nag/scripts/sql/nag.xml b/nag/scripts/sql/nag.xml
deleted file mode 100644 (file)
index 7e4cbf2..0000000
+++ /dev/null
@@ -1,418 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<database>
-
- <name><variable>name</variable></name>
- <create>false</create>
- <overwrite>false</overwrite>
-
- <table>
-
-  <name>nag_tasks</name>
-
-  <declaration>
-
-   <field>
-    <name>task_id</name>
-    <type>text</type>
-    <length>32</length>
-    <notnull>true</notnull>
-   </field>
-
-   <field>
-    <name>task_owner</name>
-    <type>text</type>
-    <length>255</length>
-    <notnull>true</notnull>
-   </field>
-
-   <field>
-    <name>task_creator</name>
-    <type>text</type>
-    <length>255</length>
-    <notnull>true</notnull>
-   </field>
-
-   <field>
-    <name>task_parent</name>
-    <type>text</type>
-    <length>32</length>
-   </field>
-
-   <field>
-    <name>task_assignee</name>
-    <type>text</type>
-    <length>255</length>
-   </field>
-
-   <field>
-    <name>task_name</name>
-    <type>text</type>
-    <length>255</length>
-    <notnull>true</notnull>
-   </field>
-
-   <field>
-    <name>task_uid</name>
-    <type>text</type>
-    <length>255</length>
-    <notnull>true</notnull>
-   </field>
-
-   <field>
-    <name>task_desc</name>
-    <type>clob</type>
-   </field>
-
-   <field>
-    <name>task_start</name>
-    <type>integer</type>
-   </field>
-
-   <field>
-    <name>task_due</name>
-    <type>integer</type>
-   </field>
-
-   <field>
-    <name>task_priority</name>
-    <type>integer</type>
-    <notnull>true</notnull>
-    <default>0</default>
-   </field>
-
-   <field>
-    <name>task_estimate</name>
-    <type>float</type>
-   </field>
-
-   <field>
-    <name>task_category</name>
-    <type>text</type>
-    <length>80</length>
-   </field>
-
-   <field>
-    <name>task_completed</name>
-    <type>integer</type>
-    <length>1</length>
-    <notnull>true</notnull>
-    <default>0</default>
-   </field>
-
-   <field>
-    <name>task_completed_date</name>
-    <type>integer</type>
-   </field>
-
-   <field>
-    <name>task_alarm</name>
-    <type>integer</type>
-    <unsigned>false</unsigned>
-    <notnull>true</notnull>
-    <default>0</default>
-   </field>
-
-   <field>
-    <name>task_alarm_methods</name>
-    <type>clob</type>
-   </field>
-
-   <field>
-    <name>task_private</name>
-    <type>integer</type>
-    <length>1</length>
-    <notnull>true</notnull>
-    <default>0</default>
-   </field>
-
-   <index>
-    <name>nag_primary</name>
-    <primary>true</primary>
-    <field>
-     <name>task_id</name>
-    </field>
-   </index>
-
-   <index>
-    <name>nag_tasklist</name>
-    <field>
-     <name>task_owner</name>
-     <sorting>ascending</sorting>
-    </field>
-   </index>
-
-   <index>
-    <name>nag_uid</name>
-    <field>
-     <name>task_uid</name>
-     <sorting>ascending</sorting>
-    </field>
-   </index>
-
-   <index>
-    <name>nag_start</name>
-    <field>
-     <name>task_start</name>
-     <sorting>ascending</sorting>
-    </field>
-   </index>
-
-  </declaration>
-
- </table>
-
- <table>
-
-  <name>nag_shares</name>
-
-  <declaration>
-
-   <field>
-    <name>share_id</name>
-    <type>integer</type>
-    <default></default>
-    <notnull>true</notnull>
-    <length>4</length>
-   </field>
-
-   <field>
-    <name>share_name</name>
-    <type>text</type>
-    <default></default>
-    <notnull>true</notnull>
-    <length>255</length>
-   </field>
-
-   <field>
-    <name>share_owner</name>
-    <type>text</type>
-    <default></default>
-    <length>255</length>
-   </field>
-
-   <field>
-    <name>share_flags</name>
-    <type>integer</type>
-    <default>0</default>
-    <notnull>true</notnull>
-    <length>2</length>
-   </field>
-
-   <field>
-    <name>perm_creator</name>
-    <type>integer</type>
-    <default>0</default>
-    <notnull>true</notnull>
-    <length>2</length>
-   </field>
-
-   <field>
-    <name>perm_default</name>
-    <type>integer</type>
-    <default>0</default>
-    <notnull>true</notnull>
-    <length>2</length>
-   </field>
-
-   <field>
-    <name>perm_guest</name>
-    <type>integer</type>
-    <default>0</default>
-    <notnull>true</notnull>
-    <length>2</length>
-   </field>
-
-   <field>
-    <name>attribute_name</name>
-    <type>text</type>
-    <default></default>
-    <notnull>true</notnull>
-    <length>255</length>
-   </field>
-
-   <field>
-    <name>attribute_desc</name>
-    <type>text</type>
-    <default></default>
-    <notnull>false</notnull>
-    <length>255</length>
-   </field>
-
-   <field>
-    <name>attribute_color</name>
-    <type>text</type>
-    <default></default>
-    <notnull>false</notnull>
-    <length>7</length>
-   </field>
-
-   <index>
-    <name>nag_shares_name</name>
-    <field>
-     <name>share_name</name>
-     <sorting>ascending</sorting>
-    </field>
-   </index>
-
-   <index>
-    <name>nag_shares_owner</name>
-    <field>
-     <name>share_owner</name>
-     <sorting>ascending</sorting>
-    </field>
-   </index>
-
-   <index>
-    <name>nag_shares_creator</name>
-    <field>
-     <name>perm_creator</name>
-     <sorting>ascending</sorting>
-    </field>
-   </index>
-
-   <index>
-    <name>nag_shares_default</name>
-    <field>
-     <name>perm_default</name>
-     <sorting>ascending</sorting>
-    </field>
-   </index>
-
-   <index>
-    <name>nag_shares_guest</name>
-    <field>
-     <name>perm_guest</name>
-     <sorting>ascending</sorting>
-    </field>
-   </index>
-
-   <index>
-    <name>nag_shares_pKey</name>
-    <primary>true</primary>
-    <field>
-     <name>share_id</name>
-     <sorting>ascending</sorting>
-    </field>
-   </index>
-
-  </declaration>
-
- </table>
-
- <table>
-
-  <name>nag_shares_groups</name>
-
-  <declaration>
-
-   <field>
-    <name>share_id</name>
-    <type>integer</type>
-    <default></default>
-    <notnull>true</notnull>
-    <length>4</length>
-   </field>
-
-   <field>
-    <name>group_uid</name>
-    <type>text</type>
-    <default></default>
-    <notnull>true</notnull>
-    <length>255</length>
-   </field>
-
-   <field>
-    <name>perm</name>
-    <type>integer</type>
-    <default></default>
-    <notnull>true</notnull>
-    <length>2</length>
-   </field>
-
-   <index>
-    <name>nag_groups_share_id</name>
-    <field>
-     <name>share_id</name>
-     <sorting>ascending</sorting>
-    </field>
-   </index>
-
-   <index>
-    <name>nag_groups_group_uid</name>
-    <field>
-     <name>group_uid</name>
-     <sorting>ascending</sorting>
-    </field>
-   </index>
-
-   <index>
-    <name>nag_groups_perm</name>
-    <field>
-     <name>perm</name>
-     <sorting>ascending</sorting>
-    </field>
-   </index>
-
-  </declaration>
-
- </table>
-
- <table>
-
-  <name>nag_shares_users</name>
-
-  <declaration>
-
-   <field>
-    <name>share_id</name>
-    <type>integer</type>
-    <default></default>
-    <notnull>true</notnull>
-    <length>4</length>
-   </field>
-
-   <field>
-    <name>user_uid</name>
-    <type>text</type>
-    <default></default>
-    <notnull>true</notnull>
-    <length>255</length>
-   </field>
-
-   <field>
-    <name>perm</name>
-    <type>integer</type>
-    <default></default>
-    <notnull>true</notnull>
-    <length>2</length>
-   </field>
-
-   <index>
-    <name>nag_users_share_id</name>
-    <field>
-     <name>share_id</name>
-     <sorting>ascending</sorting>
-    </field>
-   </index>
-
-   <index>
-    <name>nag_users_user_uid</name>
-    <field>
-     <name>user_uid</name>
-     <sorting>ascending</sorting>
-    </field>
-   </index>
-
-   <index>
-    <name>nag_users_perm</name>
-    <field>
-     <name>perm</name>
-     <sorting>ascending</sorting>
-    </field>
-   </index>
-
-  </declaration>
-
- </table>
-
-</database>