diff --git a/build.gradle b/build.gradle index deacb7d..6c9aec1 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ apply plugin: 'java' apply plugin: 'maven-publish' group = 'de.jottyfan' -version = '2024.02.22' +version = '2024.02.23' description = """COJooq""" diff --git a/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/TCamp.java b/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/TCamp.java index ae69609..c231bce 100644 --- a/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/TCamp.java +++ b/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/TCamp.java @@ -127,22 +127,22 @@ public class TCamp extends TableImpl { /** * The column public.t_camp.beds_male. */ - public final TableField BEDS_MALE = createField(DSL.name("beds_male"), SQLDataType.INTEGER.defaultValue(DSL.field(DSL.raw("0"), SQLDataType.INTEGER)), this, ""); + public final TableField BEDS_MALE = createField(DSL.name("beds_male"), SQLDataType.INTEGER.nullable(false).defaultValue(DSL.field(DSL.raw("0"), SQLDataType.INTEGER)), this, ""); /** * The column public.t_camp.beds_female. */ - public final TableField BEDS_FEMALE = createField(DSL.name("beds_female"), SQLDataType.INTEGER.defaultValue(DSL.field(DSL.raw("0"), SQLDataType.INTEGER)), this, ""); - - /** - * The column public.t_camp.blocked_beds_male. - */ - public final TableField BLOCKED_BEDS_MALE = createField(DSL.name("blocked_beds_male"), SQLDataType.INTEGER.defaultValue(DSL.field(DSL.raw("0"), SQLDataType.INTEGER)), this, ""); + public final TableField BEDS_FEMALE = createField(DSL.name("beds_female"), SQLDataType.INTEGER.nullable(false).defaultValue(DSL.field(DSL.raw("0"), SQLDataType.INTEGER)), this, ""); /** * The column public.t_camp.blocked_beds_female. */ - public final TableField BLOCKED_BEDS_FEMALE = createField(DSL.name("blocked_beds_female"), SQLDataType.INTEGER.defaultValue(DSL.field(DSL.raw("0"), SQLDataType.INTEGER)), this, ""); + public final TableField BLOCKED_BEDS_FEMALE = createField(DSL.name("blocked_beds_female"), SQLDataType.INTEGER.nullable(false).defaultValue(DSL.field(DSL.raw("0"), SQLDataType.INTEGER)), this, ""); + + /** + * The column public.t_camp.blocked_beds_male. + */ + public final TableField BLOCKED_BEDS_MALE = createField(DSL.name("blocked_beds_male"), SQLDataType.INTEGER.nullable(false).defaultValue(DSL.field(DSL.raw("0"), SQLDataType.INTEGER)), this, ""); private TCamp(Name alias, Table aliased) { this(alias, aliased, (Field[]) null, null); diff --git a/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/VCamp.java b/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/VCamp.java index 3598c90..c0e437d 100644 --- a/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/VCamp.java +++ b/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/VCamp.java @@ -113,6 +113,36 @@ public class VCamp extends TableImpl { */ public final TableField FK_DOCUMENT = createField(DSL.name("fk_document"), SQLDataType.INTEGER, this, ""); + /** + * The column public.v_camp.beds_female. + */ + public final TableField BEDS_FEMALE = createField(DSL.name("beds_female"), SQLDataType.INTEGER, this, ""); + + /** + * The column public.v_camp.beds_male. + */ + public final TableField BEDS_MALE = createField(DSL.name("beds_male"), SQLDataType.INTEGER, this, ""); + + /** + * The column public.v_camp.blocked_beds_female. + */ + public final TableField BLOCKED_BEDS_FEMALE = createField(DSL.name("blocked_beds_female"), SQLDataType.INTEGER, this, ""); + + /** + * The column public.v_camp.blocked_beds_male. + */ + public final TableField BLOCKED_BEDS_MALE = createField(DSL.name("blocked_beds_male"), SQLDataType.INTEGER, this, ""); + + /** + * The column public.v_camp.used_beds_male. + */ + public final TableField USED_BEDS_MALE = createField(DSL.name("used_beds_male"), SQLDataType.BIGINT, this, ""); + + /** + * The column public.v_camp.used_beds_female. + */ + public final TableField USED_BEDS_FEMALE = createField(DSL.name("used_beds_female"), SQLDataType.BIGINT, this, ""); + private VCamp(Name alias, Table aliased) { this(alias, aliased, (Field[]) null, null); } @@ -120,20 +150,29 @@ public class VCamp extends TableImpl { private VCamp(Name alias, Table aliased, Field[] parameters, Condition where) { super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.view(""" create view "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 - FROM (t_camp c - LEFT JOIN t_location l ON ((c.fk_location = l.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 (((t_camp c + LEFT JOIN t_location l ON ((c.fk_location = l.pk))) + LEFT JOIN 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 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; """), where); } diff --git a/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/pojos/TCamp.java b/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/pojos/TCamp.java index 36f9df3..b72c403 100644 --- a/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/pojos/TCamp.java +++ b/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/pojos/TCamp.java @@ -30,8 +30,8 @@ public class TCamp implements Serializable { private final Integer fkProfile; private final Integer bedsMale; private final Integer bedsFemale; - private final Integer blockedBedsMale; private final Integer blockedBedsFemale; + private final Integer blockedBedsMale; public TCamp(TCamp value) { this.pk = value.pk; @@ -48,8 +48,8 @@ public class TCamp implements Serializable { this.fkProfile = value.fkProfile; this.bedsMale = value.bedsMale; this.bedsFemale = value.bedsFemale; - this.blockedBedsMale = value.blockedBedsMale; this.blockedBedsFemale = value.blockedBedsFemale; + this.blockedBedsMale = value.blockedBedsMale; } public TCamp( @@ -67,8 +67,8 @@ public class TCamp implements Serializable { Integer fkProfile, Integer bedsMale, Integer bedsFemale, - Integer blockedBedsMale, - Integer blockedBedsFemale + Integer blockedBedsFemale, + Integer blockedBedsMale ) { this.pk = pk; this.name = name; @@ -84,8 +84,8 @@ public class TCamp implements Serializable { this.fkProfile = fkProfile; this.bedsMale = bedsMale; this.bedsFemale = bedsFemale; - this.blockedBedsMale = blockedBedsMale; this.blockedBedsFemale = blockedBedsFemale; + this.blockedBedsMale = blockedBedsMale; } /** @@ -186,13 +186,6 @@ public class TCamp implements Serializable { return this.bedsFemale; } - /** - * Getter for public.t_camp.blocked_beds_male. - */ - public Integer getBlockedBedsMale() { - return this.blockedBedsMale; - } - /** * Getter for public.t_camp.blocked_beds_female. */ @@ -200,6 +193,13 @@ public class TCamp implements Serializable { return this.blockedBedsFemale; } + /** + * Getter for public.t_camp.blocked_beds_male. + */ + public Integer getBlockedBedsMale() { + return this.blockedBedsMale; + } + @Override public boolean equals(Object obj) { if (this == obj) @@ -293,18 +293,18 @@ public class TCamp implements Serializable { } else if (!this.bedsFemale.equals(other.bedsFemale)) return false; - if (this.blockedBedsMale == null) { - if (other.blockedBedsMale != null) - return false; - } - else if (!this.blockedBedsMale.equals(other.blockedBedsMale)) - return false; if (this.blockedBedsFemale == null) { if (other.blockedBedsFemale != null) return false; } else if (!this.blockedBedsFemale.equals(other.blockedBedsFemale)) return false; + if (this.blockedBedsMale == null) { + if (other.blockedBedsMale != null) + return false; + } + else if (!this.blockedBedsMale.equals(other.blockedBedsMale)) + return false; return true; } @@ -326,8 +326,8 @@ public class TCamp implements Serializable { result = prime * result + ((this.fkProfile == null) ? 0 : this.fkProfile.hashCode()); result = prime * result + ((this.bedsMale == null) ? 0 : this.bedsMale.hashCode()); result = prime * result + ((this.bedsFemale == null) ? 0 : this.bedsFemale.hashCode()); - result = prime * result + ((this.blockedBedsMale == null) ? 0 : this.blockedBedsMale.hashCode()); result = prime * result + ((this.blockedBedsFemale == null) ? 0 : this.blockedBedsFemale.hashCode()); + result = prime * result + ((this.blockedBedsMale == null) ? 0 : this.blockedBedsMale.hashCode()); return result; } @@ -349,8 +349,8 @@ public class TCamp implements Serializable { sb.append(", ").append(fkProfile); sb.append(", ").append(bedsMale); sb.append(", ").append(bedsFemale); - sb.append(", ").append(blockedBedsMale); sb.append(", ").append(blockedBedsFemale); + sb.append(", ").append(blockedBedsMale); sb.append(")"); return sb.toString(); diff --git a/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/pojos/VCamp.java b/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/pojos/VCamp.java index 37c55c9..8f2ce23 100644 --- a/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/pojos/VCamp.java +++ b/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/pojos/VCamp.java @@ -29,6 +29,12 @@ public class VCamp implements Serializable { private final String price; private final String countries; private final Integer fkDocument; + private final Integer bedsFemale; + private final Integer bedsMale; + private final Integer blockedBedsFemale; + private final Integer blockedBedsMale; + private final Long usedBedsMale; + private final Long usedBedsFemale; public VCamp(VCamp value) { this.pk = value.pk; @@ -44,6 +50,12 @@ public class VCamp implements Serializable { this.price = value.price; this.countries = value.countries; this.fkDocument = value.fkDocument; + this.bedsFemale = value.bedsFemale; + this.bedsMale = value.bedsMale; + this.blockedBedsFemale = value.blockedBedsFemale; + this.blockedBedsMale = value.blockedBedsMale; + this.usedBedsMale = value.usedBedsMale; + this.usedBedsFemale = value.usedBedsFemale; } public VCamp( @@ -59,7 +71,13 @@ public class VCamp implements Serializable { String url, String price, String countries, - Integer fkDocument + Integer fkDocument, + Integer bedsFemale, + Integer bedsMale, + Integer blockedBedsFemale, + Integer blockedBedsMale, + Long usedBedsMale, + Long usedBedsFemale ) { this.pk = pk; this.isOver = isOver; @@ -74,6 +92,12 @@ public class VCamp implements Serializable { this.price = price; this.countries = countries; this.fkDocument = fkDocument; + this.bedsFemale = bedsFemale; + this.bedsMale = bedsMale; + this.blockedBedsFemale = blockedBedsFemale; + this.blockedBedsMale = blockedBedsMale; + this.usedBedsMale = usedBedsMale; + this.usedBedsFemale = usedBedsFemale; } /** @@ -167,6 +191,48 @@ public class VCamp implements Serializable { return this.fkDocument; } + /** + * Getter for public.v_camp.beds_female. + */ + public Integer getBedsFemale() { + return this.bedsFemale; + } + + /** + * Getter for public.v_camp.beds_male. + */ + public Integer getBedsMale() { + return this.bedsMale; + } + + /** + * Getter for public.v_camp.blocked_beds_female. + */ + public Integer getBlockedBedsFemale() { + return this.blockedBedsFemale; + } + + /** + * Getter for public.v_camp.blocked_beds_male. + */ + public Integer getBlockedBedsMale() { + return this.blockedBedsMale; + } + + /** + * Getter for public.v_camp.used_beds_male. + */ + public Long getUsedBedsMale() { + return this.usedBedsMale; + } + + /** + * Getter for public.v_camp.used_beds_female. + */ + public Long getUsedBedsFemale() { + return this.usedBedsFemale; + } + @Override public boolean equals(Object obj) { if (this == obj) @@ -254,6 +320,42 @@ public class VCamp implements Serializable { } else if (!this.fkDocument.equals(other.fkDocument)) return false; + if (this.bedsFemale == null) { + if (other.bedsFemale != null) + return false; + } + else if (!this.bedsFemale.equals(other.bedsFemale)) + return false; + if (this.bedsMale == null) { + if (other.bedsMale != null) + return false; + } + else if (!this.bedsMale.equals(other.bedsMale)) + return false; + if (this.blockedBedsFemale == null) { + if (other.blockedBedsFemale != null) + return false; + } + else if (!this.blockedBedsFemale.equals(other.blockedBedsFemale)) + return false; + if (this.blockedBedsMale == null) { + if (other.blockedBedsMale != null) + return false; + } + else if (!this.blockedBedsMale.equals(other.blockedBedsMale)) + return false; + if (this.usedBedsMale == null) { + if (other.usedBedsMale != null) + return false; + } + else if (!this.usedBedsMale.equals(other.usedBedsMale)) + return false; + if (this.usedBedsFemale == null) { + if (other.usedBedsFemale != null) + return false; + } + else if (!this.usedBedsFemale.equals(other.usedBedsFemale)) + return false; return true; } @@ -274,6 +376,12 @@ public class VCamp implements Serializable { result = prime * result + ((this.price == null) ? 0 : this.price.hashCode()); result = prime * result + ((this.countries == null) ? 0 : this.countries.hashCode()); result = prime * result + ((this.fkDocument == null) ? 0 : this.fkDocument.hashCode()); + result = prime * result + ((this.bedsFemale == null) ? 0 : this.bedsFemale.hashCode()); + result = prime * result + ((this.bedsMale == null) ? 0 : this.bedsMale.hashCode()); + result = prime * result + ((this.blockedBedsFemale == null) ? 0 : this.blockedBedsFemale.hashCode()); + result = prime * result + ((this.blockedBedsMale == null) ? 0 : this.blockedBedsMale.hashCode()); + result = prime * result + ((this.usedBedsMale == null) ? 0 : this.usedBedsMale.hashCode()); + result = prime * result + ((this.usedBedsFemale == null) ? 0 : this.usedBedsFemale.hashCode()); return result; } @@ -294,6 +402,12 @@ public class VCamp implements Serializable { sb.append(", ").append(price); sb.append(", ").append(countries); sb.append(", ").append(fkDocument); + sb.append(", ").append(bedsFemale); + sb.append(", ").append(bedsMale); + sb.append(", ").append(blockedBedsFemale); + sb.append(", ").append(blockedBedsMale); + sb.append(", ").append(usedBedsMale); + sb.append(", ").append(usedBedsFemale); sb.append(")"); return sb.toString(); diff --git a/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/records/TCampRecord.java b/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/records/TCampRecord.java index 691bf77..6b693d4 100644 --- a/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/records/TCampRecord.java +++ b/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/records/TCampRecord.java @@ -230,26 +230,11 @@ public class TCampRecord extends UpdatableRecordImpl { return (Integer) get(13); } - /** - * Setter for public.t_camp.blocked_beds_male. - */ - public TCampRecord setBlockedBedsMale(Integer value) { - set(14, value); - return this; - } - - /** - * Getter for public.t_camp.blocked_beds_male. - */ - public Integer getBlockedBedsMale() { - return (Integer) get(14); - } - /** * Setter for public.t_camp.blocked_beds_female. */ public TCampRecord setBlockedBedsFemale(Integer value) { - set(15, value); + set(14, value); return this; } @@ -257,6 +242,21 @@ public class TCampRecord extends UpdatableRecordImpl { * Getter for public.t_camp.blocked_beds_female. */ public Integer getBlockedBedsFemale() { + return (Integer) get(14); + } + + /** + * Setter for public.t_camp.blocked_beds_male. + */ + public TCampRecord setBlockedBedsMale(Integer value) { + set(15, value); + return this; + } + + /** + * Getter for public.t_camp.blocked_beds_male. + */ + public Integer getBlockedBedsMale() { return (Integer) get(15); } @@ -283,7 +283,7 @@ public class TCampRecord extends UpdatableRecordImpl { /** * Create a detached, initialised TCampRecord */ - public TCampRecord(Integer pk, String name, LocalDateTime arrive, LocalDateTime depart, Integer fkLocation, Integer minAge, Integer maxAge, String price, String countries, Integer fkDocument, Boolean lockSales, Integer fkProfile, Integer bedsMale, Integer bedsFemale, Integer blockedBedsMale, Integer blockedBedsFemale) { + public TCampRecord(Integer pk, String name, LocalDateTime arrive, LocalDateTime depart, Integer fkLocation, Integer minAge, Integer maxAge, String price, String countries, Integer fkDocument, Boolean lockSales, Integer fkProfile, Integer bedsMale, Integer bedsFemale, Integer blockedBedsFemale, Integer blockedBedsMale) { super(TCamp.T_CAMP); setPk(pk); @@ -300,8 +300,8 @@ public class TCampRecord extends UpdatableRecordImpl { setFkProfile(fkProfile); setBedsMale(bedsMale); setBedsFemale(bedsFemale); - setBlockedBedsMale(blockedBedsMale); setBlockedBedsFemale(blockedBedsFemale); + setBlockedBedsMale(blockedBedsMale); resetChangedOnNotNull(); } @@ -326,8 +326,8 @@ public class TCampRecord extends UpdatableRecordImpl { setFkProfile(value.getFkProfile()); setBedsMale(value.getBedsMale()); setBedsFemale(value.getBedsFemale()); - setBlockedBedsMale(value.getBlockedBedsMale()); setBlockedBedsFemale(value.getBlockedBedsFemale()); + setBlockedBedsMale(value.getBlockedBedsMale()); resetChangedOnNotNull(); } } diff --git a/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/records/VCampRecord.java b/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/records/VCampRecord.java index 49cb5b5..ae7f6e3 100644 --- a/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/records/VCampRecord.java +++ b/src/main/java/de/jottyfan/camporganizer/db/jooq/tables/records/VCampRecord.java @@ -214,6 +214,96 @@ public class VCampRecord extends TableRecordImpl { return (Integer) get(12); } + /** + * Setter for public.v_camp.beds_female. + */ + public VCampRecord setBedsFemale(Integer value) { + set(13, value); + return this; + } + + /** + * Getter for public.v_camp.beds_female. + */ + public Integer getBedsFemale() { + return (Integer) get(13); + } + + /** + * Setter for public.v_camp.beds_male. + */ + public VCampRecord setBedsMale(Integer value) { + set(14, value); + return this; + } + + /** + * Getter for public.v_camp.beds_male. + */ + public Integer getBedsMale() { + return (Integer) get(14); + } + + /** + * Setter for public.v_camp.blocked_beds_female. + */ + public VCampRecord setBlockedBedsFemale(Integer value) { + set(15, value); + return this; + } + + /** + * Getter for public.v_camp.blocked_beds_female. + */ + public Integer getBlockedBedsFemale() { + return (Integer) get(15); + } + + /** + * Setter for public.v_camp.blocked_beds_male. + */ + public VCampRecord setBlockedBedsMale(Integer value) { + set(16, value); + return this; + } + + /** + * Getter for public.v_camp.blocked_beds_male. + */ + public Integer getBlockedBedsMale() { + return (Integer) get(16); + } + + /** + * Setter for public.v_camp.used_beds_male. + */ + public VCampRecord setUsedBedsMale(Long value) { + set(17, value); + return this; + } + + /** + * Getter for public.v_camp.used_beds_male. + */ + public Long getUsedBedsMale() { + return (Long) get(17); + } + + /** + * Setter for public.v_camp.used_beds_female. + */ + public VCampRecord setUsedBedsFemale(Long value) { + set(18, value); + return this; + } + + /** + * Getter for public.v_camp.used_beds_female. + */ + public Long getUsedBedsFemale() { + return (Long) get(18); + } + // ------------------------------------------------------------------------- // Constructors // ------------------------------------------------------------------------- @@ -228,7 +318,7 @@ public class VCampRecord extends TableRecordImpl { /** * Create a detached, initialised VCampRecord */ - public VCampRecord(Integer pk, Boolean isOver, String name, LocalDateTime arrive, LocalDateTime depart, Double year, String locationName, Integer minAge, Integer maxAge, String url, String price, String countries, Integer fkDocument) { + public VCampRecord(Integer pk, Boolean isOver, String name, LocalDateTime arrive, LocalDateTime depart, Double year, String locationName, Integer minAge, Integer maxAge, String url, String price, String countries, Integer fkDocument, Integer bedsFemale, Integer bedsMale, Integer blockedBedsFemale, Integer blockedBedsMale, Long usedBedsMale, Long usedBedsFemale) { super(VCamp.V_CAMP); setPk(pk); @@ -244,6 +334,12 @@ public class VCampRecord extends TableRecordImpl { setPrice(price); setCountries(countries); setFkDocument(fkDocument); + setBedsFemale(bedsFemale); + setBedsMale(bedsMale); + setBlockedBedsFemale(blockedBedsFemale); + setBlockedBedsMale(blockedBedsMale); + setUsedBedsMale(usedBedsMale); + setUsedBedsFemale(usedBedsFemale); resetChangedOnNotNull(); } @@ -267,6 +363,12 @@ public class VCampRecord extends TableRecordImpl { setPrice(value.getPrice()); setCountries(value.getCountries()); setFkDocument(value.getFkDocument()); + setBedsFemale(value.getBedsFemale()); + setBedsMale(value.getBedsMale()); + setBlockedBedsFemale(value.getBlockedBedsFemale()); + setBlockedBedsMale(value.getBlockedBedsMale()); + setUsedBedsMale(value.getUsedBedsMale()); + setUsedBedsFemale(value.getUsedBedsFemale()); resetChangedOnNotNull(); } } diff --git a/src/main/resources/tables/camp.sql b/src/main/resources/tables/camp.sql index 494d11a..e97728c 100644 --- a/src/main/resources/tables/camp.sql +++ b/src/main/resources/tables/camp.sql @@ -11,8 +11,8 @@ create table public.t_camp ( fk_document integer references public.t_document(pk), lock_sales boolean default false not null, fk_profile integer not null references public.t_profile(pk), - beds_male integer default 0, - beds_female integer default 0, - blocked_beds_male integer default 0, - blocked_beds_female integer default 0 + beds_male integer not null default 0, + beds_female integer not null default 0, + blocked_beds_male integer not null default 0, + blocked_beds_female integer not null default 0 ); diff --git a/src/main/resources/upgrade_2024-02.sql b/src/main/resources/upgrade_2024-02.sql new file mode 100644 index 0000000..c547cdd --- /dev/null +++ b/src/main/resources/upgrade_2024-02.sql @@ -0,0 +1,38 @@ +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'::enum_sex + and mp.camprole = 'student'::enum_camprole +left join camp.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; + diff --git a/src/main/resources/views/camp.sql b/src/main/resources/views/camp.sql index dcc87a6..3826cdc 100644 --- a/src/main/resources/views/camp.sql +++ b/src/main/resources/views/camp.sql @@ -1,16 +1,33 @@ 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 - from (public.t_camp c - left join public.t_location l on ((c.fk_location = l.pk))); +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 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; +