added relevant view for the daily summary: v_day

This commit is contained in:
Jörg Henke
2024-01-03 16:59:39 +01:00
parent 48ea140003
commit 677a8737fa
6 changed files with 455 additions and 2 deletions

View File

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

View File

@ -16,6 +16,7 @@ import de.jottyfan.timetrack.db.done.tables.TProject;
import de.jottyfan.timetrack.db.done.tables.TRequiredWorktime;
import de.jottyfan.timetrack.db.done.tables.VBilling;
import de.jottyfan.timetrack.db.done.tables.VCurrentOvertime;
import de.jottyfan.timetrack.db.done.tables.VDay;
import de.jottyfan.timetrack.db.done.tables.VDaylimit;
import de.jottyfan.timetrack.db.done.tables.VDaylimits;
import de.jottyfan.timetrack.db.done.tables.VDone;
@ -105,6 +106,11 @@ public class Done extends SchemaImpl {
*/
public final VCurrentOvertime V_CURRENT_OVERTIME = VCurrentOvertime.V_CURRENT_OVERTIME;
/**
* The table <code>done.v_day</code>.
*/
public final VDay V_DAY = VDay.V_DAY;
/**
* The table <code>done.v_daylimit</code>.
*/
@ -192,6 +198,7 @@ public class Done extends SchemaImpl {
TRequiredWorktime.T_REQUIRED_WORKTIME,
VBilling.V_BILLING,
VCurrentOvertime.V_CURRENT_OVERTIME,
VDay.V_DAY,
VDaylimit.V_DAYLIMIT,
VDaylimits.V_DAYLIMITS,
VDone.V_DONE,

View File

@ -15,6 +15,7 @@ import de.jottyfan.timetrack.db.done.tables.TProject;
import de.jottyfan.timetrack.db.done.tables.TRequiredWorktime;
import de.jottyfan.timetrack.db.done.tables.VBilling;
import de.jottyfan.timetrack.db.done.tables.VCurrentOvertime;
import de.jottyfan.timetrack.db.done.tables.VDay;
import de.jottyfan.timetrack.db.done.tables.VDaylimit;
import de.jottyfan.timetrack.db.done.tables.VDaylimits;
import de.jottyfan.timetrack.db.done.tables.VDone;
@ -90,6 +91,11 @@ public class Tables {
*/
public static final VCurrentOvertime V_CURRENT_OVERTIME = VCurrentOvertime.V_CURRENT_OVERTIME;
/**
* The table <code>done.v_day</code>.
*/
public static final VDay V_DAY = VDay.V_DAY;
/**
* The table <code>done.v_daylimit</code>.
*/

View File

@ -0,0 +1,177 @@
/*
* This file is generated by jOOQ.
*/
package de.jottyfan.timetrack.db.done.tables;
import de.jottyfan.timetrack.db.done.Done;
import de.jottyfan.timetrack.db.done.tables.records.VDayRecord;
import java.time.LocalDate;
import java.util.function.Function;
import org.jooq.Field;
import org.jooq.ForeignKey;
import org.jooq.Function5;
import org.jooq.Name;
import org.jooq.Record;
import org.jooq.Records;
import org.jooq.Row5;
import org.jooq.Schema;
import org.jooq.SelectField;
import org.jooq.Table;
import org.jooq.TableField;
import org.jooq.TableOptions;
import org.jooq.impl.DSL;
import org.jooq.impl.SQLDataType;
import org.jooq.impl.TableImpl;
import org.jooq.types.YearToSecond;
/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class VDay extends TableImpl<VDayRecord> {
private static final long serialVersionUID = 1L;
/**
* The reference instance of <code>done.v_day</code>
*/
public static final VDay V_DAY = new VDay();
/**
* The class holding records for this type
*/
@Override
public Class<VDayRecord> getRecordType() {
return VDayRecord.class;
}
/**
* The column <code>done.v_day.day</code>.
*/
public final TableField<VDayRecord, LocalDate> DAY = createField(DSL.name("day"), SQLDataType.LOCALDATE, this, "");
/**
* The column <code>done.v_day.worktime</code>.
*/
public final TableField<VDayRecord, YearToSecond> WORKTIME = createField(DSL.name("worktime"), SQLDataType.INTERVAL, this, "");
/**
* The column <code>done.v_day.breaktime</code>.
*/
public final TableField<VDayRecord, YearToSecond> BREAKTIME = createField(DSL.name("breaktime"), SQLDataType.INTERVAL, this, "");
/**
* The column <code>done.v_day.day_overtime</code>.
*/
public final TableField<VDayRecord, YearToSecond> DAY_OVERTIME = createField(DSL.name("day_overtime"), SQLDataType.INTERVAL, this, "");
/**
* The column <code>done.v_day.fk_login</code>.
*/
public final TableField<VDayRecord, Integer> FK_LOGIN = createField(DSL.name("fk_login"), SQLDataType.INTEGER, this, "");
private VDay(Name alias, Table<VDayRecord> aliased) {
this(alias, aliased, null);
}
private VDay(Name alias, Table<VDayRecord> aliased, Field<?>[] parameters) {
super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.view());
}
/**
* Create an aliased <code>done.v_day</code> table reference
*/
public VDay(String alias) {
this(DSL.name(alias), V_DAY);
}
/**
* Create an aliased <code>done.v_day</code> table reference
*/
public VDay(Name alias) {
this(alias, V_DAY);
}
/**
* Create a <code>done.v_day</code> table reference
*/
public VDay() {
this(DSL.name("v_day"), null);
}
public <O extends Record> VDay(Table<O> child, ForeignKey<O, VDayRecord> key) {
super(child, key, V_DAY);
}
@Override
public Schema getSchema() {
return aliased() ? null : Done.DONE;
}
@Override
public VDay as(String alias) {
return new VDay(DSL.name(alias), this);
}
@Override
public VDay as(Name alias) {
return new VDay(alias, this);
}
@Override
public VDay as(Table<?> alias) {
return new VDay(alias.getQualifiedName(), this);
}
/**
* Rename this table
*/
@Override
public VDay rename(String name) {
return new VDay(DSL.name(name), null);
}
/**
* Rename this table
*/
@Override
public VDay rename(Name name) {
return new VDay(name, null);
}
/**
* Rename this table
*/
@Override
public VDay rename(Table<?> name) {
return new VDay(name.getQualifiedName(), null);
}
// -------------------------------------------------------------------------
// Row5 type methods
// -------------------------------------------------------------------------
@Override
public Row5<LocalDate, YearToSecond, YearToSecond, YearToSecond, Integer> fieldsRow() {
return (Row5) super.fieldsRow();
}
/**
* Convenience mapping calling {@link SelectField#convertFrom(Function)}.
*/
public <U> SelectField<U> mapping(Function5<? super LocalDate, ? super YearToSecond, ? super YearToSecond, ? super YearToSecond, ? super Integer, ? extends U> from) {
return convertFrom(Records.mapping(from));
}
/**
* Convenience mapping calling {@link SelectField#convertFrom(Class,
* Function)}.
*/
public <U> SelectField<U> mapping(Class<U> toType, Function5<? super LocalDate, ? super YearToSecond, ? super YearToSecond, ? super YearToSecond, ? super Integer, ? extends U> from) {
return convertFrom(toType, Records.mapping(from));
}
}

View File

@ -0,0 +1,249 @@
/*
* This file is generated by jOOQ.
*/
package de.jottyfan.timetrack.db.done.tables.records;
import de.jottyfan.timetrack.db.done.tables.VDay;
import java.time.LocalDate;
import org.jooq.Field;
import org.jooq.Record5;
import org.jooq.Row5;
import org.jooq.impl.TableRecordImpl;
import org.jooq.types.YearToSecond;
/**
* This class is generated by jOOQ.
*/
@SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class VDayRecord extends TableRecordImpl<VDayRecord> implements Record5<LocalDate, YearToSecond, YearToSecond, YearToSecond, Integer> {
private static final long serialVersionUID = 1L;
/**
* Setter for <code>done.v_day.day</code>.
*/
public void setDay(LocalDate value) {
set(0, value);
}
/**
* Getter for <code>done.v_day.day</code>.
*/
public LocalDate getDay() {
return (LocalDate) get(0);
}
/**
* Setter for <code>done.v_day.worktime</code>.
*/
public void setWorktime(YearToSecond value) {
set(1, value);
}
/**
* Getter for <code>done.v_day.worktime</code>.
*/
public YearToSecond getWorktime() {
return (YearToSecond) get(1);
}
/**
* Setter for <code>done.v_day.breaktime</code>.
*/
public void setBreaktime(YearToSecond value) {
set(2, value);
}
/**
* Getter for <code>done.v_day.breaktime</code>.
*/
public YearToSecond getBreaktime() {
return (YearToSecond) get(2);
}
/**
* Setter for <code>done.v_day.day_overtime</code>.
*/
public void setDayOvertime(YearToSecond value) {
set(3, value);
}
/**
* Getter for <code>done.v_day.day_overtime</code>.
*/
public YearToSecond getDayOvertime() {
return (YearToSecond) get(3);
}
/**
* Setter for <code>done.v_day.fk_login</code>.
*/
public void setFkLogin(Integer value) {
set(4, value);
}
/**
* Getter for <code>done.v_day.fk_login</code>.
*/
public Integer getFkLogin() {
return (Integer) get(4);
}
// -------------------------------------------------------------------------
// Record5 type implementation
// -------------------------------------------------------------------------
@Override
public Row5<LocalDate, YearToSecond, YearToSecond, YearToSecond, Integer> fieldsRow() {
return (Row5) super.fieldsRow();
}
@Override
public Row5<LocalDate, YearToSecond, YearToSecond, YearToSecond, Integer> valuesRow() {
return (Row5) super.valuesRow();
}
@Override
public Field<LocalDate> field1() {
return VDay.V_DAY.DAY;
}
@Override
public Field<YearToSecond> field2() {
return VDay.V_DAY.WORKTIME;
}
@Override
public Field<YearToSecond> field3() {
return VDay.V_DAY.BREAKTIME;
}
@Override
public Field<YearToSecond> field4() {
return VDay.V_DAY.DAY_OVERTIME;
}
@Override
public Field<Integer> field5() {
return VDay.V_DAY.FK_LOGIN;
}
@Override
public LocalDate component1() {
return getDay();
}
@Override
public YearToSecond component2() {
return getWorktime();
}
@Override
public YearToSecond component3() {
return getBreaktime();
}
@Override
public YearToSecond component4() {
return getDayOvertime();
}
@Override
public Integer component5() {
return getFkLogin();
}
@Override
public LocalDate value1() {
return getDay();
}
@Override
public YearToSecond value2() {
return getWorktime();
}
@Override
public YearToSecond value3() {
return getBreaktime();
}
@Override
public YearToSecond value4() {
return getDayOvertime();
}
@Override
public Integer value5() {
return getFkLogin();
}
@Override
public VDayRecord value1(LocalDate value) {
setDay(value);
return this;
}
@Override
public VDayRecord value2(YearToSecond value) {
setWorktime(value);
return this;
}
@Override
public VDayRecord value3(YearToSecond value) {
setBreaktime(value);
return this;
}
@Override
public VDayRecord value4(YearToSecond value) {
setDayOvertime(value);
return this;
}
@Override
public VDayRecord value5(Integer value) {
setFkLogin(value);
return this;
}
@Override
public VDayRecord values(LocalDate value1, YearToSecond value2, YearToSecond value3, YearToSecond value4, Integer value5) {
value1(value1);
value2(value2);
value3(value3);
value4(value4);
value5(value5);
return this;
}
// -------------------------------------------------------------------------
// Constructors
// -------------------------------------------------------------------------
/**
* Create a detached VDayRecord
*/
public VDayRecord() {
super(VDay.V_DAY);
}
/**
* Create a detached, initialised VDayRecord
*/
public VDayRecord(LocalDate day, YearToSecond worktime, YearToSecond breaktime, YearToSecond dayOvertime, Integer fkLogin) {
super(VDay.V_DAY);
setDay(day);
setWorktime(worktime);
setBreaktime(breaktime);
setDayOvertime(dayOvertime);
setFkLogin(fkLogin);
resetChangedOnNotNull();
}
}

View File

@ -65,4 +65,18 @@ group by x.worktime_offset, x.fk_login;
grant select on done.v_current_overtime to timetrack;
create view done.v_version as select 20240103 as version;
create view done.v_day as
with x(dayworktime, day, fk_login, required, starttime, endtime) as (
select sum(d.dayworktime), d.day, d.fk_login, r.required,
min(d.daytime_from), max(d.daytime_until)
from done.v_daylimit d
left join done.t_required_worktime r on r.day = d.day and r.fk_login = d.fk_login
group by d.day, d.fk_login, r.required
) select day, dayworktime as worktime, endtime - starttime - dayworktime as breaktime,
dayworktime - required as day_overtime, fk_login
from x
order by day desc, fk_login;
grant select on done.v_day to timetrack;
create or replace view done.v_version as select 20240103 as version;