diff --git a/build.gradle b/build.gradle index ceacc0b..68b3656 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,6 @@ buildscript { mavenCentral() maven { url "https://repo.maven.apache.org/maven2" } maven { url "https://plugins.gradle.org/m2/" } - jcenter() } dependencies { classpath 'org.jooq:jooq-codegen:3.19.15' @@ -23,7 +22,7 @@ apply plugin: 'maven-publish' apply plugin: 'eclipse' group = 'de.jottyfan' -version = '20260114' +version = '20261005' def artifactId = 'timetrackjooq' def versionNumber = version diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3ae1e2f..efb903f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.0-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/resources/done.sql b/src/main/resources/done.sql index 987c61e..b6a6a96 100644 --- a/src/main/resources/done.sql +++ b/src/main/resources/done.sql @@ -1,4 +1,4 @@ -create schema done; +/vcreate schema done; create table done.t_billing ( lastchange timestamp without time zone default now(), @@ -41,7 +41,7 @@ create table done.t_done ( create table done.t_favorite ( lastchange timestamp without time zone default now(), pk_favorite integer not null primary key generated always as identity, - fk_login integer not null references profile.t_login(pk), + fk_login integer not null references profile.t_login(pk), fk_project integer references done.t_project(pk), fk_module integer references done.t_module(pk), fk_job integer references done.t_job(pk), @@ -73,13 +73,30 @@ create table done.t_freetime ( unique(day, fk_login) ); -create view done.v_favorite as -select f.pk_favorite, f.fk_login, p.name as project, m.name as module, j.name as job, b.name as billing -from done.t_favorite f -left join done.t_project p on p.pk = f.fk_project -left join done.t_module m on m.pk = f.fk_module -left join done.t_job j on j.pk = f.fk_job -left join done.t_billing b on b.pk = f.fk_billing; +create or replace view done.v_favorite as +with x(fk_login, fk_project, fk_module, fk_job, fk_billing, amount) as ( + select fk_login, fk_project, fk_module, fk_job, fk_billing, count(*) + from done.t_done + group by fk_login, fk_project, fk_module, fk_job, fk_billing +) +select f.pk_favorite, + f.fk_login, + p.name as project, + m.name as module, + j.name as job, + b.name as billing, + coalesce(x.amount, 0) as usage_count + from done.t_favorite f + left join done.t_project p on p.pk = f.fk_project + left join done.t_module m on m.pk = f.fk_module + left join done.t_job j on j.pk = f.fk_job + left join done.t_billing b on b.pk = f.fk_billing + left join x + on x.fk_login = f.fk_login + and x.fk_project is not distinct from f.fk_project + and x.fk_module is not distinct from f.fk_module + and x.fk_job is not distinct from f.fk_job + and x.fk_billing is not distinct from f.fk_billing; create view done.v_billing as with x(total) as ( @@ -97,11 +114,11 @@ create view done.v_done as select d.pk as fk_done, l.pk as fk_login, d.time_from, - d.time_until, - p.name as project_name, - m.name as module_name, - j.name as job_name, - l.login + d.time_until, + p.name as project_name, + m.name as module_name, + j.name as job_name, + l.login from done.t_done d left join done.t_project p on p.pk = d.fk_project left join done.t_module m on m.pk = d.fk_module @@ -127,8 +144,8 @@ create view done.v_daylimits as with x(time_from, time_until, day, fk_login) as ( select time_from, coalesce(time_until::timestamp with time zone, now()) as "coalesce", - to_char(time_from, 'yyyy-MM-dd'::text) as day, - fk_login + to_char(time_from, 'yyyy-MM-dd'::text) as day, + fk_login from done.t_done ) select min(x.time_from) as work_start, max(x.time_until) as work_end, @@ -147,11 +164,11 @@ create view done.v_eucanshare as select d.pk as fk_done, d.time_from::date as workday, age(d.time_until, d.time_from) as duration, - p.name as project_name, - m.name as module_name, - j.name as job_name, - b.name as billing_name, - d.fk_login + p.name as project_name, + m.name as module_name, + j.name as job_name, + b.name as billing_name, + d.fk_login from done.t_done d left join done.t_project p on p.pk = d.fk_project left join done.t_module m on m.pk = d.fk_module @@ -160,11 +177,11 @@ left join done.t_billing b on b.pk = d.fk_billing; create view done.v_hamster as select time_from::date as workday, - age(time_until, time_from) as duration, - project_name, - module_name, - job_name, - login + age(time_until, time_from) as duration, + project_name, + module_name, + job_name, + login from done.v_done; create view done.v_hamstersummary as @@ -304,6 +321,18 @@ with x(dayworktime, day, fk_login, required, starttime, endtime) as ( from x order by day desc, fk_login; +create view done.v_favorite_count as +select f.pk_favorite, + f.fk_login, + count(d.pk) as usage_count +from done.t_favorite f +left join done.t_done d on d.fk_login = f.fk_login + and d.fk_project is not distinct from f.fk_project + and d.fk_module is not distinct from f.fk_module + and d.fk_job is not distinct from f.fk_job + and d.fk_billing is not distinct from f.fk_billing +group by f.pk_favorite, f.fk_login; + copy done.t_billing (lastchange, pk, name, shortcut, csskey) from stdin; 2021-03-05 19:37:07.12832 1 WP2 (eucs) - Opal/Mica/..., REST WP2 WP2 2021-03-05 19:37:07.12832 2 WP4 (eucs) - Square² WP4 WP4 @@ -414,3 +443,4 @@ grant select on done.v_worktime to timetrack; grant select on done.v_daylimit to timetrack; grant select on done.v_current_overtime to timetrack; grant select on done.v_day to timetrack; +grant select on done.v_favorite_count to timetrack; diff --git a/src/main/resources/public.sql b/src/main/resources/public.sql index 2704cc8..855f5a8 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 20261005 as version; grant usage on schema public to timetrack;