fix: correct hash schema and stream hashing
This commit is contained in:
@@ -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<string> {
|
||||
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")));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user