]> git.laktatnebel.de Git - roadtokona.triathlon-coaching.com.git/commitdiff
DB Schema, DB-Import und erste Daten
authorOle B. Rosentreter <ole@laktatnebel.de>
Fri, 11 Jul 2025 10:41:03 +0000 (12:41 +0200)
committerOle B. Rosentreter <ole@laktatnebel.de>
Fri, 11 Jul 2025 10:41:03 +0000 (12:41 +0200)
pom.xml
roadtokona-db/pom.xml [new file with mode: 0644]
roadtokona-db/sql/schema.sql [new file with mode: 0644]
roadtokona-web/pom.xml [new file with mode: 0644]
roadtokona-web/src/roadtokona_glob_vars.php [new file with mode: 0644]

diff --git a/pom.xml b/pom.xml
index 934f6cbed889edf2e53d4164a1aafd7650b06705..9825fde42cab3aef3f82b336c659d825e868b248 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -1,17 +1,42 @@
-<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>
diff --git a/roadtokona-db/pom.xml b/roadtokona-db/pom.xml
new file mode 100644 (file)
index 0000000..916310e
--- /dev/null
@@ -0,0 +1,18 @@
+<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-db</artifactId>
+       <version>0.0.1-SNAPSHOT</version>
+       <packaging>pom</packaging>
+
+       <name>${product.artifactId}</name>
+       <description>RoadToKona DB</description>
+
+       <parent>
+               <groupId>de.laktatnebel.maven</groupId>
+               <artifactId>laktatnebelscript</artifactId>
+               <version>2.1.9</version>
+       </parent>
+
+</project>
diff --git a/roadtokona-db/sql/schema.sql b/roadtokona-db/sql/schema.sql
new file mode 100644 (file)
index 0000000..102a4bf
--- /dev/null
@@ -0,0 +1,126 @@
+
+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;
+
+
diff --git a/roadtokona-web/pom.xml b/roadtokona-web/pom.xml
new file mode 100644 (file)
index 0000000..5802252
--- /dev/null
@@ -0,0 +1,18 @@
+<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-web</artifactId>
+       <version>0.0.1-SNAPSHOT</version>
+       <packaging>pom</packaging>
+
+       <name>${product.artifactId}</name>
+       <description>RoadToKona WebUI</description>
+
+       <parent>
+               <groupId>de.laktatnebel.maven</groupId>
+               <artifactId>laktatnebelscript</artifactId>
+               <version>2.1.9</version>
+       </parent>
+
+</project>
diff --git a/roadtokona-web/src/roadtokona_glob_vars.php b/roadtokona-web/src/roadtokona_glob_vars.php
new file mode 100644 (file)
index 0000000..201995e
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+
+
+define ("HOST", "localhost");
+define ("SCHEMA", "roadtokona");
+define ("DB", "sport");
+//define ("USER", "laktatnebel");
+define ("USER", "oleb");
+//define ("PASS", "njThR3G&c9?B7ZpQ");
+define ("PASS", "wpj_9+L6ukX+SN2-");
+
+
+date_default_timezone_set('Europe/Berlin');
+
+?>