Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -99,6 +99,8 @@ language plpgsql
security invoker
set search_path = public, extensions, pg_temp
as $$
declare
v_processing_lock_timeout interval := make_interval(mins => 45);
begin
return query
with candidates as (
Expand DownExpand Up@@ -158,26 +160,55 @@ begin
)
)
else
jsonb_strip_nulls(
(coalesce(d.metadata, '{}'::jsonb)
- 'indexing_v3_agent_locked_by'
- 'indexing_v3_agent_locked_at'
- 'indexing_v3_agent_next_run_at'
- 'indexing_v3_agent_last_error')
|| jsonb_build_object(
'indexing_v3_agent_status', 'deferred',
'indexing_v3_agent_updated_at', now(),
'completion_gate_missing', to_jsonb(c.missing),
'completion_gate', jsonb_build_object(
'result', 'deferred',
'missing', to_jsonb(c.missing),
'counts', c.counts,
'presence', c.presence,
'source', 'repair_strict_enrichment_gate_batch'
),
'enrichment_status', 'pending'
)
)
case
when coalesce(d.metadata->>'indexing_v3_agent_status', '') = 'processing'
and (
case
when coalesce(d.metadata->>'indexing_v3_agent_locked_at', '') ~ '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
then (d.metadata->>'indexing_v3_agent_locked_at')::timestamptz
else null
end
) >= now() - v_processing_lock_timeout
then jsonb_strip_nulls(
(coalesce(d.metadata, '{}'::jsonb)
- 'indexing_v3_agent_next_run_at'
- 'indexing_v3_agent_last_error')
|| jsonb_build_object(
'indexing_v3_agent_status', 'processing',
'indexing_v3_agent_updated_at', now(),
'completion_gate_missing', to_jsonb(c.missing),
'completion_gate', jsonb_build_object(
'result', 'deferred',
'missing', to_jsonb(c.missing),
'counts', c.counts,
'presence', c.presence,
'source', 'repair_strict_enrichment_gate_batch'
),
'enrichment_status', 'processing'
Comment thread
BigSimmo marked this conversation as resolved.
)
)
else
jsonb_strip_nulls(
(coalesce(d.metadata, '{}'::jsonb)
- 'indexing_v3_agent_locked_by'
- 'indexing_v3_agent_locked_at'
- 'indexing_v3_agent_next_run_at'
- 'indexing_v3_agent_last_error')
|| jsonb_build_object(
'indexing_v3_agent_status', 'deferred',
'indexing_v3_agent_updated_at', now(),
'completion_gate_missing', to_jsonb(c.missing),
'completion_gate', jsonb_build_object(
'result', 'deferred',
'missing', to_jsonb(c.missing),
'counts', c.counts,
'presence', c.presence,
'source', 'repair_strict_enrichment_gate_batch'
),
'enrichment_status', 'pending'
)
)
end
end,
updated_at = now()
from candidates c
Expand Down
71 changes: 51 additions & 20 deletions supabase/schema.sql
Original file line numberDiff line numberDiff line change
Expand Up@@ -3002,6 +3002,8 @@ language plpgsql
security invoker
set search_path = public, extensions, pg_temp
as $$
declare
v_processing_lock_timeout interval := make_interval(mins => 45);
begin
return query
with candidates as (
Expand DownExpand Up@@ -3061,26 +3063,55 @@ begin
)
)
else
jsonb_strip_nulls(
(coalesce(d.metadata, '{}'::jsonb)
- 'indexing_v3_agent_locked_by'
- 'indexing_v3_agent_locked_at'
- 'indexing_v3_agent_next_run_at'
- 'indexing_v3_agent_last_error')
|| jsonb_build_object(
'indexing_v3_agent_status', 'deferred',
'indexing_v3_agent_updated_at', now(),
'completion_gate_missing', to_jsonb(c.missing),
'completion_gate', jsonb_build_object(
'result', 'deferred',
'missing', to_jsonb(c.missing),
'counts', c.counts,
'presence', c.presence,
'source', 'repair_strict_enrichment_gate_batch'
),
'enrichment_status', 'pending'
)
)
case
when coalesce(d.metadata->>'indexing_v3_agent_status', '') = 'processing'
and (
case
when coalesce(d.metadata->>'indexing_v3_agent_locked_at', '') ~ '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
then (d.metadata->>'indexing_v3_agent_locked_at')::timestamptz
else null
end
) >= now() - v_processing_lock_timeout
Comment thread
BigSimmo marked this conversation as resolved.
then jsonb_strip_nulls(
(coalesce(d.metadata, '{}'::jsonb)
- 'indexing_v3_agent_next_run_at'
- 'indexing_v3_agent_last_error')
|| jsonb_build_object(
'indexing_v3_agent_status', 'processing',
'indexing_v3_agent_updated_at', now(),
'completion_gate_missing', to_jsonb(c.missing),
'completion_gate', jsonb_build_object(
'result', 'deferred',
'missing', to_jsonb(c.missing),
'counts', c.counts,
'presence', c.presence,
'source', 'repair_strict_enrichment_gate_batch'
),
'enrichment_status', 'processing'
)
)
else
jsonb_strip_nulls(
(coalesce(d.metadata, '{}'::jsonb)
- 'indexing_v3_agent_locked_by'
- 'indexing_v3_agent_locked_at'
- 'indexing_v3_agent_next_run_at'
- 'indexing_v3_agent_last_error')
|| jsonb_build_object(
'indexing_v3_agent_status', 'deferred',
'indexing_v3_agent_updated_at', now(),
'completion_gate_missing', to_jsonb(c.missing),
'completion_gate', jsonb_build_object(
'result', 'deferred',
'missing', to_jsonb(c.missing),
'counts', c.counts,
'presence', c.presence,
'source', 'repair_strict_enrichment_gate_batch'
),
'enrichment_status', 'pending'
)
)
end
end,
updated_at = now()
from candidates c
Expand Down
3 changes: 3 additions & 0 deletions tests/supabase-schema.test.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -279,6 +279,9 @@ describe("Supabase schema Data API grants", () => {
);
expect(sql).toContain("'indexing_v3_agent_status', 'completed'");
expect(sql).toContain("'indexing_v3_agent_status', 'deferred'");
expect(sql).toContain("coalesce(d.metadata->>'indexing_v3_agent_status', '') = 'processing'");
expect(sql).toContain("then (d.metadata->>'indexing_v3_agent_locked_at')::timestamptz");
expect(sql).toContain("'enrichment_status', 'processing'");
expect(sql).toContain("stage = 'strict_gate_deferred'");
expect(sql).toContain("'strict_gate_repair'");
expect(sql).toContain("extraction_quality = 'good'");
Expand Down
Loading