Skip to content

feat(natsapi): add jobs.delete endpoint for server-side job deletion#270

Merged
taigrr merged 1 commit into
masterfrom
cd/nats-jobs-delete
Mar 31, 2026
Merged

feat(natsapi): add jobs.delete endpoint for server-side job deletion#270
taigrr merged 1 commit into
masterfrom
cd/nats-jobs-delete

Conversation

@taigrr
Copy link
Copy Markdown
Member

@taigrr taigrr commented Mar 31, 2026

NATS Migration Part 2: Jobs Delete Endpoint

Part of the NATS-only farmer migration. Adds grlx.api.jobs.delete subject handler that enables server-side job deletion.

Changes

Farmer-side store (internal/jobs/store.go):

  • Store.DeleteJob(jid) — searches all sprout directories, removes .jsonl and .meta.json files

NATS handler (internal/natsapi/jobs.go):

  • handleJobsDelete — validates JID, performs RBAC scope check against the job's sprout, then deletes
  • RBAC: requires ActionJobAdmin (same as jobs.cancel)

Client (internal/api/client/jobs.go):

  • DeleteJob(jid) — sends jobs.delete request over NATS

CLI (cmd/grlx/cmd/jobs.go):

  • grlx jobs delete <JID> now defaults to farmer-side deletion
  • Added --local flag for local CLI-side store deletion (previous behavior)

Tests

  • 3 store tests: found, not found, empty dir
  • 4 handler tests: success, not found, empty JID, invalid JSON
  • 2 client tests: success, error

All existing tests continue to pass.

Add grlx.api.jobs.delete NATS subject handler that deletes job log
and metadata files from the farmer-side store. Previously, job
deletion was only available in the local CLI-side store.

Changes:
- Store.DeleteJob() on farmer-side job store (searches all sprouts)
- handleJobsDelete NATS handler with RBAC scope checks
- client.DeleteJob() NATS client function
- CLI 'grlx jobs delete' now defaults to farmer-side deletion
  with --local flag for local CLI-side store
- 9 new tests (3 store, 4 handler, 2 client)
@taigrr taigrr merged commit 149b26a into master Mar 31, 2026
6 of 7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant