diff --git a/build.gradle b/build.gradle
index ceacc0b..ee84649 100644
--- a/build.gradle
+++ b/build.gradle
@@ -23,7 +23,7 @@ apply plugin: 'maven-publish'
apply plugin: 'eclipse'
group = 'de.jottyfan'
-version = '20260114'
+version = '20260119'
def artifactId = 'timetrackjooq'
def versionNumber = version
diff --git a/src/main/java/de/jottyfan/timetrack/db/project/Project.java b/src/main/java/de/jottyfan/timetrack/db/project/Project.java
index 27fd5ff..63ffd63 100644
--- a/src/main/java/de/jottyfan/timetrack/db/project/Project.java
+++ b/src/main/java/de/jottyfan/timetrack/db/project/Project.java
@@ -13,6 +13,9 @@ import de.jottyfan.timetrack.db.project.tables.TProject;
import de.jottyfan.timetrack.db.project.tables.TWorkpackage;
import de.jottyfan.timetrack.db.project.tables.TWorkpackageApp;
import de.jottyfan.timetrack.db.project.tables.VBundleApps;
+import de.jottyfan.timetrack.db.project.tables.VExcelApp;
+import de.jottyfan.timetrack.db.project.tables.VExcelWorkpackage;
+import de.jottyfan.timetrack.db.project.tables.VExcelWorkpackageApp;
import java.util.Arrays;
import java.util.List;
@@ -75,6 +78,21 @@ public class Project extends SchemaImpl {
*/
public final VBundleApps V_BUNDLE_APPS = VBundleApps.V_BUNDLE_APPS;
+ /**
+ * The table project.v_excel_app.
+ */
+ public final VExcelApp V_EXCEL_APP = VExcelApp.V_EXCEL_APP;
+
+ /**
+ * The table project.v_excel_workpackage.
+ */
+ public final VExcelWorkpackage V_EXCEL_WORKPACKAGE = VExcelWorkpackage.V_EXCEL_WORKPACKAGE;
+
+ /**
+ * The table project.v_excel_workpackage_app.
+ */
+ public final VExcelWorkpackageApp V_EXCEL_WORKPACKAGE_APP = VExcelWorkpackageApp.V_EXCEL_WORKPACKAGE_APP;
+
/**
* No further instances allowed
*/
@@ -98,7 +116,10 @@ public class Project extends SchemaImpl {
TProject.T_PROJECT,
TWorkpackage.T_WORKPACKAGE,
TWorkpackageApp.T_WORKPACKAGE_APP,
- VBundleApps.V_BUNDLE_APPS
+ VBundleApps.V_BUNDLE_APPS,
+ VExcelApp.V_EXCEL_APP,
+ VExcelWorkpackage.V_EXCEL_WORKPACKAGE,
+ VExcelWorkpackageApp.V_EXCEL_WORKPACKAGE_APP
);
}
}
diff --git a/src/main/java/de/jottyfan/timetrack/db/project/Tables.java b/src/main/java/de/jottyfan/timetrack/db/project/Tables.java
index 6cc628a..6ab6e2c 100644
--- a/src/main/java/de/jottyfan/timetrack/db/project/Tables.java
+++ b/src/main/java/de/jottyfan/timetrack/db/project/Tables.java
@@ -12,6 +12,9 @@ import de.jottyfan.timetrack.db.project.tables.TProject;
import de.jottyfan.timetrack.db.project.tables.TWorkpackage;
import de.jottyfan.timetrack.db.project.tables.TWorkpackageApp;
import de.jottyfan.timetrack.db.project.tables.VBundleApps;
+import de.jottyfan.timetrack.db.project.tables.VExcelApp;
+import de.jottyfan.timetrack.db.project.tables.VExcelWorkpackage;
+import de.jottyfan.timetrack.db.project.tables.VExcelWorkpackageApp;
/**
@@ -59,4 +62,19 @@ public class Tables {
* The table project.v_bundle_apps.
*/
public static final VBundleApps V_BUNDLE_APPS = VBundleApps.V_BUNDLE_APPS;
+
+ /**
+ * The table project.v_excel_app.
+ */
+ public static final VExcelApp V_EXCEL_APP = VExcelApp.V_EXCEL_APP;
+
+ /**
+ * The table project.v_excel_workpackage.
+ */
+ public static final VExcelWorkpackage V_EXCEL_WORKPACKAGE = VExcelWorkpackage.V_EXCEL_WORKPACKAGE;
+
+ /**
+ * The table project.v_excel_workpackage_app.
+ */
+ public static final VExcelWorkpackageApp V_EXCEL_WORKPACKAGE_APP = VExcelWorkpackageApp.V_EXCEL_WORKPACKAGE_APP;
}
diff --git a/src/main/java/de/jottyfan/timetrack/db/project/tables/VExcelApp.java b/src/main/java/de/jottyfan/timetrack/db/project/tables/VExcelApp.java
new file mode 100644
index 0000000..cb51708
--- /dev/null
+++ b/src/main/java/de/jottyfan/timetrack/db/project/tables/VExcelApp.java
@@ -0,0 +1,264 @@
+/*
+ * This file is generated by jOOQ.
+ */
+package de.jottyfan.timetrack.db.project.tables;
+
+
+import de.jottyfan.timetrack.db.project.Project;
+import de.jottyfan.timetrack.db.project.tables.records.VExcelAppRecord;
+
+import java.util.Collection;
+
+import org.jooq.Condition;
+import org.jooq.Field;
+import org.jooq.Name;
+import org.jooq.PlainSQL;
+import org.jooq.QueryPart;
+import org.jooq.SQL;
+import org.jooq.Schema;
+import org.jooq.Select;
+import org.jooq.Stringly;
+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;
+
+
+/**
+ * This class is generated by jOOQ.
+ */
+@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" })
+public class VExcelApp extends TableImpl {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * The reference instance of project.v_excel_app
+ */
+ public static final VExcelApp V_EXCEL_APP = new VExcelApp();
+
+ /**
+ * The class holding records for this type
+ */
+ @Override
+ public Class getRecordType() {
+ return VExcelAppRecord.class;
+ }
+
+ /**
+ * The column project.v_excel_app.app_id.
+ */
+ public final TableField APP_ID = createField(DSL.name("app_id"), SQLDataType.INTEGER, this, "");
+
+ /**
+ * The column project.v_excel_app.bundle_name.
+ */
+ public final TableField BUNDLE_NAME = createField(DSL.name("bundle_name"), SQLDataType.CLOB, this, "");
+
+ /**
+ * The column project.v_excel_app.bundle_description.
+ */
+ public final TableField BUNDLE_DESCRIPTION = createField(DSL.name("bundle_description"), SQLDataType.CLOB, this, "");
+
+ /**
+ * The column project.v_excel_app.basic_functionality.
+ */
+ public final TableField BASIC_FUNCTIONALITY = createField(DSL.name("basic_functionality"), SQLDataType.CLOB, this, "");
+
+ /**
+ * The column project.v_excel_app.name.
+ */
+ public final TableField NAME = createField(DSL.name("name"), SQLDataType.CLOB, this, "");
+
+ /**
+ * The column project.v_excel_app.description.
+ */
+ public final TableField DESCRIPTION = createField(DSL.name("description"), SQLDataType.CLOB, this, "");
+
+ /**
+ * The column project.v_excel_app.replaced_by_app_with_id.
+ */
+ public final TableField REPLACED_BY_APP_WITH_ID = createField(DSL.name("replaced_by_app_with_id"), SQLDataType.INTEGER, this, "");
+
+ /**
+ * The column project.v_excel_app.repository_url.
+ */
+ public final TableField REPOSITORY_URL = createField(DSL.name("repository_url"), SQLDataType.CLOB, this, "");
+
+ /**
+ * The column project.v_excel_app.orphan.
+ */
+ public final TableField ORPHAN = createField(DSL.name("orphan"), SQLDataType.BOOLEAN, this, "");
+
+ private VExcelApp(Name alias, Table aliased) {
+ this(alias, aliased, (Field>[]) null, null);
+ }
+
+ private VExcelApp(Name alias, Table aliased, Field>[] parameters, Condition where) {
+ super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.view("""
+ create view "v_excel_app" as SELECT a.pk_app AS app_id,
+ b.name AS bundle_name,
+ b.description AS bundle_description,
+ a.basic_functionality,
+ a.name,
+ a.description,
+ a.fk_replaced_by_app AS replaced_by_app_with_id,
+ a.repository_url,
+ (wa.pk_workpackage_app IS NULL) AS orphan
+ FROM ((project.t_app a
+ LEFT JOIN project.t_bundle b ON ((b.pk_bundle = a.fk_bundle)))
+ LEFT JOIN project.t_workpackage_app wa ON ((wa.fk_app = a.pk_app)));
+ """), where);
+ }
+
+ /**
+ * Create an aliased project.v_excel_app table reference
+ */
+ public VExcelApp(String alias) {
+ this(DSL.name(alias), V_EXCEL_APP);
+ }
+
+ /**
+ * Create an aliased project.v_excel_app table reference
+ */
+ public VExcelApp(Name alias) {
+ this(alias, V_EXCEL_APP);
+ }
+
+ /**
+ * Create a project.v_excel_app table reference
+ */
+ public VExcelApp() {
+ this(DSL.name("v_excel_app"), null);
+ }
+
+ @Override
+ public Schema getSchema() {
+ return aliased() ? null : Project.PROJECT;
+ }
+
+ @Override
+ public VExcelApp as(String alias) {
+ return new VExcelApp(DSL.name(alias), this);
+ }
+
+ @Override
+ public VExcelApp as(Name alias) {
+ return new VExcelApp(alias, this);
+ }
+
+ @Override
+ public VExcelApp as(Table> alias) {
+ return new VExcelApp(alias.getQualifiedName(), this);
+ }
+
+ /**
+ * Rename this table
+ */
+ @Override
+ public VExcelApp rename(String name) {
+ return new VExcelApp(DSL.name(name), null);
+ }
+
+ /**
+ * Rename this table
+ */
+ @Override
+ public VExcelApp rename(Name name) {
+ return new VExcelApp(name, null);
+ }
+
+ /**
+ * Rename this table
+ */
+ @Override
+ public VExcelApp rename(Table> name) {
+ return new VExcelApp(name.getQualifiedName(), null);
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ public VExcelApp where(Condition condition) {
+ return new VExcelApp(getQualifiedName(), aliased() ? this : null, null, condition);
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ public VExcelApp where(Collection extends Condition> conditions) {
+ return where(DSL.and(conditions));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ public VExcelApp where(Condition... conditions) {
+ return where(DSL.and(conditions));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ public VExcelApp where(Field condition) {
+ return where(DSL.condition(condition));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ @PlainSQL
+ public VExcelApp where(SQL condition) {
+ return where(DSL.condition(condition));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ @PlainSQL
+ public VExcelApp where(@Stringly.SQL String condition) {
+ return where(DSL.condition(condition));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ @PlainSQL
+ public VExcelApp where(@Stringly.SQL String condition, Object... binds) {
+ return where(DSL.condition(condition, binds));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ @PlainSQL
+ public VExcelApp where(@Stringly.SQL String condition, QueryPart... parts) {
+ return where(DSL.condition(condition, parts));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ public VExcelApp whereExists(Select> select) {
+ return where(DSL.exists(select));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ public VExcelApp whereNotExists(Select> select) {
+ return where(DSL.notExists(select));
+ }
+}
diff --git a/src/main/java/de/jottyfan/timetrack/db/project/tables/VExcelWorkpackage.java b/src/main/java/de/jottyfan/timetrack/db/project/tables/VExcelWorkpackage.java
new file mode 100644
index 0000000..e2cc0e0
--- /dev/null
+++ b/src/main/java/de/jottyfan/timetrack/db/project/tables/VExcelWorkpackage.java
@@ -0,0 +1,280 @@
+/*
+ * This file is generated by jOOQ.
+ */
+package de.jottyfan.timetrack.db.project.tables;
+
+
+import de.jottyfan.timetrack.db.project.Project;
+import de.jottyfan.timetrack.db.project.tables.records.VExcelWorkpackageRecord;
+
+import java.time.LocalDate;
+import java.util.Collection;
+
+import org.jooq.Condition;
+import org.jooq.Field;
+import org.jooq.Name;
+import org.jooq.PlainSQL;
+import org.jooq.QueryPart;
+import org.jooq.SQL;
+import org.jooq.Schema;
+import org.jooq.Select;
+import org.jooq.Stringly;
+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;
+
+
+/**
+ * This class is generated by jOOQ.
+ */
+@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" })
+public class VExcelWorkpackage extends TableImpl {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * The reference instance of project.v_excel_workpackage
+ */
+ public static final VExcelWorkpackage V_EXCEL_WORKPACKAGE = new VExcelWorkpackage();
+
+ /**
+ * The class holding records for this type
+ */
+ @Override
+ public Class getRecordType() {
+ return VExcelWorkpackageRecord.class;
+ }
+
+ /**
+ * The column project.v_excel_workpackage.project_id.
+ */
+ public final TableField PROJECT_ID = createField(DSL.name("project_id"), SQLDataType.INTEGER, this, "");
+
+ /**
+ * The column project.v_excel_workpackage.project_name.
+ */
+ public final TableField PROJECT_NAME = createField(DSL.name("project_name"), SQLDataType.CLOB, this, "");
+
+ /**
+ * The column project.v_excel_workpackage.project_description.
+ */
+ public final TableField PROJECT_DESCRIPTION = createField(DSL.name("project_description"), SQLDataType.CLOB, this, "");
+
+ /**
+ * The column project.v_excel_workpackage.funder_name.
+ */
+ public final TableField FUNDER_NAME = createField(DSL.name("funder_name"), SQLDataType.CLOB, this, "");
+
+ /**
+ * The column project.v_excel_workpackage.funder_description.
+ */
+ public final TableField FUNDER_DESCRIPTION = createField(DSL.name("funder_description"), SQLDataType.CLOB, this, "");
+
+ /**
+ * The column project.v_excel_workpackage.workpackage_id.
+ */
+ public final TableField WORKPACKAGE_ID = createField(DSL.name("workpackage_id"), SQLDataType.INTEGER, this, "");
+
+ /**
+ * The column project.v_excel_workpackage.workpackage_name.
+ */
+ public final TableField WORKPACKAGE_NAME = createField(DSL.name("workpackage_name"), SQLDataType.CLOB, this, "");
+
+ /**
+ * The column
+ * project.v_excel_workpackage.workpackage_description.
+ */
+ public final TableField WORKPACKAGE_DESCRIPTION = createField(DSL.name("workpackage_description"), SQLDataType.CLOB, this, "");
+
+ /**
+ * The column project.v_excel_workpackage.contract_url.
+ */
+ public final TableField CONTRACT_URL = createField(DSL.name("contract_url"), SQLDataType.CLOB, this, "");
+
+ /**
+ * The column project.v_excel_workpackage.milestone_url.
+ */
+ public final TableField MILESTONE_URL = createField(DSL.name("milestone_url"), SQLDataType.CLOB, this, "");
+
+ /**
+ * The column project.v_excel_workpackage.planned_duedate.
+ */
+ public final TableField PLANNED_DUEDATE = createField(DSL.name("planned_duedate"), SQLDataType.LOCALDATE, this, "");
+
+ private VExcelWorkpackage(Name alias, Table aliased) {
+ this(alias, aliased, (Field>[]) null, null);
+ }
+
+ private VExcelWorkpackage(Name alias, Table aliased, Field>[] parameters, Condition where) {
+ super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.view("""
+ create view "v_excel_workpackage" as SELECT p.pk_project AS project_id,
+ p.name AS project_name,
+ p.description AS project_description,
+ f.name AS funder_name,
+ f.description AS funder_description,
+ w.pk_workpackage AS workpackage_id,
+ w.name AS workpackage_name,
+ w.description AS workpackage_description,
+ w.contract_url,
+ w.milestone_url,
+ w.planned_duedate
+ FROM ((project.t_project p
+ LEFT JOIN project.t_funder f ON ((f.pk_funder = p.fk_funder)))
+ LEFT JOIN project.t_workpackage w ON ((w.fk_project = p.pk_project)));
+ """), where);
+ }
+
+ /**
+ * Create an aliased project.v_excel_workpackage table
+ * reference
+ */
+ public VExcelWorkpackage(String alias) {
+ this(DSL.name(alias), V_EXCEL_WORKPACKAGE);
+ }
+
+ /**
+ * Create an aliased project.v_excel_workpackage table
+ * reference
+ */
+ public VExcelWorkpackage(Name alias) {
+ this(alias, V_EXCEL_WORKPACKAGE);
+ }
+
+ /**
+ * Create a project.v_excel_workpackage table reference
+ */
+ public VExcelWorkpackage() {
+ this(DSL.name("v_excel_workpackage"), null);
+ }
+
+ @Override
+ public Schema getSchema() {
+ return aliased() ? null : Project.PROJECT;
+ }
+
+ @Override
+ public VExcelWorkpackage as(String alias) {
+ return new VExcelWorkpackage(DSL.name(alias), this);
+ }
+
+ @Override
+ public VExcelWorkpackage as(Name alias) {
+ return new VExcelWorkpackage(alias, this);
+ }
+
+ @Override
+ public VExcelWorkpackage as(Table> alias) {
+ return new VExcelWorkpackage(alias.getQualifiedName(), this);
+ }
+
+ /**
+ * Rename this table
+ */
+ @Override
+ public VExcelWorkpackage rename(String name) {
+ return new VExcelWorkpackage(DSL.name(name), null);
+ }
+
+ /**
+ * Rename this table
+ */
+ @Override
+ public VExcelWorkpackage rename(Name name) {
+ return new VExcelWorkpackage(name, null);
+ }
+
+ /**
+ * Rename this table
+ */
+ @Override
+ public VExcelWorkpackage rename(Table> name) {
+ return new VExcelWorkpackage(name.getQualifiedName(), null);
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ public VExcelWorkpackage where(Condition condition) {
+ return new VExcelWorkpackage(getQualifiedName(), aliased() ? this : null, null, condition);
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ public VExcelWorkpackage where(Collection extends Condition> conditions) {
+ return where(DSL.and(conditions));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ public VExcelWorkpackage where(Condition... conditions) {
+ return where(DSL.and(conditions));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ public VExcelWorkpackage where(Field condition) {
+ return where(DSL.condition(condition));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ @PlainSQL
+ public VExcelWorkpackage where(SQL condition) {
+ return where(DSL.condition(condition));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ @PlainSQL
+ public VExcelWorkpackage where(@Stringly.SQL String condition) {
+ return where(DSL.condition(condition));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ @PlainSQL
+ public VExcelWorkpackage where(@Stringly.SQL String condition, Object... binds) {
+ return where(DSL.condition(condition, binds));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ @PlainSQL
+ public VExcelWorkpackage where(@Stringly.SQL String condition, QueryPart... parts) {
+ return where(DSL.condition(condition, parts));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ public VExcelWorkpackage whereExists(Select> select) {
+ return where(DSL.exists(select));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ public VExcelWorkpackage whereNotExists(Select> select) {
+ return where(DSL.notExists(select));
+ }
+}
diff --git a/src/main/java/de/jottyfan/timetrack/db/project/tables/VExcelWorkpackageApp.java b/src/main/java/de/jottyfan/timetrack/db/project/tables/VExcelWorkpackageApp.java
new file mode 100644
index 0000000..800d989
--- /dev/null
+++ b/src/main/java/de/jottyfan/timetrack/db/project/tables/VExcelWorkpackageApp.java
@@ -0,0 +1,243 @@
+/*
+ * This file is generated by jOOQ.
+ */
+package de.jottyfan.timetrack.db.project.tables;
+
+
+import de.jottyfan.timetrack.db.project.Project;
+import de.jottyfan.timetrack.db.project.tables.records.VExcelWorkpackageAppRecord;
+
+import java.util.Collection;
+
+import org.jooq.Condition;
+import org.jooq.Field;
+import org.jooq.Name;
+import org.jooq.PlainSQL;
+import org.jooq.QueryPart;
+import org.jooq.SQL;
+import org.jooq.Schema;
+import org.jooq.Select;
+import org.jooq.Stringly;
+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;
+
+
+/**
+ * This class is generated by jOOQ.
+ */
+@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" })
+public class VExcelWorkpackageApp extends TableImpl {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * The reference instance of project.v_excel_workpackage_app
+ */
+ public static final VExcelWorkpackageApp V_EXCEL_WORKPACKAGE_APP = new VExcelWorkpackageApp();
+
+ /**
+ * The class holding records for this type
+ */
+ @Override
+ public Class getRecordType() {
+ return VExcelWorkpackageAppRecord.class;
+ }
+
+ /**
+ * The column
+ * project.v_excel_workpackage_app.workpackage_app_id.
+ */
+ public final TableField WORKPACKAGE_APP_ID = createField(DSL.name("workpackage_app_id"), SQLDataType.INTEGER, this, "");
+
+ /**
+ * The column project.v_excel_workpackage_app.workpackage_name.
+ */
+ public final TableField WORKPACKAGE_NAME = createField(DSL.name("workpackage_name"), SQLDataType.CLOB, this, "");
+
+ /**
+ * The column project.v_excel_workpackage_app.app_name.
+ */
+ public final TableField APP_NAME = createField(DSL.name("app_name"), SQLDataType.CLOB, this, "");
+
+ /**
+ * The column project.v_excel_workpackage_app.workpackage_id.
+ */
+ public final TableField WORKPACKAGE_ID = createField(DSL.name("workpackage_id"), SQLDataType.INTEGER, this, "");
+
+ /**
+ * The column project.v_excel_workpackage_app.app_id.
+ */
+ public final TableField APP_ID = createField(DSL.name("app_id"), SQLDataType.INTEGER, this, "");
+
+ private VExcelWorkpackageApp(Name alias, Table aliased) {
+ this(alias, aliased, (Field>[]) null, null);
+ }
+
+ private VExcelWorkpackageApp(Name alias, Table aliased, Field>[] parameters, Condition where) {
+ super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.view("""
+ create view "v_excel_workpackage_app" as SELECT wa.pk_workpackage_app AS workpackage_app_id,
+ w.name AS workpackage_name,
+ a.name AS app_name,
+ w.pk_workpackage AS workpackage_id,
+ a.pk_app AS app_id
+ FROM ((project.t_workpackage_app wa
+ LEFT JOIN project.t_workpackage w ON ((w.pk_workpackage = wa.fk_workpackage)))
+ LEFT JOIN project.t_app a ON ((a.pk_app = wa.fk_app)));
+ """), where);
+ }
+
+ /**
+ * Create an aliased project.v_excel_workpackage_app table
+ * reference
+ */
+ public VExcelWorkpackageApp(String alias) {
+ this(DSL.name(alias), V_EXCEL_WORKPACKAGE_APP);
+ }
+
+ /**
+ * Create an aliased project.v_excel_workpackage_app table
+ * reference
+ */
+ public VExcelWorkpackageApp(Name alias) {
+ this(alias, V_EXCEL_WORKPACKAGE_APP);
+ }
+
+ /**
+ * Create a project.v_excel_workpackage_app table reference
+ */
+ public VExcelWorkpackageApp() {
+ this(DSL.name("v_excel_workpackage_app"), null);
+ }
+
+ @Override
+ public Schema getSchema() {
+ return aliased() ? null : Project.PROJECT;
+ }
+
+ @Override
+ public VExcelWorkpackageApp as(String alias) {
+ return new VExcelWorkpackageApp(DSL.name(alias), this);
+ }
+
+ @Override
+ public VExcelWorkpackageApp as(Name alias) {
+ return new VExcelWorkpackageApp(alias, this);
+ }
+
+ @Override
+ public VExcelWorkpackageApp as(Table> alias) {
+ return new VExcelWorkpackageApp(alias.getQualifiedName(), this);
+ }
+
+ /**
+ * Rename this table
+ */
+ @Override
+ public VExcelWorkpackageApp rename(String name) {
+ return new VExcelWorkpackageApp(DSL.name(name), null);
+ }
+
+ /**
+ * Rename this table
+ */
+ @Override
+ public VExcelWorkpackageApp rename(Name name) {
+ return new VExcelWorkpackageApp(name, null);
+ }
+
+ /**
+ * Rename this table
+ */
+ @Override
+ public VExcelWorkpackageApp rename(Table> name) {
+ return new VExcelWorkpackageApp(name.getQualifiedName(), null);
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ public VExcelWorkpackageApp where(Condition condition) {
+ return new VExcelWorkpackageApp(getQualifiedName(), aliased() ? this : null, null, condition);
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ public VExcelWorkpackageApp where(Collection extends Condition> conditions) {
+ return where(DSL.and(conditions));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ public VExcelWorkpackageApp where(Condition... conditions) {
+ return where(DSL.and(conditions));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ public VExcelWorkpackageApp where(Field condition) {
+ return where(DSL.condition(condition));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ @PlainSQL
+ public VExcelWorkpackageApp where(SQL condition) {
+ return where(DSL.condition(condition));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ @PlainSQL
+ public VExcelWorkpackageApp where(@Stringly.SQL String condition) {
+ return where(DSL.condition(condition));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ @PlainSQL
+ public VExcelWorkpackageApp where(@Stringly.SQL String condition, Object... binds) {
+ return where(DSL.condition(condition, binds));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ @PlainSQL
+ public VExcelWorkpackageApp where(@Stringly.SQL String condition, QueryPart... parts) {
+ return where(DSL.condition(condition, parts));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ public VExcelWorkpackageApp whereExists(Select> select) {
+ return where(DSL.exists(select));
+ }
+
+ /**
+ * Create an inline derived table from this table
+ */
+ @Override
+ public VExcelWorkpackageApp whereNotExists(Select> select) {
+ return where(DSL.notExists(select));
+ }
+}
diff --git a/src/main/java/de/jottyfan/timetrack/db/project/tables/records/VExcelAppRecord.java b/src/main/java/de/jottyfan/timetrack/db/project/tables/records/VExcelAppRecord.java
new file mode 100644
index 0000000..81c0c41
--- /dev/null
+++ b/src/main/java/de/jottyfan/timetrack/db/project/tables/records/VExcelAppRecord.java
@@ -0,0 +1,174 @@
+/*
+ * This file is generated by jOOQ.
+ */
+package de.jottyfan.timetrack.db.project.tables.records;
+
+
+import de.jottyfan.timetrack.db.project.tables.VExcelApp;
+
+import org.jooq.impl.TableRecordImpl;
+
+
+/**
+ * This class is generated by jOOQ.
+ */
+@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" })
+public class VExcelAppRecord extends TableRecordImpl {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Setter for project.v_excel_app.app_id.
+ */
+ public void setAppId(Integer value) {
+ set(0, value);
+ }
+
+ /**
+ * Getter for project.v_excel_app.app_id.
+ */
+ public Integer getAppId() {
+ return (Integer) get(0);
+ }
+
+ /**
+ * Setter for project.v_excel_app.bundle_name.
+ */
+ public void setBundleName(String value) {
+ set(1, value);
+ }
+
+ /**
+ * Getter for project.v_excel_app.bundle_name.
+ */
+ public String getBundleName() {
+ return (String) get(1);
+ }
+
+ /**
+ * Setter for project.v_excel_app.bundle_description.
+ */
+ public void setBundleDescription(String value) {
+ set(2, value);
+ }
+
+ /**
+ * Getter for project.v_excel_app.bundle_description.
+ */
+ public String getBundleDescription() {
+ return (String) get(2);
+ }
+
+ /**
+ * Setter for project.v_excel_app.basic_functionality.
+ */
+ public void setBasicFunctionality(String value) {
+ set(3, value);
+ }
+
+ /**
+ * Getter for project.v_excel_app.basic_functionality.
+ */
+ public String getBasicFunctionality() {
+ return (String) get(3);
+ }
+
+ /**
+ * Setter for project.v_excel_app.name.
+ */
+ public void setName(String value) {
+ set(4, value);
+ }
+
+ /**
+ * Getter for project.v_excel_app.name.
+ */
+ public String getName() {
+ return (String) get(4);
+ }
+
+ /**
+ * Setter for project.v_excel_app.description.
+ */
+ public void setDescription(String value) {
+ set(5, value);
+ }
+
+ /**
+ * Getter for project.v_excel_app.description.
+ */
+ public String getDescription() {
+ return (String) get(5);
+ }
+
+ /**
+ * Setter for project.v_excel_app.replaced_by_app_with_id.
+ */
+ public void setReplacedByAppWithId(Integer value) {
+ set(6, value);
+ }
+
+ /**
+ * Getter for project.v_excel_app.replaced_by_app_with_id.
+ */
+ public Integer getReplacedByAppWithId() {
+ return (Integer) get(6);
+ }
+
+ /**
+ * Setter for project.v_excel_app.repository_url.
+ */
+ public void setRepositoryUrl(String value) {
+ set(7, value);
+ }
+
+ /**
+ * Getter for project.v_excel_app.repository_url.
+ */
+ public String getRepositoryUrl() {
+ return (String) get(7);
+ }
+
+ /**
+ * Setter for project.v_excel_app.orphan.
+ */
+ public void setOrphan(Boolean value) {
+ set(8, value);
+ }
+
+ /**
+ * Getter for project.v_excel_app.orphan.
+ */
+ public Boolean getOrphan() {
+ return (Boolean) get(8);
+ }
+
+ // -------------------------------------------------------------------------
+ // Constructors
+ // -------------------------------------------------------------------------
+
+ /**
+ * Create a detached VExcelAppRecord
+ */
+ public VExcelAppRecord() {
+ super(VExcelApp.V_EXCEL_APP);
+ }
+
+ /**
+ * Create a detached, initialised VExcelAppRecord
+ */
+ public VExcelAppRecord(Integer appId, String bundleName, String bundleDescription, String basicFunctionality, String name, String description, Integer replacedByAppWithId, String repositoryUrl, Boolean orphan) {
+ super(VExcelApp.V_EXCEL_APP);
+
+ setAppId(appId);
+ setBundleName(bundleName);
+ setBundleDescription(bundleDescription);
+ setBasicFunctionality(basicFunctionality);
+ setName(name);
+ setDescription(description);
+ setReplacedByAppWithId(replacedByAppWithId);
+ setRepositoryUrl(repositoryUrl);
+ setOrphan(orphan);
+ resetChangedOnNotNull();
+ }
+}
diff --git a/src/main/java/de/jottyfan/timetrack/db/project/tables/records/VExcelWorkpackageAppRecord.java b/src/main/java/de/jottyfan/timetrack/db/project/tables/records/VExcelWorkpackageAppRecord.java
new file mode 100644
index 0000000..e7acc16
--- /dev/null
+++ b/src/main/java/de/jottyfan/timetrack/db/project/tables/records/VExcelWorkpackageAppRecord.java
@@ -0,0 +1,116 @@
+/*
+ * This file is generated by jOOQ.
+ */
+package de.jottyfan.timetrack.db.project.tables.records;
+
+
+import de.jottyfan.timetrack.db.project.tables.VExcelWorkpackageApp;
+
+import org.jooq.impl.TableRecordImpl;
+
+
+/**
+ * This class is generated by jOOQ.
+ */
+@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" })
+public class VExcelWorkpackageAppRecord extends TableRecordImpl {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Setter for
+ * project.v_excel_workpackage_app.workpackage_app_id.
+ */
+ public void setWorkpackageAppId(Integer value) {
+ set(0, value);
+ }
+
+ /**
+ * Getter for
+ * project.v_excel_workpackage_app.workpackage_app_id.
+ */
+ public Integer getWorkpackageAppId() {
+ return (Integer) get(0);
+ }
+
+ /**
+ * Setter for project.v_excel_workpackage_app.workpackage_name.
+ */
+ public void setWorkpackageName(String value) {
+ set(1, value);
+ }
+
+ /**
+ * Getter for project.v_excel_workpackage_app.workpackage_name.
+ */
+ public String getWorkpackageName() {
+ return (String) get(1);
+ }
+
+ /**
+ * Setter for project.v_excel_workpackage_app.app_name.
+ */
+ public void setAppName(String value) {
+ set(2, value);
+ }
+
+ /**
+ * Getter for project.v_excel_workpackage_app.app_name.
+ */
+ public String getAppName() {
+ return (String) get(2);
+ }
+
+ /**
+ * Setter for project.v_excel_workpackage_app.workpackage_id.
+ */
+ public void setWorkpackageId(Integer value) {
+ set(3, value);
+ }
+
+ /**
+ * Getter for project.v_excel_workpackage_app.workpackage_id.
+ */
+ public Integer getWorkpackageId() {
+ return (Integer) get(3);
+ }
+
+ /**
+ * Setter for project.v_excel_workpackage_app.app_id.
+ */
+ public void setAppId(Integer value) {
+ set(4, value);
+ }
+
+ /**
+ * Getter for project.v_excel_workpackage_app.app_id.
+ */
+ public Integer getAppId() {
+ return (Integer) get(4);
+ }
+
+ // -------------------------------------------------------------------------
+ // Constructors
+ // -------------------------------------------------------------------------
+
+ /**
+ * Create a detached VExcelWorkpackageAppRecord
+ */
+ public VExcelWorkpackageAppRecord() {
+ super(VExcelWorkpackageApp.V_EXCEL_WORKPACKAGE_APP);
+ }
+
+ /**
+ * Create a detached, initialised VExcelWorkpackageAppRecord
+ */
+ public VExcelWorkpackageAppRecord(Integer workpackageAppId, String workpackageName, String appName, Integer workpackageId, Integer appId) {
+ super(VExcelWorkpackageApp.V_EXCEL_WORKPACKAGE_APP);
+
+ setWorkpackageAppId(workpackageAppId);
+ setWorkpackageName(workpackageName);
+ setAppName(appName);
+ setWorkpackageId(workpackageId);
+ setAppId(appId);
+ resetChangedOnNotNull();
+ }
+}
diff --git a/src/main/java/de/jottyfan/timetrack/db/project/tables/records/VExcelWorkpackageRecord.java b/src/main/java/de/jottyfan/timetrack/db/project/tables/records/VExcelWorkpackageRecord.java
new file mode 100644
index 0000000..b01dbaf
--- /dev/null
+++ b/src/main/java/de/jottyfan/timetrack/db/project/tables/records/VExcelWorkpackageRecord.java
@@ -0,0 +1,208 @@
+/*
+ * This file is generated by jOOQ.
+ */
+package de.jottyfan.timetrack.db.project.tables.records;
+
+
+import de.jottyfan.timetrack.db.project.tables.VExcelWorkpackage;
+
+import java.time.LocalDate;
+
+import org.jooq.impl.TableRecordImpl;
+
+
+/**
+ * This class is generated by jOOQ.
+ */
+@SuppressWarnings({ "all", "unchecked", "rawtypes", "this-escape" })
+public class VExcelWorkpackageRecord extends TableRecordImpl {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Setter for project.v_excel_workpackage.project_id.
+ */
+ public void setProjectId(Integer value) {
+ set(0, value);
+ }
+
+ /**
+ * Getter for project.v_excel_workpackage.project_id.
+ */
+ public Integer getProjectId() {
+ return (Integer) get(0);
+ }
+
+ /**
+ * Setter for project.v_excel_workpackage.project_name.
+ */
+ public void setProjectName(String value) {
+ set(1, value);
+ }
+
+ /**
+ * Getter for project.v_excel_workpackage.project_name.
+ */
+ public String getProjectName() {
+ return (String) get(1);
+ }
+
+ /**
+ * Setter for project.v_excel_workpackage.project_description.
+ */
+ public void setProjectDescription(String value) {
+ set(2, value);
+ }
+
+ /**
+ * Getter for project.v_excel_workpackage.project_description.
+ */
+ public String getProjectDescription() {
+ return (String) get(2);
+ }
+
+ /**
+ * Setter for project.v_excel_workpackage.funder_name.
+ */
+ public void setFunderName(String value) {
+ set(3, value);
+ }
+
+ /**
+ * Getter for project.v_excel_workpackage.funder_name.
+ */
+ public String getFunderName() {
+ return (String) get(3);
+ }
+
+ /**
+ * Setter for project.v_excel_workpackage.funder_description.
+ */
+ public void setFunderDescription(String value) {
+ set(4, value);
+ }
+
+ /**
+ * Getter for project.v_excel_workpackage.funder_description.
+ */
+ public String getFunderDescription() {
+ return (String) get(4);
+ }
+
+ /**
+ * Setter for project.v_excel_workpackage.workpackage_id.
+ */
+ public void setWorkpackageId(Integer value) {
+ set(5, value);
+ }
+
+ /**
+ * Getter for project.v_excel_workpackage.workpackage_id.
+ */
+ public Integer getWorkpackageId() {
+ return (Integer) get(5);
+ }
+
+ /**
+ * Setter for project.v_excel_workpackage.workpackage_name.
+ */
+ public void setWorkpackageName(String value) {
+ set(6, value);
+ }
+
+ /**
+ * Getter for project.v_excel_workpackage.workpackage_name.
+ */
+ public String getWorkpackageName() {
+ return (String) get(6);
+ }
+
+ /**
+ * Setter for
+ * project.v_excel_workpackage.workpackage_description.
+ */
+ public void setWorkpackageDescription(String value) {
+ set(7, value);
+ }
+
+ /**
+ * Getter for
+ * project.v_excel_workpackage.workpackage_description.
+ */
+ public String getWorkpackageDescription() {
+ return (String) get(7);
+ }
+
+ /**
+ * Setter for project.v_excel_workpackage.contract_url.
+ */
+ public void setContractUrl(String value) {
+ set(8, value);
+ }
+
+ /**
+ * Getter for project.v_excel_workpackage.contract_url.
+ */
+ public String getContractUrl() {
+ return (String) get(8);
+ }
+
+ /**
+ * Setter for project.v_excel_workpackage.milestone_url.
+ */
+ public void setMilestoneUrl(String value) {
+ set(9, value);
+ }
+
+ /**
+ * Getter for project.v_excel_workpackage.milestone_url.
+ */
+ public String getMilestoneUrl() {
+ return (String) get(9);
+ }
+
+ /**
+ * Setter for project.v_excel_workpackage.planned_duedate.
+ */
+ public void setPlannedDuedate(LocalDate value) {
+ set(10, value);
+ }
+
+ /**
+ * Getter for project.v_excel_workpackage.planned_duedate.
+ */
+ public LocalDate getPlannedDuedate() {
+ return (LocalDate) get(10);
+ }
+
+ // -------------------------------------------------------------------------
+ // Constructors
+ // -------------------------------------------------------------------------
+
+ /**
+ * Create a detached VExcelWorkpackageRecord
+ */
+ public VExcelWorkpackageRecord() {
+ super(VExcelWorkpackage.V_EXCEL_WORKPACKAGE);
+ }
+
+ /**
+ * Create a detached, initialised VExcelWorkpackageRecord
+ */
+ public VExcelWorkpackageRecord(Integer projectId, String projectName, String projectDescription, String funderName, String funderDescription, Integer workpackageId, String workpackageName, String workpackageDescription, String contractUrl, String milestoneUrl, LocalDate plannedDuedate) {
+ super(VExcelWorkpackage.V_EXCEL_WORKPACKAGE);
+
+ setProjectId(projectId);
+ setProjectName(projectName);
+ setProjectDescription(projectDescription);
+ setFunderName(funderName);
+ setFunderDescription(funderDescription);
+ setWorkpackageId(workpackageId);
+ setWorkpackageName(workpackageName);
+ setWorkpackageDescription(workpackageDescription);
+ setContractUrl(contractUrl);
+ setMilestoneUrl(milestoneUrl);
+ setPlannedDuedate(plannedDuedate);
+ resetChangedOnNotNull();
+ }
+}
diff --git a/src/main/java/de/jottyfan/timetrack/db/public_/tables/VVersion.java b/src/main/java/de/jottyfan/timetrack/db/public_/tables/VVersion.java
index 04d909e..af2d548 100644
--- a/src/main/java/de/jottyfan/timetrack/db/public_/tables/VVersion.java
+++ b/src/main/java/de/jottyfan/timetrack/db/public_/tables/VVersion.java
@@ -58,7 +58,7 @@ public class VVersion extends TableImpl {
private VVersion(Name alias, Table aliased, Field>[] parameters, Condition where) {
super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.view("""
- create view "v_version" as SELECT 20260114 AS version;
+ create view "v_version" as SELECT 20260119 AS version;
"""), where);
}
diff --git a/src/main/resources/project.sql b/src/main/resources/project.sql
index 53add99..583a9f2 100644
--- a/src/main/resources/project.sql
+++ b/src/main/resources/project.sql
@@ -67,6 +67,43 @@ from project.t_bundle b
left join project.t_app a on a.fk_bundle = b.pk_bundle
group by b.name;
+create view project.v_excel_workpackage_app as
+select wa.pk_workpackage_app as workpackage_app_id, w.name as workpackage_name, a.name as app_name,
+ w.pk_workpackage as workpackage_id, a.pk_app as app_id
+from project.t_workpackage_app wa
+left join project.t_workpackage w on w.pk_workpackage = wa.fk_workpackage
+left join project.t_app a on a.pk_app = wa.fk_app;
+
+create view project.v_excel_app as
+select a.pk_app as app_id,
+ b.name as bundle_name,
+ b.description as bundle_description,
+ a.basic_functionality,
+ a.name,
+ a.description,
+ a.fk_replaced_by_app as replaced_by_app_with_id,
+ a.repository_url,
+ wa.pk_workpackage_app is null as orphan
+from project.t_app a
+left join project.t_bundle b on b.pk_bundle = a.fk_bundle
+left join project.t_workpackage_app wa on wa.fk_app = a.pk_app;
+
+create view project.v_excel_workpackage as
+select p.pk_project as project_id,
+ p.name as project_name,
+ p.description as project_description,
+ f.name as funder_name,
+ f.description as funder_description,
+ w.pk_workpackage as workpackage_id,
+ w.name as workpackage_name,
+ w.description as workpackage_description,
+ w.contract_url,
+ w.milestone_url,
+ w.planned_duedate
+from project.t_project p
+left join project.t_funder f on f.pk_funder = p.fk_funder
+left join project.t_workpackage w on w.fk_project = p.pk_project;
+
grant select,insert,update,delete on project.t_funder to timetrack;
grant select,insert,update,delete on project.t_project to timetrack;
grant select,insert,update,delete on project.t_workpackage to timetrack;
@@ -76,3 +113,6 @@ grant select,insert,update,delete on project.t_workpackage_app to timetrack;
grant select,insert,update,delete on project.t_progress to timetrack;
grant select on project.v_bundle_apps to timetrack;
+grant select on project.v_excel_workpackage_app to timetrack;
+grant select on project.v_excel_app to timetrack;
+grant select on project.v_excel_workpackage to timetrack;
diff --git a/src/main/resources/public.sql b/src/main/resources/public.sql
index 2704cc8..e78a457 100644
--- a/src/main/resources/public.sql
+++ b/src/main/resources/public.sql
@@ -1,5 +1,5 @@
create or replace view public.v_version as
-select 20260114 as version;
+select 20260119 as version;
grant usage on schema public to timetrack;