view optimization

This commit is contained in:
Jörg Henke
2024-01-03 15:41:43 +01:00
parent 871c678061
commit 48ea140003
4 changed files with 54 additions and 50 deletions

View File

@ -23,7 +23,7 @@ apply plugin: 'maven-publish'
apply plugin: 'eclipse'
group = 'de.jottyfan'
version = '20240103'
version = '20240103b'
def artifactId = 'timetrackjooq'
def versionNumber = version

View File

@ -8,6 +8,7 @@ import de.jottyfan.timetrack.db.done.Done;
import de.jottyfan.timetrack.db.done.tables.records.VDaylimitRecord;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.function.Function;
import org.jooq.Field;
@ -25,6 +26,7 @@ import org.jooq.TableOptions;
import org.jooq.impl.DSL;
import org.jooq.impl.SQLDataType;
import org.jooq.impl.TableImpl;
import org.jooq.types.YearToSecond;
/**
@ -51,22 +53,22 @@ public class VDaylimit extends TableImpl<VDaylimitRecord> {
/**
* The column <code>done.v_daylimit.daytime_from</code>.
*/
public final TableField<VDaylimitRecord, String> DAYTIME_FROM = createField(DSL.name("daytime_from"), SQLDataType.CLOB, this, "");
public final TableField<VDaylimitRecord, LocalTime> DAYTIME_FROM = createField(DSL.name("daytime_from"), SQLDataType.LOCALTIME(6), this, "");
/**
* The column <code>done.v_daylimit.daytime_until</code>.
*/
public final TableField<VDaylimitRecord, String> DAYTIME_UNTIL = createField(DSL.name("daytime_until"), SQLDataType.CLOB, this, "");
public final TableField<VDaylimitRecord, LocalTime> DAYTIME_UNTIL = createField(DSL.name("daytime_until"), SQLDataType.LOCALTIME(6), this, "");
/**
* The column <code>done.v_daylimit.dayworktime</code>.
*/
public final TableField<VDaylimitRecord, String> DAYWORKTIME = createField(DSL.name("dayworktime"), SQLDataType.CLOB, this, "");
public final TableField<VDaylimitRecord, LocalTime> DAYWORKTIME = createField(DSL.name("dayworktime"), SQLDataType.LOCALTIME(6), this, "");
/**
* The column <code>done.v_daylimit.breaks</code>.
*/
public final TableField<VDaylimitRecord, String> BREAKS = createField(DSL.name("breaks"), SQLDataType.CLOB, this, "");
public final TableField<VDaylimitRecord, YearToSecond> BREAKS = createField(DSL.name("breaks"), SQLDataType.INTERVAL, this, "");
/**
* The column <code>done.v_daylimit.day</code>.
@ -160,14 +162,14 @@ public class VDaylimit extends TableImpl<VDaylimitRecord> {
// -------------------------------------------------------------------------
@Override
public Row6<String, String, String, String, LocalDate, Integer> fieldsRow() {
public Row6<LocalTime, LocalTime, LocalTime, YearToSecond, LocalDate, Integer> fieldsRow() {
return (Row6) super.fieldsRow();
}
/**
* Convenience mapping calling {@link SelectField#convertFrom(Function)}.
*/
public <U> SelectField<U> mapping(Function6<? super String, ? super String, ? super String, ? super String, ? super LocalDate, ? super Integer, ? extends U> from) {
public <U> SelectField<U> mapping(Function6<? super LocalTime, ? super LocalTime, ? super LocalTime, ? super YearToSecond, ? super LocalDate, ? super Integer, ? extends U> from) {
return convertFrom(Records.mapping(from));
}
@ -175,7 +177,7 @@ public class VDaylimit extends TableImpl<VDaylimitRecord> {
* Convenience mapping calling {@link SelectField#convertFrom(Class,
* Function)}.
*/
public <U> SelectField<U> mapping(Class<U> toType, Function6<? super String, ? super String, ? super String, ? super String, ? super LocalDate, ? super Integer, ? extends U> from) {
public <U> SelectField<U> mapping(Class<U> toType, Function6<? super LocalTime, ? super LocalTime, ? super LocalTime, ? super YearToSecond, ? super LocalDate, ? super Integer, ? extends U> from) {
return convertFrom(toType, Records.mapping(from));
}
}

View File

@ -7,75 +7,77 @@ package de.jottyfan.timetrack.db.done.tables.records;
import de.jottyfan.timetrack.db.done.tables.VDaylimit;
import java.time.LocalDate;
import java.time.LocalTime;
import org.jooq.Field;
import org.jooq.Record6;
import org.jooq.Row6;
import org.jooq.impl.TableRecordImpl;
import org.jooq.types.YearToSecond;
/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class VDaylimitRecord extends TableRecordImpl<VDaylimitRecord> implements Record6<String, String, String, String, LocalDate, Integer> {
public class VDaylimitRecord extends TableRecordImpl<VDaylimitRecord> implements Record6<LocalTime, LocalTime, LocalTime, YearToSecond, LocalDate, Integer> {
private static final long serialVersionUID = 1L;
/**
* Setter for <code>done.v_daylimit.daytime_from</code>.
*/
public void setDaytimeFrom(String value) {
public void setDaytimeFrom(LocalTime value) {
set(0, value);
}
/**
* Getter for <code>done.v_daylimit.daytime_from</code>.
*/
public String getDaytimeFrom() {
return (String) get(0);
public LocalTime getDaytimeFrom() {
return (LocalTime) get(0);
}
/**
* Setter for <code>done.v_daylimit.daytime_until</code>.
*/
public void setDaytimeUntil(String value) {
public void setDaytimeUntil(LocalTime value) {
set(1, value);
}
/**
* Getter for <code>done.v_daylimit.daytime_until</code>.
*/
public String getDaytimeUntil() {
return (String) get(1);
public LocalTime getDaytimeUntil() {
return (LocalTime) get(1);
}
/**
* Setter for <code>done.v_daylimit.dayworktime</code>.
*/
public void setDayworktime(String value) {
public void setDayworktime(LocalTime value) {
set(2, value);
}
/**
* Getter for <code>done.v_daylimit.dayworktime</code>.
*/
public String getDayworktime() {
return (String) get(2);
public LocalTime getDayworktime() {
return (LocalTime) get(2);
}
/**
* Setter for <code>done.v_daylimit.breaks</code>.
*/
public void setBreaks(String value) {
public void setBreaks(YearToSecond value) {
set(3, value);
}
/**
* Getter for <code>done.v_daylimit.breaks</code>.
*/
public String getBreaks() {
return (String) get(3);
public YearToSecond getBreaks() {
return (YearToSecond) get(3);
}
/**
@ -111,32 +113,32 @@ public class VDaylimitRecord extends TableRecordImpl<VDaylimitRecord> implements
// -------------------------------------------------------------------------
@Override
public Row6<String, String, String, String, LocalDate, Integer> fieldsRow() {
public Row6<LocalTime, LocalTime, LocalTime, YearToSecond, LocalDate, Integer> fieldsRow() {
return (Row6) super.fieldsRow();
}
@Override
public Row6<String, String, String, String, LocalDate, Integer> valuesRow() {
public Row6<LocalTime, LocalTime, LocalTime, YearToSecond, LocalDate, Integer> valuesRow() {
return (Row6) super.valuesRow();
}
@Override
public Field<String> field1() {
public Field<LocalTime> field1() {
return VDaylimit.V_DAYLIMIT.DAYTIME_FROM;
}
@Override
public Field<String> field2() {
public Field<LocalTime> field2() {
return VDaylimit.V_DAYLIMIT.DAYTIME_UNTIL;
}
@Override
public Field<String> field3() {
public Field<LocalTime> field3() {
return VDaylimit.V_DAYLIMIT.DAYWORKTIME;
}
@Override
public Field<String> field4() {
public Field<YearToSecond> field4() {
return VDaylimit.V_DAYLIMIT.BREAKS;
}
@ -151,22 +153,22 @@ public class VDaylimitRecord extends TableRecordImpl<VDaylimitRecord> implements
}
@Override
public String component1() {
public LocalTime component1() {
return getDaytimeFrom();
}
@Override
public String component2() {
public LocalTime component2() {
return getDaytimeUntil();
}
@Override
public String component3() {
public LocalTime component3() {
return getDayworktime();
}
@Override
public String component4() {
public YearToSecond component4() {
return getBreaks();
}
@ -181,22 +183,22 @@ public class VDaylimitRecord extends TableRecordImpl<VDaylimitRecord> implements
}
@Override
public String value1() {
public LocalTime value1() {
return getDaytimeFrom();
}
@Override
public String value2() {
public LocalTime value2() {
return getDaytimeUntil();
}
@Override
public String value3() {
public LocalTime value3() {
return getDayworktime();
}
@Override
public String value4() {
public YearToSecond value4() {
return getBreaks();
}
@ -211,25 +213,25 @@ public class VDaylimitRecord extends TableRecordImpl<VDaylimitRecord> implements
}
@Override
public VDaylimitRecord value1(String value) {
public VDaylimitRecord value1(LocalTime value) {
setDaytimeFrom(value);
return this;
}
@Override
public VDaylimitRecord value2(String value) {
public VDaylimitRecord value2(LocalTime value) {
setDaytimeUntil(value);
return this;
}
@Override
public VDaylimitRecord value3(String value) {
public VDaylimitRecord value3(LocalTime value) {
setDayworktime(value);
return this;
}
@Override
public VDaylimitRecord value4(String value) {
public VDaylimitRecord value4(YearToSecond value) {
setBreaks(value);
return this;
}
@ -247,7 +249,7 @@ public class VDaylimitRecord extends TableRecordImpl<VDaylimitRecord> implements
}
@Override
public VDaylimitRecord values(String value1, String value2, String value3, String value4, LocalDate value5, Integer value6) {
public VDaylimitRecord values(LocalTime value1, LocalTime value2, LocalTime value3, YearToSecond value4, LocalDate value5, Integer value6) {
value1(value1);
value2(value2);
value3(value3);
@ -271,7 +273,7 @@ public class VDaylimitRecord extends TableRecordImpl<VDaylimitRecord> implements
/**
* Create a detached, initialised VDaylimitRecord
*/
public VDaylimitRecord(String daytimeFrom, String daytimeUntil, String dayworktime, String breaks, LocalDate day, Integer fkLogin) {
public VDaylimitRecord(LocalTime daytimeFrom, LocalTime daytimeUntil, LocalTime dayworktime, YearToSecond breaks, LocalDate day, Integer fkLogin) {
super(VDaylimit.V_DAYLIMIT);
setDaytimeFrom(daytimeFrom);

View File

@ -31,20 +31,20 @@ grant select,insert,update,delete on done.t_freetime to timetrack;
create view done.v_daylimit as
with x(dayworktime, day, fk_login) as (
select coalesce(time_until - time_from, '0'::interval),
to_char(time_from, 'DD.MM.YYYY')::date,
time_from,
fk_login
from done.t_done
), y(daytime_from, daytime_until, day, fk_login) as (
select min(time_from), max(time_until),
to_char(time_from, 'DD.MM.YYYY')::date,
time_from,
fk_login
from done.t_done
group by to_char(time_from, 'DD.MM.YYYY')::date, fk_login
) select to_char(y.daytime_from, 'HH24:MI') as daytime_from,
to_char(y.daytime_until, 'HH24:MI') as daytime_until,
to_char(sum(x.dayworktime), 'HH24:MI') as dayworktime,
to_char(y.daytime_until - y.daytime_from - sum(x.dayworktime), 'HH24:MI') as breaks,
to_char(y.day, 'DD.MM.YYYY')::date as day,
group by time_from, fk_login
) select y.daytime_from::time,
y.daytime_until::time,
sum(x.dayworktime)::time as dayworktime,
y.daytime_until - y.daytime_from - sum(x.dayworktime) as breaks,
y.day::date,
y.fk_login
from x
left join y on y.day = x.day and y.fk_login = x.fk_login
@ -54,7 +54,7 @@ with x(dayworktime, day, fk_login) as (
grant select on done.v_daylimit to timetrack;
create view done.v_current_overtime as
select x.worktime_offset + sum(l.dayworktime::time - r.required) as overtime,
select x.worktime_offset + sum(l.dayworktime - r.required) as overtime,
to_char(now(), 'DD.MM.YYYY HH24:MI') as impact,
x.fk_login
from done.t_overtime x