This commit is contained in:
seb
2026-10-07 21:23:03 +02:00
parent e02bbd65c5
commit 36dd81ee69
7 changed files with 170 additions and 91 deletions

View File

@@ -42,38 +42,55 @@ export default function addImage(provider) {
const sortResult = await runner.query(getSortSql, { categoryId });
const sort = sortResult.rows[0].sort;
const fullHash = newFullHash();
const fullHash = newFullHash(processed.full.buffer);
if (isSqlite) {
if (runner.writePicFull) {
await runner.writePicFull(fullHash, processed.full.buffer);
await runner.writePicThumb(fullHash, processed.thumb.buffer);
} else if (provider?.writePicFull) {
await provider.writePicFull(fullHash, processed.full.buffer);
await provider.writePicThumb(fullHash, processed.thumb.buffer);
let picId;
const existingPic = await runner.query(
'SELECT id FROM pic WHERE hash = @fullHash',
{ fullHash },
);
if (existingPic.rows[0]) {
picId = existingPic.rows[0].id;
} else {
if (isSqlite) {
if (runner.writePicFull) {
await runner.writePicFull(fullHash, processed.full.buffer);
await runner.writePicThumb(fullHash, processed.thumb.buffer);
} else if (provider?.writePicFull) {
await provider.writePicFull(fullHash, processed.full.buffer);
await provider.writePicThumb(fullHash, processed.thumb.buffer);
}
}
const picResult = await runner.query(createPicSql, {
w: processed.full.w,
h: processed.full.h,
size: processed.full.size,
hash: fullHash,
thumbw: processed.thumb.w,
thumbh: processed.thumb.h,
thumbhash: processed.thumb.hash,
source: '',
fullbinary: processed.full.buffer,
thumbbinary: processed.thumb.buffer,
});
picId = picResult.rows[0]?.id ?? picResult.insertId;
}
const picResult = await runner.query(createPicSql, {
w: processed.full.w,
h: processed.full.h,
size: processed.full.size,
hash: fullHash,
thumbw: processed.thumb.w,
thumbh: processed.thumb.h,
thumbhash: processed.thumb.hash,
source: '',
fullbinary: processed.full.buffer,
thumbbinary: processed.thumb.buffer,
});
const existingCategoryPic = await runner.query(
'SELECT id, sort FROM categorypic WHERE category_id = @categoryId AND pic_id = @picId',
{ categoryId, picId },
);
const picId = picResult.rows[0]?.id ?? picResult.insertId;
await runner.query(addCategoryPicSql, {
categoryId,
picId,
sort,
});
if (!existingCategoryPic.rows[0]) {
await runner.query(addCategoryPicSql, {
categoryId,
picId,
sort,
});
}
return {
id: categoryId,