feat: complete remaining Go backend modules
This commit is contained in:
@@ -29,6 +29,7 @@ create table if not exists generation_jobs (
|
||||
input_urls text[] not null default '{}',
|
||||
output_asset_ids text[] not null default '{}',
|
||||
provider_task_id text,
|
||||
provider_dispatch_started_at timestamptz,
|
||||
request_payload jsonb not null default '{}'::jsonb,
|
||||
response_payload jsonb,
|
||||
error jsonb,
|
||||
@@ -43,6 +44,8 @@ create table if not exists generation_jobs (
|
||||
locked_by text,
|
||||
started_at timestamptz,
|
||||
completed_at timestamptz,
|
||||
dispatch_ready_at timestamptz,
|
||||
finalized_at timestamptz,
|
||||
webhook_url text,
|
||||
webhook_attempts integer not null default 0,
|
||||
webhook_last_status jsonb,
|
||||
@@ -66,6 +69,18 @@ alter table generation_jobs add column if not exists webhook_url text;
|
||||
alter table generation_jobs add column if not exists webhook_attempts integer not null default 0;
|
||||
alter table generation_jobs add column if not exists webhook_last_status jsonb;
|
||||
alter table generation_jobs add column if not exists usage_context jsonb;
|
||||
alter table generation_jobs add column if not exists provider_dispatch_started_at timestamptz;
|
||||
alter table generation_jobs add column if not exists dispatch_ready_at timestamptz;
|
||||
alter table generation_jobs add column if not exists finalized_at timestamptz;
|
||||
|
||||
update generation_jobs
|
||||
set dispatch_ready_at = coalesce(dispatch_ready_at, created_at, now())
|
||||
where dispatch_ready_at is null;
|
||||
|
||||
update generation_jobs
|
||||
set finalized_at = coalesce(finalized_at, completed_at, updated_at, now())
|
||||
where finalized_at is null
|
||||
and status in ('succeeded', 'failed', 'expired', 'cancelled');
|
||||
|
||||
create table if not exists usage_events (
|
||||
id text primary key,
|
||||
@@ -147,6 +162,7 @@ create index if not exists assets_owner_created_idx on assets(owner_id, created_
|
||||
create index if not exists generation_jobs_owner_created_idx on generation_jobs(owner_id, created_at desc);
|
||||
create index if not exists generation_jobs_status_idx on generation_jobs(status);
|
||||
create index if not exists generation_jobs_claim_idx on generation_jobs(status, scheduled_at, locked_at, priority desc);
|
||||
create index if not exists generation_jobs_finalize_claim_idx on generation_jobs(finalized_at, scheduled_at, locked_at, priority desc);
|
||||
create index if not exists generation_jobs_external_client_idx on generation_jobs(owner_id, external_client_id, created_at desc);
|
||||
create unique index if not exists generation_jobs_idempotency_idx
|
||||
on generation_jobs(owner_id, external_client_id, idempotency_key)
|
||||
@@ -187,7 +203,9 @@ begin
|
||||
with candidates as (
|
||||
select id
|
||||
from generation_jobs
|
||||
where status in ('queued', 'running')
|
||||
where dispatch_ready_at is not null
|
||||
and finalized_at is null
|
||||
and status in ('queued', 'running', 'succeeded', 'failed', 'expired', 'cancelled')
|
||||
and coalesce(scheduled_at, created_at) <= v_now
|
||||
and (
|
||||
locked_at is null
|
||||
|
||||
Reference in New Issue
Block a user