From 1952fbaf30a29c145ea25da2a3792e806736a0c9 Mon Sep 17 00:00:00 2001 From: William Valentin Date: Wed, 4 Feb 2026 19:39:17 -0800 Subject: [PATCH] fix: correct hash schema and stream hashing --- apps/worker/src/hash-utils.ts | 13 +++++++------ packages/db/migrations/0007_asset_hashes.sql | 5 +---- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/apps/worker/src/hash-utils.ts b/apps/worker/src/hash-utils.ts index f23d247..f99bff8 100644 --- a/apps/worker/src/hash-utils.ts +++ b/apps/worker/src/hash-utils.ts @@ -1,11 +1,12 @@ import { createHash } from "node:crypto"; -import { promises as fs } from "fs"; +import { createReadStream } from "node:fs"; export async function computeFileSha256(filePath: string): Promise { const hash = createHash("sha256"); - const content = await fs.readFile(filePath); - - hash.update(content); - - return hash.digest("hex"); + const stream = createReadStream(filePath); + return await new Promise((resolve, reject) => { + stream.on("data", (chunk) => hash.update(chunk)); + stream.on("error", reject); + stream.on("end", () => resolve(hash.digest("hex"))); + }); } diff --git a/packages/db/migrations/0007_asset_hashes.sql b/packages/db/migrations/0007_asset_hashes.sql index 317344e..1fb79eb 100644 --- a/packages/db/migrations/0007_asset_hashes.sql +++ b/packages/db/migrations/0007_asset_hashes.sql @@ -1,12 +1,9 @@ CREATE TABLE IF NOT EXISTS asset_hashes ( - id uuid PRIMARY KEY DEFAULT gen_random_uuid(), - asset_id uuid NOT NULL REFERENCES assets(id) ON DELETE CASCADE, + asset_id uuid PRIMARY KEY REFERENCES assets(id) ON DELETE CASCADE, bucket text NOT NULL, sha256 text NOT NULL, created_at timestamptz NOT NULL DEFAULT now() ); -CREATE INDEX IF NOT EXISTS asset_hashes_asset_id_idx ON asset_hashes(asset_id); - CREATE UNIQUE INDEX IF NOT EXISTS asset_hashes_bucket_sha256_idx ON asset_hashes(bucket, sha256) WHERE sha256 IS NOT NULL;