Jelajahi Sumber

Added in the entity tables (borrowed from web services dev)

Stephen Ficklin 9 tahun lalu
induk
melakukan
4db068bbd7
1 mengubah file dengan 297 tambahan dan 0 penghapusan
  1. 297 0
      tripal_entities/tripal_entities.install

+ 297 - 0
tripal_entities/tripal_entities.install

@@ -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().
  *