Bio-ConnectDots

 view release on metacpan or  search on metacpan

lib/Bio/ConnectDots/DB.pm  view on Meta::CPAN

package Bio::ConnectDots::DB;
use vars qw(@ISA @AUTO_ATTRIBUTES @OTHER_ATTRIBUTES %SYNONYMS);
use strict;
use DBI;
use File::Path;
use Class::AutoClass;
use Class::AutoClass::Args;
use Bio::ConnectDots::DotSet;
use Bio::ConnectDots::ConnectorSet;
@ISA = qw(Class::AutoClass);

@AUTO_ATTRIBUTES=qw(dsn dbh dbd database host port user password 
		    read_only read_only_schema
		    _needs_disconnect _db_cursor _exists
		    load_name load_save load_chunksize load_cid_base
		    _ext_directory _load_fh _load_count _load_chunk sql_log
		   );
@OTHER_ATTRIBUTES=qw(ext_directory);
%SYNONYMS=(server=>'host');
Class::AutoClass::declare(__PACKAGE__);

# use 'double quotations to get case-sensitivity in label
# use 'not null' wherever possible to help query optimizier use indexes better
# denormalized connector to cut down the number of joins in big queries
my %SCHEMA=
  (connectorset=>
   qq(connectorset_id SERIAL,
      "name" VARCHAR(255) NOT NULL,
      "file_name" TEXT,
      "version" VARCHAR(255) NOT NULL,
      "source_date" VARCHAR(255),
      "source_version" VARCHAR(255),
      "download_date" VARCHAR(255),
      "ftp" TEXT,
      "ftp_files" TEXT,
      "comment" TEXT,
      PRIMARY KEY("connectorset_id"),UNIQUE("name","version")),
   dotset=>
   qq(dotset_id SERIAL,
      "name" VARCHAR(255) NOT NULL,
      PRIMARY KEY(dotset_id),UNIQUE("name")),
   connectdotset=>
   qq(connectdotset_id SERIAL,
      connectorset_id INT NOT NULL,
      dotset_id INT NOT NULL,
      label_id INT NOT NULL,
      PRIMARY KEY(connectdotset_id)),
   label=>
   qq(label_id SERIAL,
      "label" VARCHAR(255) NOT NULL,
			"source_label" VARCHAR(255),
      "description" TEXT,      
      PRIMARY KEY(label_id),UNIQUE("label")),
   connectortable=>
   qq(connectortable_id SERIAL,
      "name" VARCHAR(255) NOT NULL,
      PRIMARY KEY(connectortable_id),UNIQUE("name")),
   connectortableset=>
   qq(connectortable_id INT NOT NULL,
      connectorset_id INT NOT NULL,
      "alias" VARCHAR(255) NOT NULL,
      UNIQUE(connectortable_id,"alias")),
   dottable=>
   qq(dottable_id SERIAL,
      "name" VARCHAR(255) NOT NULL,
      PRIMARY KEY(dottable_id),UNIQUE("name")),
   dottableset=>
   qq(dottable_id INT NOT NULL,
      dotset_id INT NOT NULL,
      label_id INT NOT NULL,
      cs_id INT NOT NULL,
      "alias" VARCHAR(255) NOT NULL,
      UNIQUE(dottable_id,"alias")),



( run in 2.047 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )