-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>de.laktatnebel.roadtokona</groupId>
- <artifactId>roadtokona.triathlon-coaching.com</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>zip</packaging>
+ <artifactId>roadtokona</artifactId>
+ <packaging>pom</packaging>
<name>roadtokona.triathlon-coaching.com</name>
+ <description>RoadToKona DB and Calculator</description>
- <parent>
- <groupId>de.laktatnebel.maven</groupId>
- <artifactId>laktatnebelscript</artifactId>
- <version>2.1.9</version>
- </parent>
+ <modules>
+ <module>roadtokona-web</module>
+ <module>roadtokona-db</module>
+ </modules>
+
+ <scm>
+ <connection>scm:git:ssh://laktatnebel.de/srv/git/swim.git</connection>
+ <developerConnection>scm:git:ssh://laktatnebel.de/srv/git/swim.git</developerConnection>
+ <tag>HEAD</tag>
+ </scm>
+
+ <distributionManagement>
+ <repository>
+ <id>laktatnebel.release</id>
+ <name>Release Repository</name>
+ <url>file:///home/oleb/.m2/distribution</url>
+ </repository>
+ <snapshotRepository>
+ <id>laktatnebel.snapshots</id>
+ <uniqueVersion>false</uniqueVersion>
+ <name>Snapshot Repository</name>
+ <url>file:///home/oleb/.m2/distribution</url>
+ </snapshotRepository>
+ <site>
+ <id>laktatnebel.site</id>
+ <name>Sites</name>
+ <url>file:///home/oleb/.m2/site</url>
+ </site>
+ </distributionManagement>
</project>
--- /dev/null
+
+CREATE SCHEMA roadtokona;
+
+CREATE TABLE roadtokona.division (
+ division_id serial NOT NULL,
+ division_gender char NOT NULL DEFAULT 'x',
+ division_age int2 NOT NULL DEFAULT 0,
+ CONSTRAINT division_pkey PRIMARY KEY (division_id)
+);
+
+CREATE TABLE roadtokona.race (
+ race_id serial NOT NULL,
+ race_date date,
+ race_location varchar (64),
+ race_slots int2 NOT NULL DEFAULT 10000,
+ CONSTRAINT race_pkey PRIMARY KEY (race_id)
+);
+
+CREATE TABLE roadtokona.factor (
+ fk_division int4 NOT NULL DEFAULT 0,
+ factor_value decimal NOT NULL DEFAULT 1,
+ CONSTRAINT factor_division_fkey FOREIGN KEY (fk_division) REFERENCES roadtokona.division(division_id) ON UPDATE CASCADE ON DELETE cascade
+);
+
+CREATE TABLE roadtokona.result (
+ fk_division int4 NOT NULL DEFAULT 0,
+ fk_race int4 NOT NULL DEFAULT 0,
+ result_finish time DEFAULT NULL,
+ CONSTRAINT result_division_fkey FOREIGN KEY (fk_division) REFERENCES roadtokona.division(division_id) ON UPDATE CASCADE ON DELETE cascade,
+ CONSTRAINT result_race_fkey FOREIGN KEY (fk_race) REFERENCES roadtokona.race(race_id) ON UPDATE CASCADE ON DELETE cascade
+);
+
+CREATE VIEW roadtokona.view_result_normalized AS
+SELECT
+ race_date,
+ race_location,
+ division_gender,
+ division_age,
+ (select factor_value from roadtokona.factor where roadtokona.factor.fk_division = re.fk_division),
+ result_finish,
+ result_finish * (select factor_value from roadtokona.factor where roadtokona.factor.fk_division = re.fk_division) as result_normalized
+FROM
+ roadtokona.result re
+JOIN roadtokona.race ra ON (re.fk_race = ra.race_id)
+JOIN roadtokona.division di ON (re.fk_division = di.division_id);
+
+CREATE VIEW roadtokona.view_division_factor AS
+SELECT
+ division_gender,
+ division_age,
+ factor_value
+FROM
+ roadtokona.factor fa
+JOIN roadtokona.division di ON (fa.fk_division = di.division_id);
+
+insert into roadtokona.division values
+(default, 'M', 18),
+(default, 'F', 18),
+(default, 'M', 25),
+(default, 'F', 25),
+(default, 'M', 30),
+(default, 'F', 30),
+(default, 'M', 35),
+(default, 'F', 35),
+(default, 'M', 40),
+(default, 'F', 40),
+(default, 'M', 45),
+(default, 'F', 45),
+(default, 'M', 50),
+(default, 'F', 50),
+(default, 'M', 55),
+(default, 'F', 55),
+(default, 'M', 60),
+(default, 'F', 60),
+(default, 'M', 65),
+(default, 'F', 65),
+(default, 'M', 70),
+(default, 'F', 70),
+(default, 'M', 75),
+(default, 'F', 75),
+(default, 'M', 80),
+(default, 'F', 80),
+(default, 'M', 85),
+(default, 'F', 85)
+;
+
+insert into roadtokona.factor values
+((select division_id FROM roadtokona.division where division_gender='M' and division_age=18), 0.9698),
+((select division_id FROM roadtokona.division where division_gender='M' and division_age=25), 0.9921),
+((select division_id FROM roadtokona.division where division_gender='M' and division_age=30), 1.0000),
+((select division_id FROM roadtokona.division where division_gender='M' and division_age=35), 0.9895),
+((select division_id FROM roadtokona.division where division_gender='M' and division_age=40), 0.9683),
+((select division_id FROM roadtokona.division where division_gender='M' and division_age=45), 0.9401),
+((select division_id FROM roadtokona.division where division_gender='M' and division_age=50), 0.9002),
+((select division_id FROM roadtokona.division where division_gender='M' and division_age=55), 0.8667),
+((select division_id FROM roadtokona.division where division_gender='M' and division_age=60), 0.8262),
+((select division_id FROM roadtokona.division where division_gender='M' and division_age=65), 0.7552),
+((select division_id FROM roadtokona.division where division_gender='M' and division_age=70), 0.6876),
+((select division_id FROM roadtokona.division where division_gender='M' and division_age=75), 0.6768),
+((select division_id FROM roadtokona.division where division_gender='M' and division_age=80), 0.5555),
+((select division_id FROM roadtokona.division where division_gender='M' and division_age=85), 0.5416),
+((select division_id FROM roadtokona.division where division_gender='F' and division_age=18), 0.8567),
+((select division_id FROM roadtokona.division where division_gender='F' and division_age=25), 0.8961),
+((select division_id FROM roadtokona.division where division_gender='F' and division_age=30), 0.8977),
+((select division_id FROM roadtokona.division where division_gender='F' and division_age=35), 0.8866),
+((select division_id FROM roadtokona.division where division_gender='F' and division_age=40), 0.8707),
+((select division_id FROM roadtokona.division where division_gender='F' and division_age=45), 0.8501),
+((select division_id FROM roadtokona.division where division_gender='F' and division_age=50), 0.8125),
+((select division_id FROM roadtokona.division where division_gender='F' and division_age=55), 0.7778),
+((select division_id FROM roadtokona.division where division_gender='F' and division_age=60), 0.7218),
+((select division_id FROM roadtokona.division where division_gender='F' and division_age=65), 0.6828),
+((select division_id FROM roadtokona.division where division_gender='F' and division_age=70), 0.6439),
+((select division_id FROM roadtokona.division where division_gender='F' and division_age=75), 0.5521)
+;
+
+--ALTER SCHEMA roadtokona OWNER TO laktatnebel;
+
+--ALTER TABLE roadtokona.division OWNER TO laktatnebel;
+--ALTER TABLE roadtokona.race OWNER TO laktatnebel;
+--ALTER TABLE roadtokona.factor OWNER TO laktatnebel;
+--ALTER TABLE roadtokona.result OWNER TO laktatnebel;
+--ALTER TABLE roadtokona.view_result_normalized OWNER TO laktatnebel;
+
+--GRANT ALL ON SCHEMA roadtokona TO oleb;
+
+