view for showing free beds

This commit is contained in:
Jottyfan 2024-02-23 00:58:37 +01:00
parent a6b09fc88b
commit 47c4a1a446
10 changed files with 393 additions and 83 deletions

View File

@ -22,7 +22,7 @@ apply plugin: 'java'
apply plugin: 'maven-publish'
group = 'de.jottyfan'
version = '2024.02.22'
version = '2024.02.23'
description = """COJooq"""

View File

@ -127,22 +127,22 @@ public class TCamp extends TableImpl<TCampRecord> {
/**
* The column <code>public.t_camp.beds_male</code>.
*/
public final TableField<TCampRecord, Integer> BEDS_MALE = createField(DSL.name("beds_male"), SQLDataType.INTEGER.defaultValue(DSL.field(DSL.raw("0"), SQLDataType.INTEGER)), this, "");
public final TableField<TCampRecord, Integer> BEDS_MALE = createField(DSL.name("beds_male"), SQLDataType.INTEGER.nullable(false).defaultValue(DSL.field(DSL.raw("0"), SQLDataType.INTEGER)), this, "");
/**
* The column <code>public.t_camp.beds_female</code>.
*/
public final TableField<TCampRecord, Integer> BEDS_FEMALE = createField(DSL.name("beds_female"), SQLDataType.INTEGER.defaultValue(DSL.field(DSL.raw("0"), SQLDataType.INTEGER)), this, "");
/**
* The column <code>public.t_camp.blocked_beds_male</code>.
*/
public final TableField<TCampRecord, Integer> BLOCKED_BEDS_MALE = createField(DSL.name("blocked_beds_male"), SQLDataType.INTEGER.defaultValue(DSL.field(DSL.raw("0"), SQLDataType.INTEGER)), this, "");
public final TableField<TCampRecord, Integer> BEDS_FEMALE = createField(DSL.name("beds_female"), SQLDataType.INTEGER.nullable(false).defaultValue(DSL.field(DSL.raw("0"), SQLDataType.INTEGER)), this, "");
/**
* The column <code>public.t_camp.blocked_beds_female</code>.
*/
public final TableField<TCampRecord, Integer> BLOCKED_BEDS_FEMALE = createField(DSL.name("blocked_beds_female"), SQLDataType.INTEGER.defaultValue(DSL.field(DSL.raw("0"), SQLDataType.INTEGER)), this, "");
public final TableField<TCampRecord, Integer> BLOCKED_BEDS_FEMALE = createField(DSL.name("blocked_beds_female"), SQLDataType.INTEGER.nullable(false).defaultValue(DSL.field(DSL.raw("0"), SQLDataType.INTEGER)), this, "");
/**
* The column <code>public.t_camp.blocked_beds_male</code>.
*/
public final TableField<TCampRecord, Integer> 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<TCampRecord> aliased) {
this(alias, aliased, (Field<?>[]) null, null);

View File

@ -113,6 +113,36 @@ public class VCamp extends TableImpl<VCampRecord> {
*/
public final TableField<VCampRecord, Integer> FK_DOCUMENT = createField(DSL.name("fk_document"), SQLDataType.INTEGER, this, "");
/**
* The column <code>public.v_camp.beds_female</code>.
*/
public final TableField<VCampRecord, Integer> BEDS_FEMALE = createField(DSL.name("beds_female"), SQLDataType.INTEGER, this, "");
/**
* The column <code>public.v_camp.beds_male</code>.
*/
public final TableField<VCampRecord, Integer> BEDS_MALE = createField(DSL.name("beds_male"), SQLDataType.INTEGER, this, "");
/**
* The column <code>public.v_camp.blocked_beds_female</code>.
*/
public final TableField<VCampRecord, Integer> BLOCKED_BEDS_FEMALE = createField(DSL.name("blocked_beds_female"), SQLDataType.INTEGER, this, "");
/**
* The column <code>public.v_camp.blocked_beds_male</code>.
*/
public final TableField<VCampRecord, Integer> BLOCKED_BEDS_MALE = createField(DSL.name("blocked_beds_male"), SQLDataType.INTEGER, this, "");
/**
* The column <code>public.v_camp.used_beds_male</code>.
*/
public final TableField<VCampRecord, Long> USED_BEDS_MALE = createField(DSL.name("used_beds_male"), SQLDataType.BIGINT, this, "");
/**
* The column <code>public.v_camp.used_beds_female</code>.
*/
public final TableField<VCampRecord, Long> USED_BEDS_FEMALE = createField(DSL.name("used_beds_female"), SQLDataType.BIGINT, this, "");
private VCamp(Name alias, Table<VCampRecord> aliased) {
this(alias, aliased, (Field<?>[]) null, null);
}
@ -120,20 +150,29 @@ public class VCamp extends TableImpl<VCampRecord> {
private VCamp(Name alias, Table<VCampRecord> 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);
}

View File

@ -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 <code>public.t_camp.blocked_beds_male</code>.
*/
public Integer getBlockedBedsMale() {
return this.blockedBedsMale;
}
/**
* Getter for <code>public.t_camp.blocked_beds_female</code>.
*/
@ -200,6 +193,13 @@ public class TCamp implements Serializable {
return this.blockedBedsFemale;
}
/**
* Getter for <code>public.t_camp.blocked_beds_male</code>.
*/
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();

View File

@ -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 <code>public.v_camp.beds_female</code>.
*/
public Integer getBedsFemale() {
return this.bedsFemale;
}
/**
* Getter for <code>public.v_camp.beds_male</code>.
*/
public Integer getBedsMale() {
return this.bedsMale;
}
/**
* Getter for <code>public.v_camp.blocked_beds_female</code>.
*/
public Integer getBlockedBedsFemale() {
return this.blockedBedsFemale;
}
/**
* Getter for <code>public.v_camp.blocked_beds_male</code>.
*/
public Integer getBlockedBedsMale() {
return this.blockedBedsMale;
}
/**
* Getter for <code>public.v_camp.used_beds_male</code>.
*/
public Long getUsedBedsMale() {
return this.usedBedsMale;
}
/**
* Getter for <code>public.v_camp.used_beds_female</code>.
*/
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();

View File

@ -230,26 +230,11 @@ public class TCampRecord extends UpdatableRecordImpl<TCampRecord> {
return (Integer) get(13);
}
/**
* Setter for <code>public.t_camp.blocked_beds_male</code>.
*/
public TCampRecord setBlockedBedsMale(Integer value) {
set(14, value);
return this;
}
/**
* Getter for <code>public.t_camp.blocked_beds_male</code>.
*/
public Integer getBlockedBedsMale() {
return (Integer) get(14);
}
/**
* Setter for <code>public.t_camp.blocked_beds_female</code>.
*/
public TCampRecord setBlockedBedsFemale(Integer value) {
set(15, value);
set(14, value);
return this;
}
@ -257,6 +242,21 @@ public class TCampRecord extends UpdatableRecordImpl<TCampRecord> {
* Getter for <code>public.t_camp.blocked_beds_female</code>.
*/
public Integer getBlockedBedsFemale() {
return (Integer) get(14);
}
/**
* Setter for <code>public.t_camp.blocked_beds_male</code>.
*/
public TCampRecord setBlockedBedsMale(Integer value) {
set(15, value);
return this;
}
/**
* Getter for <code>public.t_camp.blocked_beds_male</code>.
*/
public Integer getBlockedBedsMale() {
return (Integer) get(15);
}
@ -283,7 +283,7 @@ public class TCampRecord extends UpdatableRecordImpl<TCampRecord> {
/**
* 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<TCampRecord> {
setFkProfile(fkProfile);
setBedsMale(bedsMale);
setBedsFemale(bedsFemale);
setBlockedBedsMale(blockedBedsMale);
setBlockedBedsFemale(blockedBedsFemale);
setBlockedBedsMale(blockedBedsMale);
resetChangedOnNotNull();
}
@ -326,8 +326,8 @@ public class TCampRecord extends UpdatableRecordImpl<TCampRecord> {
setFkProfile(value.getFkProfile());
setBedsMale(value.getBedsMale());
setBedsFemale(value.getBedsFemale());
setBlockedBedsMale(value.getBlockedBedsMale());
setBlockedBedsFemale(value.getBlockedBedsFemale());
setBlockedBedsMale(value.getBlockedBedsMale());
resetChangedOnNotNull();
}
}

View File

@ -214,6 +214,96 @@ public class VCampRecord extends TableRecordImpl<VCampRecord> {
return (Integer) get(12);
}
/**
* Setter for <code>public.v_camp.beds_female</code>.
*/
public VCampRecord setBedsFemale(Integer value) {
set(13, value);
return this;
}
/**
* Getter for <code>public.v_camp.beds_female</code>.
*/
public Integer getBedsFemale() {
return (Integer) get(13);
}
/**
* Setter for <code>public.v_camp.beds_male</code>.
*/
public VCampRecord setBedsMale(Integer value) {
set(14, value);
return this;
}
/**
* Getter for <code>public.v_camp.beds_male</code>.
*/
public Integer getBedsMale() {
return (Integer) get(14);
}
/**
* Setter for <code>public.v_camp.blocked_beds_female</code>.
*/
public VCampRecord setBlockedBedsFemale(Integer value) {
set(15, value);
return this;
}
/**
* Getter for <code>public.v_camp.blocked_beds_female</code>.
*/
public Integer getBlockedBedsFemale() {
return (Integer) get(15);
}
/**
* Setter for <code>public.v_camp.blocked_beds_male</code>.
*/
public VCampRecord setBlockedBedsMale(Integer value) {
set(16, value);
return this;
}
/**
* Getter for <code>public.v_camp.blocked_beds_male</code>.
*/
public Integer getBlockedBedsMale() {
return (Integer) get(16);
}
/**
* Setter for <code>public.v_camp.used_beds_male</code>.
*/
public VCampRecord setUsedBedsMale(Long value) {
set(17, value);
return this;
}
/**
* Getter for <code>public.v_camp.used_beds_male</code>.
*/
public Long getUsedBedsMale() {
return (Long) get(17);
}
/**
* Setter for <code>public.v_camp.used_beds_female</code>.
*/
public VCampRecord setUsedBedsFemale(Long value) {
set(18, value);
return this;
}
/**
* Getter for <code>public.v_camp.used_beds_female</code>.
*/
public Long getUsedBedsFemale() {
return (Long) get(18);
}
// -------------------------------------------------------------------------
// Constructors
// -------------------------------------------------------------------------
@ -228,7 +318,7 @@ public class VCampRecord extends TableRecordImpl<VCampRecord> {
/**
* 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<VCampRecord> {
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<VCampRecord> {
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();
}
}

View File

@ -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
);

View File

@ -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;

View File

@ -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;