#!/usr/local/bin/perl
# vim: set ft=perl:
-BEGIN { print "1..1\n" }
-
-my $create = q|
-
--- The cvterm module design is based on the ontology
-
--- ================================================
--- TABLE: cv
--- ================================================
-
-create table cv (
- cv_id serial not null,
- primary key (cv_id),
- cvname varchar not null,
- cvdefinition text,
-
- unique(cvname)
-);
-
--- ================================================
--- TABLE: cvterm
--- ================================================
-
-create table cvterm (
- cvterm_id serial not null,
- primary key (cvterm_id),
- cv_id int not null,
- foreign key (cv_id) references cv (cv_id),
- name varchar(255) not null,
- termdefinition text,
--- the primary dbxref for this term. Other dbxrefs may be cvterm_dbxref
- dbxref_id int,
- foreign key (dbxref_id) references dbxref (dbxref_id),
-
- unique(termname, cv_id)
-);
-create index cvterm_idx1 on cvterm (cv_id);
-
-|;
-#-- The unique key on termname, termtype_id ensures that all terms are
-#-- unique within a given cv
-
+use strict;
+use Test::More;
use SQL::Translator;
use Data::Dumper;
+use Test::SQL::Translator qw(maybe_plan);
-$SQL::Translator::DEBUG = 1;
+BEGIN {
+ maybe_plan(1,
+ 'SQL::Translator::Parser::PostgreSQL',
+ 'SQL::Translator::Producer::MySQL',
+ );
+}
-my $tr = SQL::Translator->new(parser => "PostgreSQL",
- producer => "MySQL"
- #producer => "SQL::Translator::Producer::MySQL::translate"
- #producer => sub { Dumper($_[1]) }
- );
-
-print "not " unless ($tr->translate(\$create));
-print "ok 1 # pointless test -- plz fix me!\n";
-
-__END__
-__DATA__
+my $create = q|
--- The cvterm module design is based on the ontology
+-- The cvterm module design is based on the ontology
-- ================================================
-- TABLE: cv
foreign key (cv_id) references cv (cv_id),
name varchar(255) not null,
termdefinition text,
--- the primary dbxref for this term. Other dbxrefs may be cvterm_dbxref
dbxref_id int,
foreign key (dbxref_id) references dbxref (dbxref_id),
unique(termname, cv_id)
--- The unique key on termname, termtype_id ensures that all terms are
--- unique within a given cv
);
create index cvterm_idx1 on cvterm (cv_id);
+-- the primary dbxref for this term. Other dbxrefs may be cvterm_dbxref
+-- The unique key on termname, termtype_id ensures that all terms are
+-- unique within a given cv
+
+
+COMMENT ON TABLE cvterm IS
+ 'A term, class or concept within an ontology
+ or controlled vocabulary';
+COMMENT ON COLUMN cvterm.cv_id IS
+ 'The cv/ontology/namespace to which this cvterm belongs';
+COMMENT ON COLUMN cvterm.name IS
+ 'A concise human-readable name describing the meaning of the cvterm';
+COMMENT ON COLUMN cvterm.termdefinition IS
+ 'A human-readable text definition';
+COMMENT ON COLUMN cvterm.dbxref_id IS
+ 'A human-readable text definition';
+COMMENT ON INDEX cvterm_c1 IS
+ 'the OBO identifier is globally unique';
-- ================================================
unique(cvterm_id, termsynonym)
);
-create index cvterm_synonym_idx1 on cvterm_synonym (cvterm_id);
+
+-- The table "cvterm_synonym" doesn't exist, so
+-- creating an index on it screws things up!
+-- create index cvterm_synonym_idx1 on cvterm_synonym (cvterm_id);
-- ================================================
-- TABLE: cvterm_dbxref
create index cvterm_dbxref_idx1 on cvterm_dbxref (cvterm_id);
create index cvterm_dbxref_idx2 on cvterm_dbxref (dbxref_id);
+-- ================================================
+-- TABLE: cvterm_geom
+-- ================================================
+
+create table cvterm_geom (
+ cvterm_geom_id serial not null,
+ primary key (cvterm_geom_id),
+ cvterm_id int not null,
+ foreign key (cvterm_id) references cvterm (cvterm_id),
+ cvterm_geom geometry,
+ constraint "enforce_dims_cvterm_geom" CHECK ((st_ndims(cvterm_geom) = 2)),
+ constraint "enforce_srid_cvterm_geom" CHECK ((st_srid(cvterm_geom) = -1)),
+ constraint "enforce_geotype_cvterm_geom" CHECK ((geometrytype(cvterm_geom) = 'POINT'::text OR cvterm_geom IS NULL)),
+ unique(cvterm_id)
+);
+
+
+|;
+
+my $tr = SQL::Translator->new(
+ parser => "PostgreSQL",
+ producer => "MySQL"
+);
+
+ok( $tr->translate(\$create), 'Translate PG2My' ) or diag($tr->error);