From 30e07c4bc7dbbf99c8b0fbed2b20d80f72ef946e Mon Sep 17 00:00:00 2001 From: Jottyfan Date: Thu, 7 Mar 2024 21:02:11 +0100 Subject: [PATCH] corrected view for calculation of camp beds, see #12 --- build.gradle | 2 +- src/main/resources/upgrade_2024-02.sql | 47 ---------------- src/main/resources/upgrade_2024-03-07.sql | 6 ++ src/main/resources/views/camp.sql | 67 ++++++++++++----------- src/main/resources/views/version.sql | 4 +- 5 files changed, 45 insertions(+), 81 deletions(-) delete mode 100644 src/main/resources/upgrade_2024-02.sql create mode 100644 src/main/resources/upgrade_2024-03-07.sql diff --git a/build.gradle b/build.gradle index 6c9aec1..b96cc95 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ apply plugin: 'java' apply plugin: 'maven-publish' group = 'de.jottyfan' -version = '2024.02.23' +version = '2024.03.07' description = """COJooq""" diff --git a/src/main/resources/upgrade_2024-02.sql b/src/main/resources/upgrade_2024-02.sql deleted file mode 100644 index b8f630e..0000000 --- a/src/main/resources/upgrade_2024-02.sql +++ /dev/null @@ -1,47 +0,0 @@ -begin; - -alter table camp.t_camp add column beds_male integer not null default 0; -alter table camp.t_camp add column beds_female integer not null default 0; -alter table camp.t_camp add column blocked_beds_male integer not null default 0; -alter table camp.t_camp add column blocked_beds_female integer not null default 0; - -create or replace view camp.v_camp as -select c.pk, - (c.depart < now()) as is_over, - c.name, - c.arrive, - c.depart, - date_part('isoyear'::text, c.arrive) as year, - l.name as location_name, - c.min_age, - c.max_age, - l.url, - c.price, - c.countries, - c.fk_document, - c.beds_female, - c.beds_male, - c.blocked_beds_female, - c.blocked_beds_male, - count(mp.pk) as used_beds_male, - count(fp.pk) as used_beds_female -from camp.t_camp c -left join camp.t_location l on c.fk_location = l.pk -left join camp.t_person mp on mp.fk_camp = c.pk - and mp.accept = true - and mp.sex = 'male'::camp.enum_sex - and mp.camprole = 'student'::camp.enum_camprole -left join camp.t_person fp on fp.fk_camp = c.pk - and fp.accept = true - and fp.sex = 'female'::camp.enum_sex - and fp.camprole = 'student'::camp.enum_camprole -group by c.pk, c.depart, c.name, c.arrive, l.name, c.min_age, c.max_age, l.url, c.price, c.countries, - c.fk_document, c.beds_female, c.beds_male, c.blocked_beds_female, c.blocked_beds_male; - -create or replace view camp.v_version as - select '2024.02'::text as version; - -drop schema public; -alter schema camp rename to public; - -commit; diff --git a/src/main/resources/upgrade_2024-03-07.sql b/src/main/resources/upgrade_2024-03-07.sql new file mode 100644 index 0000000..76f3265 --- /dev/null +++ b/src/main/resources/upgrade_2024-03-07.sql @@ -0,0 +1,6 @@ +begin; + + \i views/camp.sql + \i views/version.sql + +commit; diff --git a/src/main/resources/views/camp.sql b/src/main/resources/views/camp.sql index 3826cdc..8428c7f 100644 --- a/src/main/resources/views/camp.sql +++ b/src/main/resources/views/camp.sql @@ -1,33 +1,38 @@ -create view public.v_camp as -select c.pk, - (c.depart < now()) as is_over, - c.name, - c.arrive, - c.depart, - date_part('isoyear'::text, c.arrive) as year, - l.name as location_name, - c.min_age, - c.max_age, - l.url, - c.price, - c.countries, - c.fk_document, - c.beds_female, - c.beds_male, - c.blocked_beds_female, - c.blocked_beds_male, - count(mp.pk) as used_beds_male, - count(fp.pk) as used_beds_female +create or replace view public.v_camp as +with fbeds(used_beds_female, fk_camp) as ( + select count(1), fk_camp + from t_person + where accept = true + and sex = 'female' + and camprole = 'student' + group by fk_camp +), mbeds(used_beds_male, fk_camp) as ( + select count(1), fk_camp + from t_person + where accept = true + and sex = 'male' + and camprole = 'student' + group by fk_camp +) select c.pk, + (c.depart < now()) as is_over, + c.name, + c.arrive, + c.depart, + date_part('isoyear'::text, c.arrive) as year, + l.name as location_name, + c.min_age, + c.max_age, + l.url, + c.price, + c.countries, + c.fk_document, + c.beds_female, + c.beds_male, + c.blocked_beds_female, + c.blocked_beds_male, + mbeds.used_beds_male, + fbeds.used_beds_female from public.t_camp c left join public.t_location l on c.fk_location = l.pk -left join public.t_person mp on mp.fk_camp = c.pk - and mp.accept = true - and mp.sex = 'male'::enum_sex - and mp.camprole = 'student'::enum_camprole -left join public.t_person fp on fp.fk_camp = c.pk - and fp.accept = true - and fp.sex = 'female'::enum_sex - and fp.camprole = 'student'::enum_camprole -group by c.pk, c.depart, c.name, c.arrive, l.name, c.min_age, c.max_age, l.url, c.price, c.countries, - c.fk_document, c.beds_female, c.beds_male, c.blocked_beds_female, c.blocked_beds_male; - +left join mbeds on mbeds.fk_camp = c.pk +left join fbeds on fbeds.fk_camp = c.pk; diff --git a/src/main/resources/views/version.sql b/src/main/resources/views/version.sql index 8ddfa8f..1e7d3a9 100644 --- a/src/main/resources/views/version.sql +++ b/src/main/resources/views/version.sql @@ -1,2 +1,2 @@ -create view public.v_version as - select '2024.02'::text as version; +create or replace view public.v_version as + select '2024.03.07'::text as version;