|
@@ -0,0 +1,206 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+/************************************************************************
|
|
|
+* Implementation of hook_install();
|
|
|
+*
|
|
|
+* @ingroup tripal_views
|
|
|
+*/
|
|
|
+function tripal_views_install(){
|
|
|
+
|
|
|
+ // create the module's data directory
|
|
|
+ tripal_create_moddir('tripal_views');
|
|
|
+
|
|
|
+ // create the tables that manage materialized views and jobs
|
|
|
+ drupal_install_schema('tripal_views');
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+/************************************************************************
|
|
|
+* Implementation of hook_schema().
|
|
|
+*
|
|
|
+* @ingroup tripal_views
|
|
|
+*/
|
|
|
+function tripal_views_schema() {
|
|
|
+ $schema = tripal_views_get_schemas();
|
|
|
+ return $schema;
|
|
|
+}
|
|
|
+/************************************************************************
|
|
|
+* Implementation of hook_uninstall()
|
|
|
+*
|
|
|
+* @ingroup tripal_views
|
|
|
+*/
|
|
|
+function tripal_views_uninstall(){
|
|
|
+ drupal_uninstall_schema('tripal_views');
|
|
|
+}
|
|
|
+
|
|
|
+/************************************************************************
|
|
|
+* This function simply defines all tables needed for the module to work
|
|
|
+* correctly. By putting the table definitions in a separate function we
|
|
|
+* can easily provide the entire list for hook_install or individual
|
|
|
+* tables for an update.
|
|
|
+*
|
|
|
+* @ingroup tripal_views
|
|
|
+*/
|
|
|
+function tripal_views_get_schemas (){
|
|
|
+ $schema = array();
|
|
|
+
|
|
|
+ $temp = tripal_views_views_schema();
|
|
|
+ foreach ($temp as $table => $arr){
|
|
|
+ $schema[$table] = $arr;
|
|
|
+ }
|
|
|
+
|
|
|
+ return $schema;
|
|
|
+}
|
|
|
+
|
|
|
+/************************************************************************
|
|
|
+*
|
|
|
+*
|
|
|
+* @ingroup tripal_views
|
|
|
+*/
|
|
|
+function tripal_views_views_schema(){
|
|
|
+ $schema = array();
|
|
|
+ $schema['tripal_views'] = array(
|
|
|
+ 'description' => 'contains the setupes, their materialized view id and base table name that was used.',
|
|
|
+ 'fields' => array(
|
|
|
+ 'setup_id' => array(
|
|
|
+ 'description' => 'the id of the setup',
|
|
|
+ 'type' => 'serial',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ ),
|
|
|
+ 'mview_id' => array(
|
|
|
+ 'description' => 'the materialized view used for this setup',
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ ),
|
|
|
+ 'table_name' => array(
|
|
|
+ 'description' => 'the base table name to be used when using this setup. Use this field when not using a materialized view',
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'default' => '',
|
|
|
+ ),
|
|
|
+ 'name' => array(
|
|
|
+ 'description' => 'Human readable name of this setup',
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => 255,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'default' => '',
|
|
|
+ ),
|
|
|
+ 'comment' => array(
|
|
|
+ 'description' => 'add notes about this views setup',
|
|
|
+ 'type' => 'text',
|
|
|
+ 'size' => 'normal',
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'default' => '',
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'unique_keys' => array(
|
|
|
+ 'setup_id' => array('setup_id'),
|
|
|
+ ),
|
|
|
+ 'primary key' => array('setup_id'),
|
|
|
+ );
|
|
|
+
|
|
|
+ $schema['tripal_views_join'] = array(
|
|
|
+ 'description' => 'coordinate the joining of tables',
|
|
|
+ 'fields' => array(
|
|
|
+ 'view_join_id' => array(
|
|
|
+ 'description' => 'the id of the join',
|
|
|
+ 'type' => 'serial',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ ),
|
|
|
+ 'setup_id' => array(
|
|
|
+ 'description' => 'setup id from tripal_views table',
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null'=> TRUE,
|
|
|
+ ),
|
|
|
+ 'base_table' => array(
|
|
|
+ 'description' => 'the name of the base table',
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => '255',
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'default' => '',
|
|
|
+ ),
|
|
|
+ 'base_field' => array(
|
|
|
+ 'description' => 'the name of the base table column that will be joined',
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => '255',
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'default' => '',
|
|
|
+ ),
|
|
|
+ 'left_table' => array(
|
|
|
+ 'description' => 'the table on which to perform a left join',
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => '255',
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'default' => '',
|
|
|
+ ),
|
|
|
+ 'left_field' => array(
|
|
|
+ 'description' => 'the column on which to perform a left join',
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => '255',
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'default' => '',
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'unique_keys' => array(
|
|
|
+ 'setup_id' => array('view_join_id'),
|
|
|
+ ),
|
|
|
+ 'primary key' => array('view_join_id'),
|
|
|
+ );
|
|
|
+
|
|
|
+ $schema['tripal_views_handlers'] = array(
|
|
|
+ 'description' => 'in formation for views: column and views handler name',
|
|
|
+ 'fields' => array(
|
|
|
+ 'handler_id' => array(
|
|
|
+ 'description' => 'the id of the handler',
|
|
|
+ 'type' => 'serial',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null' => TRUE,
|
|
|
+ ),
|
|
|
+ 'setup_id' => array(
|
|
|
+ 'description' => 'setup id from the tripal_views table',
|
|
|
+ 'type' => 'int',
|
|
|
+ 'unsigned' => TRUE,
|
|
|
+ 'not null'=> TRUE,
|
|
|
+ ),
|
|
|
+ 'column_name' => array(
|
|
|
+ 'description' => '',
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => '255',
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'default' => '',
|
|
|
+ ),
|
|
|
+ 'handler_type' => array(
|
|
|
+ 'description' => 'identifies the type of hander (e.g. field, filter, sort, argument, relationship, etc.)',
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => '50',
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'default' => '',
|
|
|
+ ),
|
|
|
+ 'handler_name' => array(
|
|
|
+ 'description' => 'the name of the handler',
|
|
|
+ 'type' => 'varchar',
|
|
|
+ 'length' => '255',
|
|
|
+ 'not null' => TRUE,
|
|
|
+ 'default' => '',
|
|
|
+ ),
|
|
|
+ 'arguments' => array(
|
|
|
+ 'description' => 'arguments that may get passed to the handler',
|
|
|
+ 'type' => 'text',
|
|
|
+ 'size' => 'normal',
|
|
|
+ 'not null' => FALSE,
|
|
|
+ 'default' => '',
|
|
|
+ ),
|
|
|
+ ),
|
|
|
+ 'unique_keys' => array(
|
|
|
+ 'setup_id' => array('handler_id'),
|
|
|
+ ),
|
|
|
+ 'primary key' => array('handler_id'),
|
|
|
+ );
|
|
|
+
|
|
|
+ return $schema;
|
|
|
+}
|
|
|
+?>
|