All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
io.kestra.jdbc.repository.AbstractJdbcRepository Maven / Gradle / Ivy
Go to download
The modern, scalable orchestrator & scheduler open source platform
package io.kestra.jdbc.repository;
import io.kestra.core.utils.DateUtils;
import io.micronaut.core.annotation.Nullable;
import org.jooq.Condition;
import org.jooq.Field;
import org.jooq.impl.DSL;
import java.sql.Timestamp;
import java.time.Duration;
import java.util.Date;
import java.util.List;
public abstract class AbstractJdbcRepository {
protected Condition defaultFilter() {
return field("deleted", Boolean.class).eq(false);
}
protected Condition defaultFilter(Boolean allowDeleted) {
return allowDeleted ? DSL.trueCondition() : field("deleted", Boolean.class).eq(false);
}
protected Condition defaultFilter(String tenantId) {
var tenant = buildTenantCondition(tenantId) ;
return tenant.and(field("deleted", Boolean.class).eq(false));
}
protected Condition defaultFilter(String tenantId, Boolean allowDeleted) {
var tenant = buildTenantCondition(tenantId);
return allowDeleted ? tenant : tenant.and(field("deleted", Boolean.class).eq(false));
}
protected Condition buildTenantCondition(String tenantId) {
return tenantId == null ? field("tenant_id").isNull() : field("tenant_id").eq(tenantId);
}
public static Field field(String name) {
return DSL.field(DSL.quotedName(name));
}
public static Field field(String name, Class cls) {
return DSL.field(DSL.quotedName(name), cls);
}
protected List> groupByFields(Duration duration) {
return groupByFields(duration, null, null);
}
protected List> groupByFields(Duration duration, boolean withAs) {
return groupByFields(duration, null, null, withAs);
}
protected Field weekFromTimestamp(Field timestampField) {
return DSL.week(timestampField);
}
protected List> groupByFields(Duration duration, @Nullable String dateField, @Nullable DateUtils.GroupType groupBy) {
return groupByFields(duration, dateField, groupBy, true);
}
protected List> groupByFields(Duration duration, @Nullable String dateField, @Nullable DateUtils.GroupType groupBy, boolean withAs) {
String field = dateField != null ? dateField : "timestamp";
Field month = withAs ? DSL.month(DSL.timestamp(field(field, Date.class))).as("month") : DSL.month(DSL.timestamp(field(field, Date.class)));
Field year = withAs ? DSL.year(DSL.timestamp(field(field, Date.class))).as("year") : DSL.year(DSL.timestamp(field(field, Date.class)));
Field day = withAs ? DSL.day(DSL.timestamp(field(field, Date.class))).as("day") : DSL.day(DSL.timestamp(field(field, Date.class)));
Field week = withAs ? weekFromTimestamp(DSL.timestamp(field(field, Date.class))).as("week") : weekFromTimestamp(DSL.timestamp(field(field, Date.class)));
Field hour = withAs ? DSL.hour(DSL.timestamp(field(field, Date.class))).as("hour") : DSL.hour(DSL.timestamp(field(field, Date.class)));
Field minute = withAs ? DSL.minute(DSL.timestamp(field(field, Date.class))).as("minute") : DSL.minute(DSL.timestamp(field(field, Date.class)));
if (groupBy == DateUtils.GroupType.MONTH || duration.toDays() > DateUtils.GroupValue.MONTH.getValue()) {
return List.of(year, month);
} else if (groupBy == DateUtils.GroupType.WEEK || duration.toDays() > DateUtils.GroupValue.WEEK.getValue()) {
return List.of(year, week);
} else if (groupBy == DateUtils.GroupType.DAY || duration.toDays() > DateUtils.GroupValue.DAY.getValue()) {
return List.of(year, month, day);
} else if (groupBy == DateUtils.GroupType.HOUR || duration.toHours() > DateUtils.GroupValue.HOUR.getValue()) {
return List.of(year, month, day, hour);
} else {
return List.of(year, month, day, hour, minute);
}
}
}