diff --git a/scripts/fixing.sh b/scripts/fixing.sh new file mode 100755 index 0000000..2c3558c --- /dev/null +++ b/scripts/fixing.sh @@ -0,0 +1,27 @@ +set -e + +echo "=== Step 1: Check global_items columns ===" +bun -e 'import { db } from "./src/db/index.ts"; import { sql } from "drizzle-orm"; const result = await db.execute(sql`SELECT column_name FROM information_schema.columns WHERE table_name = '\''global_items'\'' ORDER BY ordinal_position`); console.log(result.rows.map(r => r.column_name));' + +echo "" +echo "=== Step 2: Push schema (adds any missing columns) ===" +bun run db:push + +echo "" +echo "=== Step 3: Nuke all data ===" +bun -e 'import { db } from "./src/db/index.ts"; import { apiKeys, categories, globalItemTags, globalItems, items, oauthCodes, oauthTokens, settings, setupItems, setups, tags, threadCandidates, threads, users } from "./src/db/schema.ts"; await db.delete(setupItems); await db.delete(setups); await db.delete(threadCandidates); await db.delete(threads); await db.delete(items); await db.delete(settings); await db.delete(apiKeys); await db.delete(oauthTokens); await db.delete(oauthCodes); await db.delete(categories); await db.delete(users); await db.delete(globalItemTags); await db.delete(tags); await db.delete(globalItems); console.log("Nuke complete");' + +echo "" +echo "=== Step 4: Re-seed ===" +bun run db:seed:dev + +echo "" +echo "=== Step 5: Verify hobby tags exist ===" +bun -e 'import { db } from "./src/db/index.ts"; import { tags, globalItemTags } from "./src/db/schema.ts"; import { inArray } from "drizzle-orm"; const hobbyNames = ["bikepacking","cycling","camping","hiking","backpacking","climbing","running"]; const found = await db.select().from(tags).where(inArray(tags.name, hobbyNames)); console.log("Hobby tags found:", found.map(t => t.name)); const allAssignments = await db.select().from(globalItemTags); console.log("Total tag assignments:", allAssignments.length);' + +echo "" +echo "=== Step 6: Test popular-items query ===" +bun -e 'import { getPopularItemsByTags } from "./src/server/services/discovery.service.ts"; const results = await getPopularItemsByTags(undefined, ["bikepacking","cycling","camping"], 5); console.log("Popular items for bikepacking:", results.length); for (const r of results) console.log(" -", r.brand, r.model);' + +echo "" +echo "=== Done ==="