Introduce durable, coordinator-owned artifacts — the model the master plan requires instead of trusting worker-supplied result URIs. - migration 0003: artifacts table + artifact_kind enum, plus nullable input/result_artifact_id columns on jobs and tasks. - domain.Artifact with NewArtifact/SetContent; storage keys derive from a fresh UUID, never from a client filename (no path traversal). - BlobStore and ArtifactRepository ports. - blob.FSStore: filesystem blob storage that streams while hashing (SHA-256), fsyncs, and atomically renames into place — a failed upload leaves neither a committed artifact nor a staging file. Covered by unit tests. - ArtifactRepo (squirrel) and COORDINATOR_STORAGE_DIR config. HTTP upload/download handlers and the switch of result submission to artifact_id come in the next parts.
12 lines
323 B
PL/PgSQL
12 lines
323 B
PL/PgSQL
BEGIN;
|
|
|
|
ALTER TABLE tasks DROP COLUMN IF EXISTS input_artifact_id;
|
|
ALTER TABLE tasks DROP COLUMN IF EXISTS result_artifact_id;
|
|
ALTER TABLE jobs DROP COLUMN IF EXISTS input_artifact_id;
|
|
ALTER TABLE jobs DROP COLUMN IF EXISTS result_artifact_id;
|
|
|
|
DROP TABLE IF EXISTS artifacts;
|
|
DROP TYPE IF EXISTS artifact_kind;
|
|
|
|
COMMIT;
|