fix: resolve all lint errors across source and test files
Some checks failed
CI / ci (push) Failing after 11s
CI / e2e (push) Has been skipped

- Fix unused function parameters (prefix with _)
- Fix unused imports in test files
- Fix import ordering in test files
- Auto-fix formatting issues across 22 files

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-06 19:39:47 +02:00
parent e19d40e232
commit 3638e7b240
18 changed files with 47 additions and 58 deletions

View File

@@ -34,7 +34,7 @@ export function CandidateCard({
priceCents,
categoryName,
categoryIcon,
imageFilename,
imageFilename: _imageFilename,
imageUrl,
productUrl,
threadId,

View File

@@ -10,7 +10,11 @@ interface ImageUploadProps {
const MAX_SIZE_BYTES = 5 * 1024 * 1024; // 5MB
const ACCEPTED_TYPES = ["image/jpeg", "image/png", "image/webp"];
export function ImageUpload({ value, imageUrl, onChange }: ImageUploadProps) {
export function ImageUpload({
value: _value,
imageUrl,
onChange,
}: ImageUploadProps) {
const [uploading, setUploading] = useState(false);
const [error, setError] = useState<string | null>(null);
const [localPreview, setLocalPreview] = useState<string | null>(null);

View File

@@ -16,6 +16,7 @@ interface ItemCardProps {
imageFilename: string | null;
imageUrl?: string | null;
productUrl?: string | null;
brand?: string | null;
onRemove?: () => void;
classification?: string;
onClassificationCycle?: () => void;
@@ -29,9 +30,10 @@ export function ItemCard({
quantity,
categoryName,
categoryIcon,
imageFilename,
imageFilename: _imageFilename,
imageUrl,
productUrl,
brand,
onRemove,
classification,
onClassificationCycle,
@@ -177,9 +179,14 @@ export function ItemCard({
)}
</div>
<div className="p-4">
{brand && (
<p className="text-xs font-medium text-gray-400 uppercase tracking-wide mb-0.5">
{brand}
</p>
)}
<div className="flex items-center gap-1.5 mb-2">
<h3 className="text-sm font-semibold text-gray-900 truncate min-w-0">
{name}
{brand ? name.replace(`${brand} `, "") : name}
</h3>
{quantity != null && quantity > 1 && (
<span className="shrink-0 inline-flex items-center px-1.5 py-0.5 rounded-full text-xs font-medium bg-gray-100 text-gray-600">

View File

@@ -6,12 +6,11 @@ import { and, eq } from "drizzle-orm";
import {
DEV_CATEGORIES,
DEV_GLOBAL_ITEMS,
DEV_SETUPS,
DEV_SETTINGS,
DEV_SETUPS,
DEV_TAG_ASSIGNMENTS,
DEV_THREADS,
DEV_USER_ITEMS,
categoryDisplayName,
} from "./dev-seed-data.ts";
import { db } from "./index.ts";
import * as schema from "./schema.ts";
@@ -106,7 +105,10 @@ async function seedDevData(database: Db = db) {
description: item.description,
})
.returning();
if (!inserted) throw new Error(`Failed to insert global item: ${item.brand} ${item.model}`);
if (!inserted)
throw new Error(
`Failed to insert global item: ${item.brand} ${item.model}`,
);
globalItemIds.push(inserted.id);
newGlobalCount++;
}
@@ -185,7 +187,8 @@ async function seedDevData(database: Db = db) {
userId,
})
.returning();
if (!thread) throw new Error(`Failed to insert thread: ${threadDef.name}`);
if (!thread)
throw new Error(`Failed to insert thread: ${threadDef.name}`);
threadResults.push({ threadId: thread.id, threadDef });
}
console.log(` ${threadResults.length} threads created.`);

View File

@@ -114,5 +114,4 @@ app.delete("/:id", async (c) => {
return c.json({ success: true });
});
export { app as itemRoutes };

View File

@@ -1,5 +1,5 @@
import { and, asc, eq } from "drizzle-orm";
import { db as prodDb } from "../../db/index.ts";
import type { db as prodDb } from "../../db/index.ts";
import { categories, items } from "../../db/schema.ts";
type Db = typeof prodDb;

View File

@@ -1,4 +1,4 @@
import { and, eq, sql } from "drizzle-orm";
import { eq, sql } from "drizzle-orm";
import type { db as prodDb } from "../../db/index.ts";
import { categories, globalItems, items } from "../../db/schema.ts";
import { getOrCreateUncategorized } from "./category.service.ts";

View File

@@ -1,7 +1,7 @@
import { and, count, eq, ilike, or, sql } from "drizzle-orm";
import type { SQL } from "drizzle-orm";
import { and, count, eq, ilike, or, sql } from "drizzle-orm";
import { db as prodDb } from "../../db/index.ts";
import { globalItemTags, globalItems, items, tags } from "../../db/schema.ts";
import { globalItems, globalItemTags, items, tags } from "../../db/schema.ts";
type Db = typeof prodDb;
@@ -22,10 +22,7 @@ export async function searchGlobalItems(
const escaped = query.replace(/%/g, "\\%").replace(/_/g, "\\_");
const pattern = `%${escaped}%`;
conditions.push(
or(
ilike(globalItems.brand, pattern),
ilike(globalItems.model, pattern),
)!,
or(ilike(globalItems.brand, pattern), ilike(globalItems.model, pattern))!,
);
}
@@ -59,10 +56,7 @@ export async function searchGlobalItems(
* Get a single global item by ID with the count of user items referencing it
* via items.globalItemId.
*/
export async function getGlobalItemWithOwnerCount(
db: Db = prodDb,
id: number,
) {
export async function getGlobalItemWithOwnerCount(db: Db = prodDb, id: number) {
const [item] = await db
.select()
.from(globalItems)

View File

@@ -359,9 +359,7 @@ export async function resolveThread(
.select()
.from(globalItems)
.where(eq(globalItems.id, candidate.globalItemId));
const fallbackName = gi
? `${gi.brand} ${gi.model}`
: candidate.name;
const fallbackName = gi ? `${gi.brand} ${gi.model}` : candidate.name;
insertValues = {
name: fallbackName,
globalItemId: candidate.globalItemId,

View File

@@ -1,4 +1,4 @@
import { and, eq, sql } from "drizzle-orm";
import { eq, sql } from "drizzle-orm";
import type { db as prodDb } from "../../db/index.ts";
import { categories, globalItems, items } from "../../db/schema.ts";