From 29c9b57ed2b84ea7441637645e0b3bc744f4e808 Mon Sep 17 00:00:00 2001 From: mokaddem Date: Tue, 1 Jun 2021 15:20:24 +0200 Subject: [PATCH] new: [migration] Added migrations scripts --- .../20210311084258_UniqUUIDAndConstraints.php | 208 ++++++++++++++++++ .../Migrations/20210311110021_InboxSystem.php | 102 +++++++++ .../Migrations/20210601125359_LocalTools.php | 62 ++++++ config/Migrations/schema-dump-default.lock | 1 + 4 files changed, 373 insertions(+) create mode 100644 config/Migrations/20210311084258_UniqUUIDAndConstraints.php create mode 100644 config/Migrations/20210311110021_InboxSystem.php create mode 100644 config/Migrations/20210601125359_LocalTools.php create mode 100644 config/Migrations/schema-dump-default.lock diff --git a/config/Migrations/20210311084258_UniqUUIDAndConstraints.php b/config/Migrations/20210311084258_UniqUUIDAndConstraints.php new file mode 100644 index 0000000..5233bc5 --- /dev/null +++ b/config/Migrations/20210311084258_UniqUUIDAndConstraints.php @@ -0,0 +1,208 @@ +tablesRequiringUUIDMigration as $table) { + $table = $this->table($table); + $this->migrateUUID($table)->update(); + } + + // We don't need these table as we'll move to a more generic approach + $this->table('alignment_tags')->drop()->save(); + $this->table('individual_encryption_keys')->drop()->save(); + $this->table('organisation_encryption_keys')->drop()->save(); + + // If a user is deleted, so you its auth_keys + $this->table('auth_keys') + ->addForeignKey('user_id', 'users', 'id', ['delete'=> 'CASCADE', 'update'=> 'CASCADE']) + ->update(); + + // Should an encryption_keys be tied to a user? In the UI it says to individuals/organisations but you can only set it from the user profile. + $this->table('encryption_keys') + ->renameColumn('owner_type', 'owner_model') // less confusing name & make it its length future-proof + ->changeColumn('owner_model', 'string', [ + 'length' => 40, + 'default' => null, + 'null' => false, + ]) + ->update(); + + // A meta_field belongs to both a template & a template field. If one of them is removed, so should the meta field + // (We don't want floating meta_fields as there is no way to link it back to its corresponding template) + $this->table('meta_fields') + ->addForeignKey('meta_template_id', 'meta_templates', 'id', ['delete'=> 'CASCADE', 'update'=> 'CASCADE']) + ->addForeignKey('meta_template_field_id', 'meta_template_fields', 'id', ['delete'=> 'CASCADE', 'update'=> 'CASCADE']) + ->update(); + + // sgo being an mapping table, we don't need an ID. We can use the two other FK as a composed PK + $sgo = $this->table('sgo'); + if ($sgo->hasColumn('id')) { + $sgo + ->changePrimaryKey(['sharing_group_id', 'organisation_id']) + ->removeColumn('id') + ->update(); + } + + // A sharing group belongs to both a user & an organisation. If one of them is removed, so should the sharing group + // (A sharing group without owner should not exists) + $this->table('sharing_groups') + ->addForeignKey('user_id', 'users', 'id', ['delete'=> 'CASCADE', 'update'=> 'CASCADE']) + ->addForeignKey('organisation_id', 'organisations', 'id', ['delete'=> 'CASCADE', 'update'=> 'CASCADE']) + ->update(); + + } + + public function down() + { + /** + * Operations not recoverable during a rollback: + * - Dropped tables (alignment_tags, individual_encryption_keys, organisation_encryption_keys) + * - sgo's `ID` primary key + */ + foreach ($this->tablesRequiringUUIDMigration as $table) { + $table = $this->table($table); + $this->roolbackUUID($table)->update(); + } + + $this->table('auth_keys') + ->dropForeignKey('user_id') + ->update(); + + $this->table('encryption_keys') + ->renameColumn('owner_model', 'owner_type') + ->changeColumn('owner_type', 'string', [ + 'length' => 20, + 'default' => null, + 'null' => false, + ]) + ->update(); + + $this->table('meta_fields') + ->dropForeignKey('meta_template_id') + ->dropForeignKey('meta_template_field_id') + ->update(); + + $this->table('sharing_groups') + ->dropForeignKey('user_id') + ->dropForeignKey('organisation_id') + ->update(); + } + + // public function change() + // { + // if ($this->isMigratingUp()) { + // foreach ($this->tablesRequiringUUIDMigration as $table) { + // $table = $this->table($table); + // $this->migrateUUID($table)->update(); + // } + // } else { + // foreach ($this->tablesRequiringUUIDMigration as $table) { + // $table = $this->table($table); + // $this->roolbackUUID($table)->update(); + // } + // } + + // if ($this->isMigratingUp()) { + // // We don't need these table as we'll move to a more generic approach + // $this->table('alignment_tags')->drop()->save(); + // $this->table('individual_encryption_keys')->drop()->save(); + // $this->table('organisation_encryption_keys')->drop()->save(); + // } + + // // If a user is deleted, so you its auth_keys + // $this->table('auth_keys') + // ->addForeignKey('user_id', 'users', 'id', ['delete'=> 'CASCADE', 'update'=> 'CASCADE']) + // ->update(); + + + // // Should an encryption_keys be tied to a user? In the UI it says to individuals/organisations but you can only set it from the user profile. + // $encryption_keys = $this->table('encryption_keys'); + // $encryption_keys->renameColumn('owner_type', 'owner_model'); + // if ($this->isMigratingUp()) { + // $encryption_keys->changeColumn('owner_model', 'string', [ + // 'length' => 40, + // 'default' => null, + // 'null' => false, + // ])->update(); + // } else { + // $encryption_keys->changeColumn('owner_type', 'string', [ + // 'length' => 20, + // 'default' => null, + // 'null' => false, + // ])->update(); + // } + + // // A meta_field belongs to both a template & a template field. If one of them is removed, so should the meta field + // // (We don't want floating meta_fields as there is no way to link it back to its corresponding template) + // $this->table('meta_fields') + // ->addForeignKey('meta_template_id', 'meta_templates', 'id', ['delete'=> 'CASCADE', 'update'=> 'CASCADE']) + // ->addForeignKey('meta_template_field_id', 'meta_template_fields', 'id', ['delete'=> 'CASCADE', 'update'=> 'CASCADE']) + // ->update(); + + // // sgo being an mapping table, we don't need an ID. We can use the two other FK as a composed PK + // $sgo = $this->table('sgo'); + // if ($this->isMigratingUp()) { + // $sgo->changePrimaryKey(['sharing_group_id', 'organisation_id']) + // ->removeColumn('id') + // ->update(); + // } else { + // $sgo->addColumn('id', 'integer', [ + // 'autoIncrement' => true, + // 'limit' => 10, + // 'signed' => false, + // ]) + // ->changePrimaryKey('id') + // ->update(); + // } + + // // A sharing group belongs to both a user & an organisation. If one of them is removed, so should the sharing group + // // (A sharing group without owner should not exists) + // $this->table('sharing_groups') + // ->addForeignKey('user_id', 'users', 'id', ['delete'=> 'CASCADE', 'update'=> 'CASCADE']) + // ->addForeignKey('organisation_id', 'organisations', 'id', ['delete'=> 'CASCADE', 'update'=> 'CASCADE']) + // ->update(); + // } + + // Use cake's built-in uuid type and ensure unicity + private function migrateUUID($table) + { + $table->changeColumn('uuid', 'uuid', [ + 'default' => null, + 'null' => false, + ]); + if ($table->hasIndex('uuid')) { + $table->removeIndex(['uuid']); // remove existing non-unique index + } + $table->addIndex(['uuid'], ['unique' => true]); + return $table; + } + + private function roolbackUUID($table) + { + $table->changeColumn('uuid', 'string', [ + 'limit' => 40, + 'null' => true, + ])->removeIndex(['uuid']); + return $table; + } +} + diff --git a/config/Migrations/20210311110021_InboxSystem.php b/config/Migrations/20210311110021_InboxSystem.php new file mode 100644 index 0000000..65f143a --- /dev/null +++ b/config/Migrations/20210311110021_InboxSystem.php @@ -0,0 +1,102 @@ +table('inbox', [ + 'signed' => false, + 'collation' => 'utf8mb4_unicode_ci', + ]); + $table + ->addColumn('id', 'integer', [ + 'autoIncrement' => true, + 'limit' => 10, + 'signed' => false, + ]) + ->addPrimaryKey('id') + ->addColumn('uuid', 'uuid', [ + 'default' => null, + 'null' => false, + ]) + ->addColumn('scope', 'string', [ + 'default' => null, + 'null' => false, + 'limit' => 191, + 'comment' => 'The to model on which the request should be performed onto', + ]) + ->addColumn('action', 'string', [ + 'default' => null, + 'null' => false, + 'limit' => 191, + 'comment' => 'A specific action belonging to the model', + ]) + ->addColumn('title', 'string', [ + 'default' => null, + 'null' => false, + 'limit' => 191, + ]) + ->addColumn('origin', 'string', [ + 'default' => null, + 'null' => false, + 'limit' => 191, + ]) + // ->addColumn('ip', 'string', [ + // 'limit' => 191, + // 'default' => null, + // 'null' => true, + // ]) + ->addColumn('user_id', 'integer', [ + 'default' => null, + 'null' => true, + 'signed' => false, + 'length' => 10, + ]) + ->addColumn('comment', 'text', [ + 'default' => null, + 'null' => true, + ]) + ->addColumn('description', 'text', [ + 'default' => null, + 'null' => true, + ]) + ->addColumn('data', 'text', [ + 'default' => null, + 'null' => true, + 'limit' => MysqlAdapter::TEXT_LONG + ]) + ->addColumn('created', 'datetime', [ + 'default' => null, + 'null' => false, + ]); + + $table->addForeignKey('user_id', 'users', 'id', ['delete'=> 'CASCADE', 'update'=> 'CASCADE']); + + $table->addIndex(['uuid'], ['unique' => true]) + ->addIndex('scope') + ->addIndex('action') + ->addIndex('title') + ->addIndex('origin') + // ->addIndex('ip') + ->addIndex('created') + ->addIndex('user_id'); + + $table->create(); + } +} + diff --git a/config/Migrations/20210601125359_LocalTools.php b/config/Migrations/20210601125359_LocalTools.php new file mode 100644 index 0000000..652ce09 --- /dev/null +++ b/config/Migrations/20210601125359_LocalTools.php @@ -0,0 +1,62 @@ +table('local_tools', [ + 'signed' => false, + 'collation' => 'utf8mb4_unicode_ci', + ]); + $table + ->addColumn('id', 'integer', [ + 'autoIncrement' => true, + 'limit' => 10, + 'signed' => false, + ]) + ->addPrimaryKey('id') + ->addColumn('name', 'string', [ + 'default' => null, + 'null' => false, + 'limit' => 191, + 'comment' => 'The name of the individual connection', + ]) + ->addColumn('connector', 'string', [ + 'default' => null, + 'null' => false, + 'limit' => 191, + 'comment' => 'The library name used for the connection', + ]) + ->addColumn('settings', 'text', [ + 'default' => null, + 'null' => true, + ]) + ->addColumn('exposed', 'boolean', [ + 'default' => 0, + 'null' => false, + ]) + ->addColumn('description', 'text', [ + 'default' => null, + 'null' => true, + ]); + + $table->addIndex('name') + ->addIndex('connector'); + + $table->create(); + } +} + diff --git a/config/Migrations/schema-dump-default.lock b/config/Migrations/schema-dump-default.lock new file mode 100644 index 0000000..291060c --- /dev/null +++ b/config/Migrations/schema-dump-default.lock @@ -0,0 +1 @@ +a:17:{s:14:"alignment_tags";O:32:"Cake\Database\Schema\TableSchema":7:{s:9:"*_table";s:14:"alignment_tags";s:11:"*_columns";a:3:{s:2:"id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:13:"autoIncrement";b:1;s:8:"baseType";N;s:9:"precision";N;}s:12:"alignment_id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}s:6:"tag_id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}}s:11:"*_typeMap";a:3:{s:2:"id";s:7:"integer";s:12:"alignment_id";s:7:"integer";s:6:"tag_id";s:7:"integer";}s:11:"*_indexes";a:2:{s:12:"alignment_id";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:12:"alignment_id";}s:6:"length";a:0:{}}s:6:"tag_id";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:6:"tag_id";}s:6:"length";a:0:{}}}s:15:"*_constraints";a:13:{s:7:"primary";a:3:{s:4:"type";s:7:"primary";s:7:"columns";a:1:{i:0;s:2:"id";}s:6:"length";a:0:{}}s:21:"alignment_tags_ibfk_1";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:12:"alignment_id";}s:10:"references";a:2:{i:0;s:10:"alignments";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}s:21:"alignment_tags_ibfk_9";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:12:"alignment_id";}s:10:"references";a:2:{i:0;s:10:"alignments";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}s:21:"alignment_tags_ibfk_8";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:6:"tag_id";}s:10:"references";a:2:{i:0;s:4:"tags";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}s:21:"alignment_tags_ibfk_7";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:12:"alignment_id";}s:10:"references";a:2:{i:0;s:10:"alignments";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}s:21:"alignment_tags_ibfk_6";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:6:"tag_id";}s:10:"references";a:2:{i:0;s:4:"tags";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}s:21:"alignment_tags_ibfk_5";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:12:"alignment_id";}s:10:"references";a:2:{i:0;s:10:"alignments";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}s:21:"alignment_tags_ibfk_4";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:6:"tag_id";}s:10:"references";a:2:{i:0;s:4:"tags";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}s:21:"alignment_tags_ibfk_3";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:12:"alignment_id";}s:10:"references";a:2:{i:0;s:10:"alignments";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}s:21:"alignment_tags_ibfk_2";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:6:"tag_id";}s:10:"references";a:2:{i:0;s:4:"tags";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}s:22:"alignment_tags_ibfk_12";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:6:"tag_id";}s:10:"references";a:2:{i:0;s:4:"tags";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}s:22:"alignment_tags_ibfk_11";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:12:"alignment_id";}s:10:"references";a:2:{i:0;s:10:"alignments";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}s:22:"alignment_tags_ibfk_10";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:6:"tag_id";}s:10:"references";a:2:{i:0;s:4:"tags";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}}s:11:"*_options";a:2:{s:6:"engine";s:6:"InnoDB";s:9:"collation";s:18:"utf8mb4_unicode_ci";}s:13:"*_temporary";b:0;}s:10:"alignments";O:32:"Cake\Database\Schema\TableSchema":7:{s:9:"*_table";s:10:"alignments";s:11:"*_columns";a:4:{s:2:"id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:13:"autoIncrement";b:1;s:8:"baseType";N;s:9:"precision";N;}s:13:"individual_id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}s:15:"organisation_id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}s:4:"type";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:1;s:7:"default";s:6:"member";s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}}s:11:"*_typeMap";a:4:{s:2:"id";s:7:"integer";s:13:"individual_id";s:7:"integer";s:15:"organisation_id";s:7:"integer";s:4:"type";s:6:"string";}s:11:"*_indexes";a:2:{s:13:"individual_id";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:13:"individual_id";}s:6:"length";a:0:{}}s:15:"organisation_id";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:15:"organisation_id";}s:6:"length";a:0:{}}}s:15:"*_constraints";a:3:{s:7:"primary";a:3:{s:4:"type";s:7:"primary";s:7:"columns";a:1:{i:0;s:2:"id";}s:6:"length";a:0:{}}s:17:"alignments_ibfk_1";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:13:"individual_id";}s:10:"references";a:2:{i:0;s:11:"individuals";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}s:17:"alignments_ibfk_2";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:15:"organisation_id";}s:10:"references";a:2:{i:0;s:13:"organisations";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}}s:11:"*_options";a:2:{s:6:"engine";s:6:"InnoDB";s:9:"collation";s:18:"utf8mb4_unicode_ci";}s:13:"*_temporary";b:0;}s:9:"auth_keys";O:32:"Cake\Database\Schema\TableSchema":7:{s:9:"*_table";s:9:"auth_keys";s:11:"*_columns";a:9:{s:2:"id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:13:"autoIncrement";b:1;s:8:"baseType";N;s:9:"precision";N;}s:4:"uuid";a:8:{s:4:"type";s:6:"string";s:6:"length";i:40;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:7:"authkey";a:8:{s:4:"type";s:6:"string";s:6:"length";i:72;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:16:"ascii_general_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:13:"authkey_start";a:8:{s:4:"type";s:6:"string";s:6:"length";i:4;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:16:"ascii_general_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:11:"authkey_end";a:8:{s:4:"type";s:6:"string";s:6:"length";i:4;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:16:"ascii_general_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:7:"created";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}s:10:"expiration";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}s:7:"user_id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}s:7:"comment";a:8:{s:4:"type";s:4:"text";s:6:"length";N;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}}s:11:"*_typeMap";a:9:{s:2:"id";s:7:"integer";s:4:"uuid";s:6:"string";s:7:"authkey";s:6:"string";s:13:"authkey_start";s:6:"string";s:11:"authkey_end";s:6:"string";s:7:"created";s:7:"integer";s:10:"expiration";s:7:"integer";s:7:"user_id";s:7:"integer";s:7:"comment";s:4:"text";}s:11:"*_indexes";a:5:{s:13:"authkey_start";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:13:"authkey_start";}s:6:"length";a:0:{}}s:11:"authkey_end";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:11:"authkey_end";}s:6:"length";a:0:{}}s:7:"created";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:7:"created";}s:6:"length";a:0:{}}s:10:"expiration";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:10:"expiration";}s:6:"length";a:0:{}}s:7:"user_id";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:7:"user_id";}s:6:"length";a:0:{}}}s:15:"*_constraints";a:1:{s:7:"primary";a:3:{s:4:"type";s:7:"primary";s:7:"columns";a:1:{i:0;s:2:"id";}s:6:"length";a:0:{}}}s:11:"*_options";a:2:{s:6:"engine";s:6:"InnoDB";s:9:"collation";s:18:"utf8mb4_unicode_ci";}s:13:"*_temporary";b:0;}s:6:"broods";O:32:"Cake\Database\Schema\TableSchema":7:{s:9:"*_table";s:6:"broods";s:11:"*_columns";a:10:{s:2:"id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:13:"autoIncrement";b:1;s:8:"baseType";N;s:9:"precision";N;}s:4:"uuid";a:8:{s:4:"type";s:6:"string";s:6:"length";i:40;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:16:"ascii_general_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:4:"name";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:3:"url";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:11:"description";a:8:{s:4:"type";s:4:"text";s:6:"length";N;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:15:"organisation_id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}s:7:"trusted";a:7:{s:4:"type";s:7:"boolean";s:6:"length";N;s:4:"null";b:1;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:4:"pull";a:7:{s:4:"type";s:7:"boolean";s:6:"length";N;s:4:"null";b:1;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:10:"skip_proxy";a:7:{s:4:"type";s:7:"boolean";s:6:"length";N;s:4:"null";b:1;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:7:"authkey";a:8:{s:4:"type";s:6:"string";s:6:"length";i:40;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:16:"ascii_general_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}}s:11:"*_typeMap";a:10:{s:2:"id";s:7:"integer";s:4:"uuid";s:6:"string";s:4:"name";s:6:"string";s:3:"url";s:6:"string";s:11:"description";s:4:"text";s:15:"organisation_id";s:7:"integer";s:7:"trusted";s:7:"boolean";s:4:"pull";s:7:"boolean";s:10:"skip_proxy";s:7:"boolean";s:7:"authkey";s:6:"string";}s:11:"*_indexes";a:5:{s:4:"uuid";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:4:"uuid";}s:6:"length";a:0:{}}s:4:"name";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:4:"name";}s:6:"length";a:0:{}}s:3:"url";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:3:"url";}s:6:"length";a:0:{}}s:7:"authkey";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:7:"authkey";}s:6:"length";a:0:{}}s:15:"organisation_id";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:15:"organisation_id";}s:6:"length";a:0:{}}}s:15:"*_constraints";a:2:{s:7:"primary";a:3:{s:4:"type";s:7:"primary";s:7:"columns";a:1:{i:0;s:2:"id";}s:6:"length";a:0:{}}s:13:"broods_ibfk_1";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:15:"organisation_id";}s:10:"references";a:2:{i:0;s:13:"organisations";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}}s:11:"*_options";a:2:{s:6:"engine";s:6:"InnoDB";s:9:"collation";s:18:"utf8mb4_unicode_ci";}s:13:"*_temporary";b:0;}s:15:"encryption_keys";O:32:"Cake\Database\Schema\TableSchema":7:{s:9:"*_table";s:15:"encryption_keys";s:11:"*_columns";a:8:{s:2:"id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:13:"autoIncrement";b:1;s:8:"baseType";N;s:9:"precision";N;}s:4:"uuid";a:8:{s:4:"type";s:6:"string";s:6:"length";i:40;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:16:"ascii_general_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:4:"type";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:14:"encryption_key";a:8:{s:4:"type";s:4:"text";s:6:"length";N;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:7:"revoked";a:7:{s:4:"type";s:7:"boolean";s:6:"length";N;s:4:"null";b:1;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:7:"expires";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:1;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}s:8:"owner_id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:1;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}s:10:"owner_type";a:8:{s:4:"type";s:6:"string";s:6:"length";i:20;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}}s:11:"*_typeMap";a:8:{s:2:"id";s:7:"integer";s:4:"uuid";s:6:"string";s:4:"type";s:6:"string";s:14:"encryption_key";s:4:"text";s:7:"revoked";s:7:"boolean";s:7:"expires";s:7:"integer";s:8:"owner_id";s:7:"integer";s:10:"owner_type";s:6:"string";}s:11:"*_indexes";a:3:{s:4:"uuid";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:4:"uuid";}s:6:"length";a:0:{}}s:4:"type";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:4:"type";}s:6:"length";a:0:{}}s:7:"expires";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:7:"expires";}s:6:"length";a:0:{}}}s:15:"*_constraints";a:1:{s:7:"primary";a:3:{s:4:"type";s:7:"primary";s:7:"columns";a:1:{i:0;s:2:"id";}s:6:"length";a:0:{}}}s:11:"*_options";a:2:{s:6:"engine";s:6:"InnoDB";s:9:"collation";s:18:"utf8mb4_unicode_ci";}s:13:"*_temporary";b:0;}s:26:"individual_encryption_keys";O:32:"Cake\Database\Schema\TableSchema":7:{s:9:"*_table";s:26:"individual_encryption_keys";s:11:"*_columns";a:3:{s:2:"id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:13:"autoIncrement";b:1;s:8:"baseType";N;s:9:"precision";N;}s:13:"individual_id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}s:17:"encryption_key_id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}}s:11:"*_typeMap";a:3:{s:2:"id";s:7:"integer";s:13:"individual_id";s:7:"integer";s:17:"encryption_key_id";s:7:"integer";}s:11:"*_indexes";a:2:{s:13:"individual_id";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:13:"individual_id";}s:6:"length";a:0:{}}s:17:"encryption_key_id";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:17:"encryption_key_id";}s:6:"length";a:0:{}}}s:15:"*_constraints";a:7:{s:7:"primary";a:3:{s:4:"type";s:7:"primary";s:7:"columns";a:1:{i:0;s:2:"id";}s:6:"length";a:0:{}}s:33:"individual_encryption_keys_ibfk_1";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:13:"individual_id";}s:10:"references";a:2:{i:0;s:11:"individuals";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}s:33:"individual_encryption_keys_ibfk_6";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:17:"encryption_key_id";}s:10:"references";a:2:{i:0;s:15:"encryption_keys";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}s:33:"individual_encryption_keys_ibfk_5";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:13:"individual_id";}s:10:"references";a:2:{i:0;s:11:"individuals";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}s:33:"individual_encryption_keys_ibfk_4";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:17:"encryption_key_id";}s:10:"references";a:2:{i:0;s:15:"encryption_keys";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}s:33:"individual_encryption_keys_ibfk_3";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:13:"individual_id";}s:10:"references";a:2:{i:0;s:11:"individuals";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}s:33:"individual_encryption_keys_ibfk_2";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:17:"encryption_key_id";}s:10:"references";a:2:{i:0;s:15:"encryption_keys";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}}s:11:"*_options";a:2:{s:6:"engine";s:6:"InnoDB";s:9:"collation";s:18:"utf8mb4_unicode_ci";}s:13:"*_temporary";b:0;}s:11:"individuals";O:32:"Cake\Database\Schema\TableSchema":7:{s:9:"*_table";s:11:"individuals";s:11:"*_columns";a:6:{s:2:"id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:13:"autoIncrement";b:1;s:8:"baseType";N;s:9:"precision";N;}s:4:"uuid";a:8:{s:4:"type";s:6:"string";s:6:"length";i:40;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:16:"ascii_general_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:5:"email";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:10:"first_name";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:9:"last_name";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:8:"position";a:8:{s:4:"type";s:4:"text";s:6:"length";N;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}}s:11:"*_typeMap";a:6:{s:2:"id";s:7:"integer";s:4:"uuid";s:6:"string";s:5:"email";s:6:"string";s:10:"first_name";s:6:"string";s:9:"last_name";s:6:"string";s:8:"position";s:4:"text";}s:11:"*_indexes";a:4:{s:4:"uuid";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:4:"uuid";}s:6:"length";a:0:{}}s:5:"email";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:5:"email";}s:6:"length";a:0:{}}s:10:"first_name";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:10:"first_name";}s:6:"length";a:0:{}}s:9:"last_name";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:9:"last_name";}s:6:"length";a:0:{}}}s:15:"*_constraints";a:1:{s:7:"primary";a:3:{s:4:"type";s:7:"primary";s:7:"columns";a:1:{i:0;s:2:"id";}s:6:"length";a:0:{}}}s:11:"*_options";a:2:{s:6:"engine";s:6:"InnoDB";s:9:"collation";s:18:"utf8mb4_unicode_ci";}s:13:"*_temporary";b:0;}s:11:"meta_fields";O:32:"Cake\Database\Schema\TableSchema":7:{s:9:"*_table";s:11:"meta_fields";s:11:"*_columns";a:8:{s:2:"id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:13:"autoIncrement";b:1;s:8:"baseType";N;s:9:"precision";N;}s:5:"scope";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:9:"parent_id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}s:5:"field";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:5:"value";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:4:"uuid";a:8:{s:4:"type";s:6:"string";s:6:"length";i:40;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:16:"ascii_general_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:16:"meta_template_id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}s:22:"meta_template_field_id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}}s:11:"*_typeMap";a:8:{s:2:"id";s:7:"integer";s:5:"scope";s:6:"string";s:9:"parent_id";s:7:"integer";s:5:"field";s:6:"string";s:5:"value";s:6:"string";s:4:"uuid";s:6:"string";s:16:"meta_template_id";s:7:"integer";s:22:"meta_template_field_id";s:7:"integer";}s:11:"*_indexes";a:7:{s:5:"scope";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:5:"scope";}s:6:"length";a:0:{}}s:4:"uuid";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:4:"uuid";}s:6:"length";a:0:{}}s:9:"parent_id";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:9:"parent_id";}s:6:"length";a:0:{}}s:5:"field";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:5:"field";}s:6:"length";a:0:{}}s:5:"value";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:5:"value";}s:6:"length";a:0:{}}s:16:"meta_template_id";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:16:"meta_template_id";}s:6:"length";a:0:{}}s:22:"meta_template_field_id";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:22:"meta_template_field_id";}s:6:"length";a:0:{}}}s:15:"*_constraints";a:1:{s:7:"primary";a:3:{s:4:"type";s:7:"primary";s:7:"columns";a:1:{i:0;s:2:"id";}s:6:"length";a:0:{}}}s:11:"*_options";a:2:{s:6:"engine";s:6:"InnoDB";s:9:"collation";s:18:"utf8mb4_unicode_ci";}s:13:"*_temporary";b:0;}s:20:"meta_template_fields";O:32:"Cake\Database\Schema\TableSchema":7:{s:9:"*_table";s:20:"meta_template_fields";s:11:"*_columns";a:7:{s:2:"id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:13:"autoIncrement";b:1;s:8:"baseType";N;s:9:"precision";N;}s:5:"field";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:4:"type";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:16:"meta_template_id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}s:5:"regex";a:8:{s:4:"type";s:4:"text";s:6:"length";N;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:8:"multiple";a:7:{s:4:"type";s:7:"boolean";s:6:"length";N;s:4:"null";b:1;s:7:"default";s:1:"0";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:7:"enabled";a:7:{s:4:"type";s:7:"boolean";s:6:"length";N;s:4:"null";b:1;s:7:"default";s:1:"0";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}}s:11:"*_typeMap";a:7:{s:2:"id";s:7:"integer";s:5:"field";s:6:"string";s:4:"type";s:6:"string";s:16:"meta_template_id";s:7:"integer";s:5:"regex";s:4:"text";s:8:"multiple";s:7:"boolean";s:7:"enabled";s:7:"boolean";}s:11:"*_indexes";a:3:{s:16:"meta_template_id";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:16:"meta_template_id";}s:6:"length";a:0:{}}s:5:"field";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:5:"field";}s:6:"length";a:0:{}}s:4:"type";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:4:"type";}s:6:"length";a:0:{}}}s:15:"*_constraints";a:2:{s:7:"primary";a:3:{s:4:"type";s:7:"primary";s:7:"columns";a:1:{i:0;s:2:"id";}s:6:"length";a:0:{}}s:16:"meta_template_id";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:16:"meta_template_id";}s:10:"references";a:2:{i:0;s:14:"meta_templates";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}}s:11:"*_options";a:2:{s:6:"engine";s:6:"InnoDB";s:9:"collation";s:18:"utf8mb4_unicode_ci";}s:13:"*_temporary";b:0;}s:14:"meta_templates";O:32:"Cake\Database\Schema\TableSchema":7:{s:9:"*_table";s:14:"meta_templates";s:11:"*_columns";a:10:{s:2:"id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:13:"autoIncrement";b:1;s:8:"baseType";N;s:9:"precision";N;}s:5:"scope";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:4:"name";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:9:"namespace";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:11:"description";a:8:{s:4:"type";s:4:"text";s:6:"length";N;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:7:"version";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:4:"uuid";a:8:{s:4:"type";s:6:"string";s:6:"length";i:40;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:16:"ascii_general_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:6:"source";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:7:"enabled";a:7:{s:4:"type";s:7:"boolean";s:6:"length";N;s:4:"null";b:1;s:7:"default";s:1:"0";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:10:"is_default";a:7:{s:4:"type";s:7:"boolean";s:6:"length";N;s:4:"null";b:0;s:7:"default";s:1:"0";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}}s:11:"*_typeMap";a:10:{s:2:"id";s:7:"integer";s:5:"scope";s:6:"string";s:4:"name";s:6:"string";s:9:"namespace";s:6:"string";s:11:"description";s:4:"text";s:7:"version";s:6:"string";s:4:"uuid";s:6:"string";s:6:"source";s:6:"string";s:7:"enabled";s:7:"boolean";s:10:"is_default";s:7:"boolean";}s:11:"*_indexes";a:6:{s:5:"scope";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:5:"scope";}s:6:"length";a:0:{}}s:6:"source";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:6:"source";}s:6:"length";a:0:{}}s:4:"name";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:4:"name";}s:6:"length";a:0:{}}s:9:"namespace";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:9:"namespace";}s:6:"length";a:0:{}}s:7:"version";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:7:"version";}s:6:"length";a:0:{}}s:4:"uuid";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:4:"uuid";}s:6:"length";a:0:{}}}s:15:"*_constraints";a:1:{s:7:"primary";a:3:{s:4:"type";s:7:"primary";s:7:"columns";a:1:{i:0;s:2:"id";}s:6:"length";a:0:{}}}s:11:"*_options";a:2:{s:6:"engine";s:6:"InnoDB";s:9:"collation";s:18:"utf8mb4_unicode_ci";}s:13:"*_temporary";b:0;}s:28:"organisation_encryption_keys";O:32:"Cake\Database\Schema\TableSchema":7:{s:9:"*_table";s:28:"organisation_encryption_keys";s:11:"*_columns";a:3:{s:2:"id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:13:"autoIncrement";b:1;s:8:"baseType";N;s:9:"precision";N;}s:15:"organisation_id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}s:17:"encryption_key_id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}}s:11:"*_typeMap";a:3:{s:2:"id";s:7:"integer";s:15:"organisation_id";s:7:"integer";s:17:"encryption_key_id";s:7:"integer";}s:11:"*_indexes";a:2:{s:15:"organisation_id";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:15:"organisation_id";}s:6:"length";a:0:{}}s:17:"encryption_key_id";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:17:"encryption_key_id";}s:6:"length";a:0:{}}}s:15:"*_constraints";a:3:{s:7:"primary";a:3:{s:4:"type";s:7:"primary";s:7:"columns";a:1:{i:0;s:2:"id";}s:6:"length";a:0:{}}s:35:"organisation_encryption_keys_ibfk_1";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:15:"organisation_id";}s:10:"references";a:2:{i:0;s:13:"organisations";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}s:35:"organisation_encryption_keys_ibfk_2";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:17:"encryption_key_id";}s:10:"references";a:2:{i:0;s:15:"encryption_keys";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}}s:11:"*_options";a:2:{s:6:"engine";s:6:"InnoDB";s:9:"collation";s:18:"utf8mb4_unicode_ci";}s:13:"*_temporary";b:0;}s:13:"organisations";O:32:"Cake\Database\Schema\TableSchema":7:{s:9:"*_table";s:13:"organisations";s:11:"*_columns";a:8:{s:2:"id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:13:"autoIncrement";b:1;s:8:"baseType";N;s:9:"precision";N;}s:4:"uuid";a:8:{s:4:"type";s:6:"string";s:6:"length";i:40;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:16:"ascii_general_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:4:"name";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:3:"url";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:11:"nationality";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:6:"sector";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:4:"type";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:8:"contacts";a:8:{s:4:"type";s:4:"text";s:6:"length";N;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}}s:11:"*_typeMap";a:8:{s:2:"id";s:7:"integer";s:4:"uuid";s:6:"string";s:4:"name";s:6:"string";s:3:"url";s:6:"string";s:11:"nationality";s:6:"string";s:6:"sector";s:6:"string";s:4:"type";s:6:"string";s:8:"contacts";s:4:"text";}s:11:"*_indexes";a:6:{s:4:"uuid";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:4:"uuid";}s:6:"length";a:0:{}}s:4:"name";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:4:"name";}s:6:"length";a:0:{}}s:3:"url";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:3:"url";}s:6:"length";a:0:{}}s:11:"nationality";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:11:"nationality";}s:6:"length";a:0:{}}s:6:"sector";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:6:"sector";}s:6:"length";a:0:{}}s:4:"type";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:4:"type";}s:6:"length";a:0:{}}}s:15:"*_constraints";a:1:{s:7:"primary";a:3:{s:4:"type";s:7:"primary";s:7:"columns";a:1:{i:0;s:2:"id";}s:6:"length";a:0:{}}}s:11:"*_options";a:2:{s:6:"engine";s:6:"InnoDB";s:9:"collation";s:18:"utf8mb4_unicode_ci";}s:13:"*_temporary";b:0;}s:5:"roles";O:32:"Cake\Database\Schema\TableSchema":7:{s:9:"*_table";s:5:"roles";s:11:"*_columns";a:5:{s:2:"id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:13:"autoIncrement";b:1;s:8:"baseType";N;s:9:"precision";N;}s:4:"uuid";a:8:{s:4:"type";s:6:"string";s:6:"length";i:40;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:16:"ascii_general_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:4:"name";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:10:"is_default";a:7:{s:4:"type";s:7:"boolean";s:6:"length";N;s:4:"null";b:1;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:10:"perm_admin";a:7:{s:4:"type";s:7:"boolean";s:6:"length";N;s:4:"null";b:1;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}}s:11:"*_typeMap";a:5:{s:2:"id";s:7:"integer";s:4:"uuid";s:6:"string";s:4:"name";s:6:"string";s:10:"is_default";s:7:"boolean";s:10:"perm_admin";s:7:"boolean";}s:11:"*_indexes";a:2:{s:4:"name";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:4:"name";}s:6:"length";a:0:{}}s:4:"uuid";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:4:"uuid";}s:6:"length";a:0:{}}}s:15:"*_constraints";a:1:{s:7:"primary";a:3:{s:4:"type";s:7:"primary";s:7:"columns";a:1:{i:0;s:2:"id";}s:6:"length";a:0:{}}}s:11:"*_options";a:2:{s:6:"engine";s:6:"InnoDB";s:9:"collation";s:18:"utf8mb4_unicode_ci";}s:13:"*_temporary";b:0;}s:3:"sgo";O:32:"Cake\Database\Schema\TableSchema":7:{s:9:"*_table";s:3:"sgo";s:11:"*_columns";a:4:{s:2:"id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:13:"autoIncrement";b:1;s:8:"baseType";N;s:9:"precision";N;}s:16:"sharing_group_id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}s:15:"organisation_id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}s:7:"deleted";a:7:{s:4:"type";s:7:"boolean";s:6:"length";N;s:4:"null";b:1;s:7:"default";s:1:"0";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}}s:11:"*_typeMap";a:4:{s:2:"id";s:7:"integer";s:16:"sharing_group_id";s:7:"integer";s:15:"organisation_id";s:7:"integer";s:7:"deleted";s:7:"boolean";}s:11:"*_indexes";a:2:{s:16:"sharing_group_id";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:16:"sharing_group_id";}s:6:"length";a:0:{}}s:15:"organisation_id";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:15:"organisation_id";}s:6:"length";a:0:{}}}s:15:"*_constraints";a:1:{s:7:"primary";a:3:{s:4:"type";s:7:"primary";s:7:"columns";a:1:{i:0;s:2:"id";}s:6:"length";a:0:{}}}s:11:"*_options";a:2:{s:6:"engine";s:6:"InnoDB";s:9:"collation";s:18:"utf8mb4_unicode_ci";}s:13:"*_temporary";b:0;}s:14:"sharing_groups";O:32:"Cake\Database\Schema\TableSchema":7:{s:9:"*_table";s:14:"sharing_groups";s:11:"*_columns";a:9:{s:2:"id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:13:"autoIncrement";b:1;s:8:"baseType";N;s:9:"precision";N;}s:4:"uuid";a:8:{s:4:"type";s:6:"string";s:6:"length";i:40;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:16:"ascii_general_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:4:"name";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:13:"releasability";a:8:{s:4:"type";s:4:"text";s:6:"length";N;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:11:"description";a:8:{s:4:"type";s:4:"text";s:6:"length";N;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:15:"organisation_id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}s:7:"user_id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}s:6:"active";a:7:{s:4:"type";s:7:"boolean";s:6:"length";N;s:4:"null";b:1;s:7:"default";s:1:"1";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:5:"local";a:7:{s:4:"type";s:7:"boolean";s:6:"length";N;s:4:"null";b:1;s:7:"default";s:1:"1";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}}s:11:"*_typeMap";a:9:{s:2:"id";s:7:"integer";s:4:"uuid";s:6:"string";s:4:"name";s:6:"string";s:13:"releasability";s:4:"text";s:11:"description";s:4:"text";s:15:"organisation_id";s:7:"integer";s:7:"user_id";s:7:"integer";s:6:"active";s:7:"boolean";s:5:"local";s:7:"boolean";}s:11:"*_indexes";a:4:{s:4:"uuid";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:4:"uuid";}s:6:"length";a:0:{}}s:7:"user_id";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:7:"user_id";}s:6:"length";a:0:{}}s:15:"organisation_id";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:15:"organisation_id";}s:6:"length";a:0:{}}s:4:"name";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:4:"name";}s:6:"length";a:0:{}}}s:15:"*_constraints";a:1:{s:7:"primary";a:3:{s:4:"type";s:7:"primary";s:7:"columns";a:1:{i:0;s:2:"id";}s:6:"length";a:0:{}}}s:11:"*_options";a:2:{s:6:"engine";s:6:"InnoDB";s:9:"collation";s:18:"utf8mb4_unicode_ci";}s:13:"*_temporary";b:0;}s:4:"tags";O:32:"Cake\Database\Schema\TableSchema":7:{s:9:"*_table";s:4:"tags";s:11:"*_columns";a:4:{s:2:"id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:13:"autoIncrement";b:1;s:8:"baseType";N;s:9:"precision";N;}s:4:"name";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:11:"description";a:8:{s:4:"type";s:4:"text";s:6:"length";N;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:6:"colour";a:8:{s:4:"type";s:6:"string";s:6:"length";i:6;s:4:"null";b:0;s:7:"default";N;s:7:"collate";s:16:"ascii_general_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}}s:11:"*_typeMap";a:4:{s:2:"id";s:7:"integer";s:4:"name";s:6:"string";s:11:"description";s:4:"text";s:6:"colour";s:6:"string";}s:11:"*_indexes";a:1:{s:4:"name";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:4:"name";}s:6:"length";a:0:{}}}s:15:"*_constraints";a:1:{s:7:"primary";a:3:{s:4:"type";s:7:"primary";s:7:"columns";a:1:{i:0;s:2:"id";}s:6:"length";a:0:{}}}s:11:"*_options";a:2:{s:6:"engine";s:6:"InnoDB";s:9:"collation";s:18:"utf8mb4_unicode_ci";}s:13:"*_temporary";b:0;}s:5:"users";O:32:"Cake\Database\Schema\TableSchema":7:{s:9:"*_table";s:5:"users";s:11:"*_columns";a:7:{s:2:"id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:13:"autoIncrement";b:1;s:8:"baseType";N;s:9:"precision";N;}s:4:"uuid";a:8:{s:4:"type";s:6:"string";s:6:"length";i:40;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:16:"ascii_general_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:8:"username";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:8:"password";a:8:{s:4:"type";s:6:"string";s:6:"length";i:191;s:4:"null";b:1;s:7:"default";N;s:7:"collate";s:18:"utf8mb4_unicode_ci";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}s:7:"role_id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}s:13:"individual_id";a:9:{s:4:"type";s:7:"integer";s:6:"length";N;s:8:"unsigned";b:1;s:4:"null";b:0;s:7:"default";N;s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;s:13:"autoIncrement";N;}s:8:"disabled";a:7:{s:4:"type";s:7:"boolean";s:6:"length";N;s:4:"null";b:1;s:7:"default";s:1:"0";s:7:"comment";s:0:"";s:8:"baseType";N;s:9:"precision";N;}}s:11:"*_typeMap";a:7:{s:2:"id";s:7:"integer";s:4:"uuid";s:6:"string";s:8:"username";s:6:"string";s:8:"password";s:6:"string";s:7:"role_id";s:7:"integer";s:13:"individual_id";s:7:"integer";s:8:"disabled";s:7:"boolean";}s:11:"*_indexes";a:3:{s:4:"uuid";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:4:"uuid";}s:6:"length";a:0:{}}s:7:"role_id";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:7:"role_id";}s:6:"length";a:0:{}}s:13:"individual_id";a:3:{s:4:"type";s:5:"index";s:7:"columns";a:1:{i:0;s:13:"individual_id";}s:6:"length";a:0:{}}}s:15:"*_constraints";a:3:{s:7:"primary";a:3:{s:4:"type";s:7:"primary";s:7:"columns";a:1:{i:0;s:2:"id";}s:6:"length";a:0:{}}s:12:"users_ibfk_1";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:7:"role_id";}s:10:"references";a:2:{i:0;s:5:"roles";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}s:12:"users_ibfk_2";a:6:{s:4:"type";s:7:"foreign";s:7:"columns";a:1:{i:0;s:13:"individual_id";}s:10:"references";a:2:{i:0;s:11:"individuals";i:1;s:2:"id";}s:6:"update";s:8:"restrict";s:6:"delete";s:8:"restrict";s:6:"length";a:0:{}}}s:11:"*_options";a:2:{s:6:"engine";s:6:"InnoDB";s:9:"collation";s:18:"utf8mb4_unicode_ci";}s:13:"*_temporary";b:0;}} \ No newline at end of file