mirror of
https://github.com/kestra-io/kestra.git
synced 2025-12-23 21:04:39 -05:00
feat(jdbc): adapt ui to remove lucene expression
This commit is contained in:
@@ -30,6 +30,6 @@ public class PostgresFlowRepository extends AbstractFlowRepository {
|
||||
|
||||
@Override
|
||||
protected Condition findSourceCodeCondition(String query) {
|
||||
return DSL.condition("source_code @@ TO_TSQUERY('simple', ?)", query);
|
||||
return this.jdbcRepository.fullTextCondition(Collections.singletonList("FULLTEXT_INDEX(source_code)"), query);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
package io.kestra.repository.postgres;
|
||||
|
||||
import io.kestra.core.models.executions.LogEntry;
|
||||
import io.kestra.core.models.triggers.Trigger;
|
||||
import io.kestra.core.repositories.LogRepositoryInterface;
|
||||
import io.kestra.core.repositories.TriggerRepositoryInterface;
|
||||
import io.kestra.jdbc.repository.AbstractLogRepository;
|
||||
import io.kestra.jdbc.repository.AbstractTriggerRepository;
|
||||
import io.micronaut.context.ApplicationContext;
|
||||
import jakarta.inject.Inject;
|
||||
import jakarta.inject.Singleton;
|
||||
import org.jooq.Condition;
|
||||
import org.jooq.impl.DSL;
|
||||
import org.slf4j.event.Level;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
@Singleton
|
||||
@PostgresRepositoryEnabled
|
||||
@@ -25,4 +26,15 @@ public class PostgresLogRepository extends AbstractLogRepository implements LogR
|
||||
protected Condition findCondition(String query) {
|
||||
return this.jdbcRepository.fullTextCondition(Collections.singletonList("fulltext"), query);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Condition minLevel(Level minLevel) {
|
||||
return DSL.condition("level in (" +
|
||||
LogEntry
|
||||
.findLevelsByMin(minLevel)
|
||||
.stream()
|
||||
.map(s -> "'" + s + "'::log_level")
|
||||
.collect(Collectors.joining(", ")) +
|
||||
")");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,47 +39,49 @@ CREATE TYPE queue_type AS ENUM (
|
||||
);
|
||||
|
||||
CREATE OR REPLACE FUNCTION FULLTEXT_REPLACE(text, text) RETURNS text
|
||||
AS 'SELECT REGEXP_REPLACE(COALESCE($1, ''''), ''[^a-zA-Z\d:]'', $2, ''g'');'
|
||||
LANGUAGE SQL
|
||||
IMMUTABLE
|
||||
RETURNS NULL ON NULL INPUT;
|
||||
RETURNS NULL ON NULL INPUT
|
||||
RETURN TRIM(BOTH $2 FROM REGEXP_REPLACE(COALESCE($1, ''), '[^a-zA-Z\d:]', $2, 'g'));
|
||||
|
||||
CREATE OR REPLACE FUNCTION FULLTEXT_INDEX(text) RETURNS tsvector
|
||||
AS 'SELECT TO_TSVECTOR(''simple'', FULLTEXT_REPLACE($1, '' '')) || TO_TSVECTOR(''simple'', $1);'
|
||||
LANGUAGE SQL
|
||||
IMMUTABLE
|
||||
RETURNS NULL ON NULL INPUT;
|
||||
RETURNS NULL ON NULL INPUT
|
||||
RETURN TO_TSVECTOR('simple', FULLTEXT_REPLACE($1, ' ')) || TO_TSVECTOR('simple', $1);
|
||||
|
||||
CREATE OR REPLACE FUNCTION FULLTEXT_SEARCH(text) RETURNS tsquery
|
||||
AS 'SELECT TO_TSQUERY(''simple'', FULLTEXT_REPLACE($1, '':* & '') || '':*'');'
|
||||
LANGUAGE SQL
|
||||
IMMUTABLE
|
||||
RETURNS NULL ON NULL INPUT;
|
||||
RETURNS NULL ON NULL INPUT
|
||||
RETURN CASE WHEN FULLTEXT_REPLACE($1, '') = '' THEN TO_TSQUERY('')
|
||||
ELSE TO_TSQUERY('simple', FULLTEXT_REPLACE($1, ':* & ') || ':*')
|
||||
END;
|
||||
|
||||
CREATE OR REPLACE FUNCTION STATE_FROMTEXT(text) RETURNS state_type
|
||||
AS 'SELECT CAST($1 AS state_type);'
|
||||
LANGUAGE SQL
|
||||
IMMUTABLE;
|
||||
IMMUTABLE
|
||||
RETURN CAST($1 AS state_type);
|
||||
|
||||
CREATE OR REPLACE FUNCTION LOGLEVEL_FROMTEXT(text) RETURNS log_level
|
||||
AS 'SELECT CAST($1 AS log_level);'
|
||||
LANGUAGE SQL
|
||||
IMMUTABLE;
|
||||
IMMUTABLE
|
||||
RETURN CAST($1 AS log_level);
|
||||
|
||||
CREATE OR REPLACE FUNCTION PARSE_ISO8601_DATETIME(text) RETURNS timestamp
|
||||
AS 'SELECT $1::timestamp;'
|
||||
CREATE OR REPLACE FUNCTION PARSE_ISO8601_DATETIME(text) RETURNS timestamptz
|
||||
LANGUAGE SQL
|
||||
IMMUTABLE;
|
||||
IMMUTABLE
|
||||
RETURN $1::timestamptz;
|
||||
|
||||
CREATE OR REPLACE FUNCTION PARSE_ISO8601_TIMESTAMP(text) RETURNS int
|
||||
AS 'SELECT EXTRACT(epoch FROM $1::timestamptz AT TIME ZONE ''utc'') ;'
|
||||
LANGUAGE SQL
|
||||
IMMUTABLE;
|
||||
IMMUTABLE
|
||||
RETURN EXTRACT(epoch FROM $1::timestamptz AT TIME ZONE 'utc');
|
||||
|
||||
CREATE OR REPLACE FUNCTION PARSE_ISO8601_DURATION(text) RETURNS interval
|
||||
AS 'SELECT $1::interval;'
|
||||
LANGUAGE SQL
|
||||
IMMUTABLE;
|
||||
IMMUTABLE
|
||||
RETURN $1::interval;;
|
||||
|
||||
/* ----------------------- queues ----------------------- */
|
||||
CREATE TABLE queues (
|
||||
@@ -147,6 +149,7 @@ CREATE TABLE executions (
|
||||
state_current state_type NOT NULL GENERATED ALWAYS AS (STATE_FROMTEXT(value #>> '{state, current}')) STORED,
|
||||
state_duration BIGINT NOT NULL GENERATED ALWAYS AS (EXTRACT(MILLISECONDS FROM PARSE_ISO8601_DURATION(value #>> '{state, duration}'))) STORED,
|
||||
start_date TIMESTAMP NOT NULL GENERATED ALWAYS AS (PARSE_ISO8601_DATETIME(value #>> '{state, startDate}')) STORED,
|
||||
end_date TIMESTAMP GENERATED ALWAYS AS (PARSE_ISO8601_DATETIME(value #>> '{state, endDate}')) STORED,
|
||||
fulltext TSVECTOR GENERATED ALWAYS AS (
|
||||
FULLTEXT_INDEX(CAST(value ->> 'namespace' AS varchar)) ||
|
||||
FULLTEXT_INDEX(CAST(value ->> 'flowId' AS varchar)) ||
|
||||
@@ -159,6 +162,7 @@ CREATE INDEX executions_namespace ON executions (namespace);
|
||||
CREATE INDEX executions_flow_id ON executions (flow_id);
|
||||
CREATE INDEX executions_state_current ON executions (state_current);
|
||||
CREATE INDEX executions_start_date ON executions (start_date);
|
||||
CREATE INDEX executions_end_date ON executions (end_date);
|
||||
CREATE INDEX executions_state_duration ON executions (state_duration);
|
||||
CREATE INDEX executions_deleted ON executions (deleted);
|
||||
CREATE INDEX executions_fulltext ON executions USING GIN (fulltext);
|
||||
@@ -189,7 +193,7 @@ CREATE TABLE logs (
|
||||
attempt_number INT GENERATED ALWAYS AS (CAST(value ->> 'attemptNumber' AS INTEGER)) STORED,
|
||||
trigger_id VARCHAR(150) GENERATED ALWAYS AS (value ->> 'triggerId') STORED,
|
||||
level log_level NOT NULL GENERATED ALWAYS AS (LOGLEVEL_FROMTEXT(value ->> 'level')) STORED,
|
||||
timestamp TIMESTAMP NOT NULL GENERATED ALWAYS AS (PARSE_ISO8601_DATETIME(value ->> 'timestamp')) STORED,
|
||||
timestamp TIMESTAMPTZ NOT NULL GENERATED ALWAYS AS (PARSE_ISO8601_DATETIME(value ->> 'timestamp')) STORED,
|
||||
fulltext TSVECTOR GENERATED ALWAYS AS (
|
||||
FULLTEXT_INDEX(CAST(value ->> 'namespace' AS varchar)) ||
|
||||
FULLTEXT_INDEX(CAST(value ->> 'flowId' AS varchar)) ||
|
||||
|
||||
@@ -7,4 +7,6 @@
|
||||
<appender-ref ref="STDOUT" />
|
||||
<appender-ref ref="STDERR" />
|
||||
</root>
|
||||
|
||||
<logger name="org.jooq" level="TRACE" />
|
||||
</configuration>
|
||||
|
||||
Reference in New Issue
Block a user