Skip to content

Commit

Permalink
Merge branch 'genotyping_results' of github.com:htgt/LIMS2-WebApp int…
Browse files Browse the repository at this point in the history
…o genotyping_results
  • Loading branch information
af11-sanger committed Nov 29, 2012
2 parents 4187754 + 7850a28 commit f8f76cb
Show file tree
Hide file tree
Showing 12 changed files with 298 additions and 130 deletions.
58 changes: 0 additions & 58 deletions ddl/templates/versions/13/audit-up.sql

This file was deleted.

6 changes: 0 additions & 6 deletions ddl/templates/versions/13/fixtures.sql

This file was deleted.

20 changes: 0 additions & 20 deletions ddl/templates/versions/13/up.sql

This file was deleted.

60 changes: 31 additions & 29 deletions ddl/templates/versions/14/audit-up.sql
@@ -1,56 +1,58 @@
CREATE TABLE audit.well_chromosome_fail (

CREATE TABLE audit.well_genotyping_results (
audit_op CHAR(1) NOT NULL CHECK (audit_op IN ('D','I','U')),
audit_user TEXT NOT NULL,
audit_stamp TIMESTAMP NOT NULL,
audit_txid INTEGER NOT NULL,
well_id integer,
result text,
genotyping_result_type_id text,
call text,
copy_number double precision,
copy_number_range double precision,
confidence double precision,
created_at timestamp without time zone,
created_by_id integer
);
GRANT SELECT ON audit.well_chromosome_fail TO [% ro_role %];
GRANT SELECT,INSERT ON audit.well_chromosome_fail TO [% rw_role %];
CREATE OR REPLACE FUNCTION public.process_well_chromosome_fail_audit()
RETURNS TRIGGER AS $well_chromosome_fail_audit$
GRANT SELECT ON audit.well_genotyping_results TO [% ro_role %];
GRANT SELECT,INSERT ON audit.well_genotyping_results TO [% rw_role %];
CREATE OR REPLACE FUNCTION public.process_well_genotyping_results_audit()
RETURNS TRIGGER AS $well_genotyping_results_audit$
BEGIN
IF (TG_OP = 'DELETE') THEN
INSERT INTO audit.well_chromosome_fail SELECT 'D', user, now(), txid_current(), OLD.*;
INSERT INTO audit.well_genotyping_results SELECT 'D', user, now(), txid_current(), OLD.*;
ELSIF (TG_OP = 'UPDATE') THEN
INSERT INTO audit.well_chromosome_fail SELECT 'U', user, now(), txid_current(), NEW.*;
INSERT INTO audit.well_genotyping_results SELECT 'U', user, now(), txid_current(), NEW.*;
ELSIF (TG_OP = 'INSERT') THEN
INSERT INTO audit.well_chromosome_fail SELECT 'I', user, now(), txid_current(), NEW.*;
INSERT INTO audit.well_genotyping_results SELECT 'I', user, now(), txid_current(), NEW.*;
END IF;
RETURN NULL;
END;
$well_chromosome_fail_audit$ LANGUAGE plpgsql;
CREATE TRIGGER well_chromosome_fail_audit
AFTER INSERT OR UPDATE OR DELETE ON public.well_chromosome_fail
FOR EACH ROW EXECUTE PROCEDURE public.process_well_chromosome_fail_audit();
CREATE TABLE audit.well_targeting_pass (
$well_genotyping_results_audit$ LANGUAGE plpgsql;
CREATE TRIGGER well_genotyping_results_audit
AFTER INSERT OR UPDATE OR DELETE ON public.well_genotyping_results
FOR EACH ROW EXECUTE PROCEDURE public.process_well_genotyping_results_audit();
CREATE TABLE audit.genotyping_result_types (
audit_op CHAR(1) NOT NULL CHECK (audit_op IN ('D','I','U')),
audit_user TEXT NOT NULL,
audit_stamp TIMESTAMP NOT NULL,
audit_txid INTEGER NOT NULL,
well_id integer,
result text,
created_at timestamp without time zone,
created_by_id integer
id text
);
GRANT SELECT ON audit.well_targeting_pass TO [% ro_role %];
GRANT SELECT,INSERT ON audit.well_targeting_pass TO [% rw_role %];
CREATE OR REPLACE FUNCTION public.process_well_targeting_pass_audit()
RETURNS TRIGGER AS $well_targeting_pass_audit$
GRANT SELECT ON audit.genotyping_result_types TO [% ro_role %];
GRANT SELECT,INSERT ON audit.genotyping_result_types TO [% rw_role %];
CREATE OR REPLACE FUNCTION public.process_genotyping_result_types_audit()
RETURNS TRIGGER AS $genotyping_result_types_audit$
BEGIN
IF (TG_OP = 'DELETE') THEN
INSERT INTO audit.well_targeting_pass SELECT 'D', user, now(), txid_current(), OLD.*;
INSERT INTO audit.genotyping_result_types SELECT 'D', user, now(), txid_current(), OLD.*;
ELSIF (TG_OP = 'UPDATE') THEN
INSERT INTO audit.well_targeting_pass SELECT 'U', user, now(), txid_current(), NEW.*;
INSERT INTO audit.genotyping_result_types SELECT 'U', user, now(), txid_current(), NEW.*;
ELSIF (TG_OP = 'INSERT') THEN
INSERT INTO audit.well_targeting_pass SELECT 'I', user, now(), txid_current(), NEW.*;
INSERT INTO audit.genotyping_result_types SELECT 'I', user, now(), txid_current(), NEW.*;
END IF;
RETURN NULL;
END;
$well_targeting_pass_audit$ LANGUAGE plpgsql;
CREATE TRIGGER well_targeting_pass_audit
AFTER INSERT OR UPDATE OR DELETE ON public.well_targeting_pass
FOR EACH ROW EXECUTE PROCEDURE public.process_well_targeting_pass_audit();
$genotyping_result_types_audit$ LANGUAGE plpgsql;
CREATE TRIGGER genotyping_result_types_audit
AFTER INSERT OR UPDATE OR DELETE ON public.genotyping_result_types
FOR EACH ROW EXECUTE PROCEDURE public.process_genotyping_result_types_audit();
3 changes: 3 additions & 0 deletions ddl/templates/versions/14/fixtures.sql
@@ -1,3 +1,6 @@
INSERT INTO schema_versions(version)
VALUES (14);

INSERT INTO genotyping_result_types(id)
values ('loacrit'), ('loatam'), ('loxp'),('lacz'),('neo'),('en2-int'),('cre'),('puro'),('chry'),('chr1'),('chr8a'),('chr11b'),('bsd');

34 changes: 17 additions & 17 deletions ddl/templates/versions/14/up.sql
@@ -1,20 +1,20 @@
CREATE TABLE well_targeting_pass (
well_id integer NOT NULL REFERENCES wells(id),
result TEXT NOT NULL,
created_at timestamp without time zone NOT NULL DEFAULT now(),
created_by_id integer NOT NULL REFERENCES users(id),
PRIMARY KEY(well_id)
CREATE TABLE genotyping_result_types (
id TEXT NOT NULL,
PRIMARY KEY(id)
);
GRANT SELECT ON well_targeting_pass TO "[% ro_role %]";
GRANT SELECT, INSERT, UPDATE, DELETE ON well_targeting_pass TO "[% rw_role %]";
GRANT SELECT ON genotyping_result_types TO "[% ro_role %]";
GRANT SELECT, INSERT, UPDATE, DELETE ON genotyping_result_types TO "[% rw_role %]";

CREATE TABLE well_chromosome_fail (
well_id integer NOT NULL REFERENCES wells(id),
result TEXT NOT NULL,
created_at timestamp without time zone NOT NULL DEFAULT now(),
created_by_id integer NOT NULL REFERENCES users(id),
PRIMARY KEY(well_id)
CREATE TABLE well_genotyping_results (
well_id INTEGER NOT NULL REFERENCES wells(id),
genotyping_result_type_id TEXT NOT NULL REFERENCES genotyping_result_types(id),
call TEXT NOT NULL,
copy_number FLOAT,
copy_number_range FLOAT,
confidence FLOAT,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
created_by_id INTEGER NOT NULL REFERENCES users(id),
PRIMARY KEY(well_id, genotyping_result_type_id)
);
GRANT SELECT ON well_chromosome_fail TO "[% ro_role %]";
GRANT SELECT, INSERT, UPDATE, DELETE ON well_chromosome_fail TO "[% rw_role %]";

GRANT SELECT ON well_genotyping_results TO "[% ro_role %]";
GRANT SELECT, INSERT, UPDATE, DELETE ON well_genotyping_results TO "[% rw_role %]";
56 changes: 56 additions & 0 deletions ddl/templates/versions/15/audit-up.sql
@@ -0,0 +1,56 @@
CREATE TABLE audit.well_chromosome_fail (
audit_op CHAR(1) NOT NULL CHECK (audit_op IN ('D','I','U')),
audit_user TEXT NOT NULL,
audit_stamp TIMESTAMP NOT NULL,
audit_txid INTEGER NOT NULL,
well_id integer,
result text,
created_at timestamp without time zone,
created_by_id integer
);
GRANT SELECT ON audit.well_chromosome_fail TO [% ro_role %];
GRANT SELECT,INSERT ON audit.well_chromosome_fail TO [% rw_role %];
CREATE OR REPLACE FUNCTION public.process_well_chromosome_fail_audit()
RETURNS TRIGGER AS $well_chromosome_fail_audit$
BEGIN
IF (TG_OP = 'DELETE') THEN
INSERT INTO audit.well_chromosome_fail SELECT 'D', user, now(), txid_current(), OLD.*;
ELSIF (TG_OP = 'UPDATE') THEN
INSERT INTO audit.well_chromosome_fail SELECT 'U', user, now(), txid_current(), NEW.*;
ELSIF (TG_OP = 'INSERT') THEN
INSERT INTO audit.well_chromosome_fail SELECT 'I', user, now(), txid_current(), NEW.*;
END IF;
RETURN NULL;
END;
$well_chromosome_fail_audit$ LANGUAGE plpgsql;
CREATE TRIGGER well_chromosome_fail_audit
AFTER INSERT OR UPDATE OR DELETE ON public.well_chromosome_fail
FOR EACH ROW EXECUTE PROCEDURE public.process_well_chromosome_fail_audit();
CREATE TABLE audit.well_targeting_pass (
audit_op CHAR(1) NOT NULL CHECK (audit_op IN ('D','I','U')),
audit_user TEXT NOT NULL,
audit_stamp TIMESTAMP NOT NULL,
audit_txid INTEGER NOT NULL,
well_id integer,
result text,
created_at timestamp without time zone,
created_by_id integer
);
GRANT SELECT ON audit.well_targeting_pass TO [% ro_role %];
GRANT SELECT,INSERT ON audit.well_targeting_pass TO [% rw_role %];
CREATE OR REPLACE FUNCTION public.process_well_targeting_pass_audit()
RETURNS TRIGGER AS $well_targeting_pass_audit$
BEGIN
IF (TG_OP = 'DELETE') THEN
INSERT INTO audit.well_targeting_pass SELECT 'D', user, now(), txid_current(), OLD.*;
ELSIF (TG_OP = 'UPDATE') THEN
INSERT INTO audit.well_targeting_pass SELECT 'U', user, now(), txid_current(), NEW.*;
ELSIF (TG_OP = 'INSERT') THEN
INSERT INTO audit.well_targeting_pass SELECT 'I', user, now(), txid_current(), NEW.*;
END IF;
RETURN NULL;
END;
$well_targeting_pass_audit$ LANGUAGE plpgsql;
CREATE TRIGGER well_targeting_pass_audit
AFTER INSERT OR UPDATE OR DELETE ON public.well_targeting_pass
FOR EACH ROW EXECUTE PROCEDURE public.process_well_targeting_pass_audit();
3 changes: 3 additions & 0 deletions ddl/templates/versions/15/fixtures.sql
@@ -0,0 +1,3 @@
INSERT INTO schema_versions(version)
VALUES (15);

20 changes: 20 additions & 0 deletions ddl/templates/versions/15/up.sql
@@ -0,0 +1,20 @@
CREATE TABLE well_targeting_pass (
well_id integer NOT NULL REFERENCES wells(id),
result TEXT NOT NULL,
created_at timestamp without time zone NOT NULL DEFAULT now(),
created_by_id integer NOT NULL REFERENCES users(id),
PRIMARY KEY(well_id)
);
GRANT SELECT ON well_targeting_pass TO "[% ro_role %]";
GRANT SELECT, INSERT, UPDATE, DELETE ON well_targeting_pass TO "[% rw_role %]";

CREATE TABLE well_chromosome_fail (
well_id integer NOT NULL REFERENCES wells(id),
result TEXT NOT NULL,
created_at timestamp without time zone NOT NULL DEFAULT now(),
created_by_id integer NOT NULL REFERENCES users(id),
PRIMARY KEY(well_id)
);
GRANT SELECT ON well_chromosome_fail TO "[% ro_role %]";
GRANT SELECT, INSERT, UPDATE, DELETE ON well_chromosome_fail TO "[% rw_role %]";

19 changes: 19 additions & 0 deletions lib/LIMS2/Model/FormValidator/Constraint.pm
Expand Up @@ -109,6 +109,20 @@ sub integer {
}
}

sub confidence_float {
return sub {
my $val = shift;
return $val =~ qr/^\d+\.\d+$/ ;
}
}

sub copy_float {
return sub {
my $val = shift;
return $val =~ qr/^\d+\.\d+$/ ;
}
}

sub alphanumeric_string {
return regexp_matches(qr/^\w+$/);
}
Expand Down Expand Up @@ -244,6 +258,11 @@ sub existing_genotyping_primer_type {
return in_resultset( $model, 'GenotypingPrimerType', 'id' );
}

sub existing_genotyping_result_type {
my ( $class, $model ) = @_;
return in_resultset( $model, 'GenotypingResultType', 'id' );
}

sub existing_user {
my ( $class, $model ) = @_;
return in_resultset( $model, 'User', 'name' );
Expand Down

0 comments on commit f8f76cb

Please sign in to comment.