|
@@ -4,6 +4,303 @@
|
|
|
* Install for a tripal data entity - creates the base table for our entity.
|
|
|
*/
|
|
|
|
|
|
+function tripal_entities_install() {
|
|
|
+
|
|
|
+ // add any external databases used by the file module.
|
|
|
+ // tripal_entities_add_dbs();
|
|
|
+
|
|
|
+ // add any controlled vocabularies used by the file module.
|
|
|
+ // tripal_entities_add_cvs();
|
|
|
+
|
|
|
+ // add any controlled vocabulary terms
|
|
|
+ // tripal_entities_add_cvterms();
|
|
|
+
|
|
|
+ // add any custom tables. For this case we will add an 'file' table to the
|
|
|
+ // chado schema
|
|
|
+ tripal_entities_add_custom_tables();
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ *
|
|
|
+ */
|
|
|
+function tripal_entities_add_custom_tables() {
|
|
|
+ tripal_entities_add_tripal_entity_type_table();
|
|
|
+ tripal_entities_add_tripal_entity_type_source_table();
|
|
|
+ tripal_entities_add_tripal_entity_bundle_table();
|
|
|
+ tripal_entities_add_tripal_entity_bundle_source_table();
|
|
|
+ tripal_entities_add_tripal_entity_relationship_table();
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ *
|
|
|
+ */
|
|
|
+function tripal_entities_add_tripal_entity_type_table() {
|
|
|
+ $schema = array (
|
|
|
+ 'table' => 'tripal_entity_type',
|
|
|
+ 'fields' => array (
|
|
|
+ 'vocab_id' => array(
|
|
|
+ 'type' => 'serial',
|
|
|
+ 'not null' => TRUE
|
|
|
+ ),
|
|
|
+ 'cv_id' => array (
|
|
|
+ 'type' => 'int',
|
|
|
+ 'not null' => TRUE
|
|
|
+ ),
|
|
|
+ 'db_id' => array (
|
|
|
+ 'type' => 'int',
|
|
|
+ 'not null' => TRUE
|
|
|
+ ),
|
|
|
+ 'publish' => array (
|
|
|
+ 'type' => 'int',
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'default' => 0
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'primary key' => array (
|
|
|
+ 0 => 'vocab_id'
|
|
|
+ ),
|
|
|
+ 'foreign keys' => array (
|
|
|
+ 'cv' => array (
|
|
|
+ 'table' => 'cv',
|
|
|
+ 'columns' => array (
|
|
|
+ 'cv_id' => 'cv_id'
|
|
|
+ )
|
|
|
+ ),
|
|
|
+ 'db' => array (
|
|
|
+ 'table' => 'db',
|
|
|
+ 'columns' => array (
|
|
|
+ 'db_id' => 'db_id'
|
|
|
+ )
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'unique keys' => array (
|
|
|
+ 'vocab_cvdb' => array (
|
|
|
+ 'cv_id', 'db_id'
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'indexes' => array(
|
|
|
+ 'tripal_entity_type_cv_id' => array('cv_id'),
|
|
|
+ 'tripal_entity_type_db_id' => array('db_id'),
|
|
|
+ )
|
|
|
+ );
|
|
|
+ chado_create_custom_table('tripal_entity_type', $schema, TRUE);
|
|
|
+}
|
|
|
+/**
|
|
|
+ *
|
|
|
+ */
|
|
|
+function tripal_entities_add_tripal_entity_bundle_table() {
|
|
|
+ $schema = array (
|
|
|
+ 'table' => 'tripal_entity_bundle',
|
|
|
+ 'fields' => array (
|
|
|
+ 'bundle_id' => array(
|
|
|
+ 'type' => 'serial',
|
|
|
+ 'not null' => TRUE
|
|
|
+ ),
|
|
|
+ 'vocab_id' => array (
|
|
|
+ 'type' => 'int',
|
|
|
+ 'not null' => TRUE
|
|
|
+ ),
|
|
|
+ 'cvterm_id' => array (
|
|
|
+ 'type' => 'int',
|
|
|
+ 'not null' => TRUE
|
|
|
+ ),
|
|
|
+ 'publish' => array (
|
|
|
+ 'type' => 'int',
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'default' => 0
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'primary key' => array (
|
|
|
+ 0 => 'bundle_id'
|
|
|
+ ),
|
|
|
+ 'foreign keys' => array (
|
|
|
+ 'cvterm' => array (
|
|
|
+ 'table' => 'cvterm',
|
|
|
+ 'columns' => array (
|
|
|
+ 'cvterm_id' => 'cvterm_id'
|
|
|
+ )
|
|
|
+ ),
|
|
|
+ 'tripal_entity_type' => array (
|
|
|
+ 'table' => 'tripal_entity_type',
|
|
|
+ 'columns' => array (
|
|
|
+ 'vocab_id' => 'vocab_id'
|
|
|
+ )
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'unique keys' => array (
|
|
|
+ 'tripal_entity_bundle_unq' => array (
|
|
|
+ 'vocab_id', 'cvterm_id'
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'indexes' => array(
|
|
|
+ 'tripal_entity_bundle_vocab_id' => array('vocab_id'),
|
|
|
+ 'tripal_entity_bundle_cvterm_id' => array('cvterm_id'),
|
|
|
+ ),
|
|
|
+ );
|
|
|
+ chado_create_custom_table('tripal_entity_bundle', $schema, TRUE);
|
|
|
+}
|
|
|
+/**
|
|
|
+ *
|
|
|
+ */
|
|
|
+function tripal_entities_add_tripal_entity_type_source_table(){
|
|
|
+ $schema = array (
|
|
|
+ 'table' => 'tripal_entity_type_source',
|
|
|
+ 'fields' => array (
|
|
|
+ 'vocab_table_id' => array(
|
|
|
+ 'type' => 'serial',
|
|
|
+ 'not null' => TRUE
|
|
|
+ ),
|
|
|
+ 'vocab_id' => array (
|
|
|
+ 'type' => 'int',
|
|
|
+ 'not null' => TRUE
|
|
|
+ ),
|
|
|
+ 'data_table' => array (
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 128,
|
|
|
+ 'not null' => TRUE
|
|
|
+ ),
|
|
|
+ 'type_table' => array (
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 128,
|
|
|
+ 'not null' => TRUE
|
|
|
+ ),
|
|
|
+ 'field' => array (
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 128,
|
|
|
+ 'not null' => TRUE
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'primary key' => array (
|
|
|
+ 0 => 'vocab_table_id'
|
|
|
+ ),
|
|
|
+ 'foreign keys' => array (
|
|
|
+ 'tripal_entity_type' => array (
|
|
|
+ 'table' => 'tripal_entity_type',
|
|
|
+ 'columns' => array (
|
|
|
+ 'vocab_id' => 'vocab_id'
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'unique keys' => array (
|
|
|
+ 'tripal_entity_type_ridbase' => array (
|
|
|
+ 'vocab_id', 'data_table'
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'indexes' => array(
|
|
|
+ 'tripal_entity_type_vocab_id' => array('vocab_id'),
|
|
|
+ 'tripal_entity_type_data_table' => array('data_table'),
|
|
|
+ 'tripal_entity_type_type_table' => array('type_table'),
|
|
|
+ ),
|
|
|
+ );
|
|
|
+ chado_create_custom_table('tripal_entity_type_source', $schema, TRUE);
|
|
|
+}
|
|
|
+/**
|
|
|
+ *
|
|
|
+ */
|
|
|
+function tripal_entities_add_tripal_entity_bundle_source_table(){
|
|
|
+ $schema = array (
|
|
|
+ 'table' => 'tripal_entity_bundle_source',
|
|
|
+ 'fields' => array (
|
|
|
+ 'bundle_source_id' => array(
|
|
|
+ 'type' => 'serial',
|
|
|
+ 'not null' => TRUE
|
|
|
+ ),
|
|
|
+ 'bundle_id' => array (
|
|
|
+ 'type' => 'int',
|
|
|
+ 'not null' => TRUE
|
|
|
+ ),
|
|
|
+ 'data_table' => array (
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 128,
|
|
|
+ 'not null' => TRUE
|
|
|
+ ),
|
|
|
+ 'type_table' => array (
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 128,
|
|
|
+ 'not null' => TRUE
|
|
|
+ ),
|
|
|
+ 'field' => array (
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 128,
|
|
|
+ 'not null' => TRUE
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'primary key' => array (
|
|
|
+ 0 => 'bundle_source_id'
|
|
|
+ ),
|
|
|
+ 'foreign keys' => array (
|
|
|
+ 'tripal_entity_bundle' => array (
|
|
|
+ 'table' => 'tripal_entity_bundle',
|
|
|
+ 'columns' => array (
|
|
|
+ 'bundle_id' => 'bundle_id'
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'unique keys' => array (
|
|
|
+ 'tripal_entity_bundle_source_ridbase' => array (
|
|
|
+ 'bundle_id', 'type_table', 'field'
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'indexes' => array(
|
|
|
+ 'tripal_entity_bundle_source_bundle_id' => array('bundle_id'),
|
|
|
+ ),
|
|
|
+ );
|
|
|
+ chado_create_custom_table('tripal_entity_bundle_source', $schema, TRUE);
|
|
|
+}
|
|
|
+/**
|
|
|
+ *
|
|
|
+ */
|
|
|
+function tripal_entities_add_tripal_entity_relationship_table(){
|
|
|
+ $schema = array (
|
|
|
+ 'table' => 'tripal_entity_relationship',
|
|
|
+ 'fields' => array (
|
|
|
+ 'relationship_id' => array(
|
|
|
+ 'type' => 'serial',
|
|
|
+ 'not null' => TRUE
|
|
|
+ ),
|
|
|
+ 'subject_id' => array (
|
|
|
+ 'type' => 'int',
|
|
|
+ 'not null' => TRUE
|
|
|
+ ),
|
|
|
+ 'type_id' => array (
|
|
|
+ 'type' => 'int',
|
|
|
+ 'not null' => TRUE
|
|
|
+ ),
|
|
|
+ 'object_id' => array (
|
|
|
+ 'type' => 'int',
|
|
|
+ 'not null' => FALSE
|
|
|
+ ),
|
|
|
+ 'fieldname' => array(
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 128,
|
|
|
+ 'not null' => FALSE,
|
|
|
+ )
|
|
|
+ ),
|
|
|
+ 'primary key' => array (
|
|
|
+ 0 => 'relationship_id'
|
|
|
+ ),
|
|
|
+ 'foreign keys' => array (
|
|
|
+ 'tripal_entity_bundle' => array (
|
|
|
+ 'table' => 'tripal_entity_bundle',
|
|
|
+ 'columns' => array (
|
|
|
+ 'subject_id' => 'bundle_id',
|
|
|
+ 'object_id' => 'bundle_id',
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'unique keys' => array (
|
|
|
+ 'tripal_entity_relationship_unq' => array (
|
|
|
+ 'subject_id', 'type_id', 'object_id'
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'indexes' => array(
|
|
|
+ 'tripal_entity_relationship_subject_id' => array('subject_id'),
|
|
|
+ 'tripal_entity_relationship_object_id' => array('object_id'),
|
|
|
+ 'tripal_entity_relationship_type_id' => array('type_id'),
|
|
|
+ ),
|
|
|
+ );
|
|
|
+ chado_create_custom_table('tripal_entity_relationship', $schema, TRUE);
|
|
|
+}
|
|
|
/**
|
|
|
* Implements hook_schema().
|
|
|
*
|