chore: shell script for nuke-and-reseed (runs inside container)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
38
scripts/nuke-and-reseed.sh
Executable file
38
scripts/nuke-and-reseed.sh
Executable file
@@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Nuke dev seed user and re-seed. Run inside the container:
|
||||||
|
# docker exec -it <container> bash scripts/nuke-and-reseed.sh
|
||||||
|
# Delete after use.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "Deleting dev seed user..."
|
||||||
|
bun -e "
|
||||||
|
import { eq } from 'drizzle-orm';
|
||||||
|
import { db } from './src/db/index.ts';
|
||||||
|
import { apiKeys, categories, items, sessions, settings, setupItems, setups, threadCandidates, threads, users } from './src/db/schema.ts';
|
||||||
|
|
||||||
|
const [user] = await db.select().from(users).where(eq(users.logtoSub, 'dev-user-seed')).limit(1);
|
||||||
|
if (!user) { console.log('No dev user found'); process.exit(0); }
|
||||||
|
const uid = user.id;
|
||||||
|
|
||||||
|
const userSetups = await db.select().from(setups).where(eq(setups.userId, uid));
|
||||||
|
for (const s of userSetups) await db.delete(setupItems).where(eq(setupItems.setupId, s.id));
|
||||||
|
await db.delete(setups).where(eq(setups.userId, uid));
|
||||||
|
|
||||||
|
const userThreads = await db.select().from(threads).where(eq(threads.userId, uid));
|
||||||
|
for (const t of userThreads) await db.delete(threadCandidates).where(eq(threadCandidates.threadId, t.id));
|
||||||
|
await db.delete(threads).where(eq(threads.userId, uid));
|
||||||
|
|
||||||
|
await db.delete(items).where(eq(items.userId, uid));
|
||||||
|
await db.delete(settings).where(eq(settings.userId, uid));
|
||||||
|
await db.delete(apiKeys).where(eq(apiKeys.userId, uid));
|
||||||
|
await db.delete(sessions).where(eq(sessions.userId, uid));
|
||||||
|
await db.delete(categories).where(eq(categories.userId, uid));
|
||||||
|
await db.delete(users).where(eq(users.id, uid));
|
||||||
|
console.log('Dev user deleted');
|
||||||
|
"
|
||||||
|
|
||||||
|
echo "Re-seeding..."
|
||||||
|
bun run db:seed:dev
|
||||||
|
|
||||||
|
echo "Done!"
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
// Temporary script to delete dev seed user and all related data.
|
|
||||||
// Usage: bun run scripts/nuke-dev-user.ts && bun run db:seed:dev
|
|
||||||
// Delete this file after use.
|
|
||||||
|
|
||||||
import { eq } from "drizzle-orm";
|
|
||||||
import { db } from "../src/db/index.ts";
|
|
||||||
import {
|
|
||||||
apiKeys,
|
|
||||||
categories,
|
|
||||||
items,
|
|
||||||
sessions,
|
|
||||||
settings,
|
|
||||||
setupItems,
|
|
||||||
setups,
|
|
||||||
threadCandidates,
|
|
||||||
threads,
|
|
||||||
users,
|
|
||||||
} from "../src/db/schema.ts";
|
|
||||||
|
|
||||||
const [user] = await db
|
|
||||||
.select()
|
|
||||||
.from(users)
|
|
||||||
.where(eq(users.logtoSub, "dev-user-seed"))
|
|
||||||
.limit(1);
|
|
||||||
|
|
||||||
if (!user) {
|
|
||||||
console.log("No dev user found");
|
|
||||||
process.exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
const uid = user.id;
|
|
||||||
|
|
||||||
// Delete in FK order
|
|
||||||
const userSetups = await db.select().from(setups).where(eq(setups.userId, uid));
|
|
||||||
for (const s of userSetups)
|
|
||||||
await db.delete(setupItems).where(eq(setupItems.setupId, s.id));
|
|
||||||
await db.delete(setups).where(eq(setups.userId, uid));
|
|
||||||
|
|
||||||
const userThreads = await db
|
|
||||||
.select()
|
|
||||||
.from(threads)
|
|
||||||
.where(eq(threads.userId, uid));
|
|
||||||
for (const t of userThreads)
|
|
||||||
await db.delete(threadCandidates).where(eq(threadCandidates.threadId, t.id));
|
|
||||||
await db.delete(threads).where(eq(threads.userId, uid));
|
|
||||||
|
|
||||||
await db.delete(items).where(eq(items.userId, uid));
|
|
||||||
await db.delete(settings).where(eq(settings.userId, uid));
|
|
||||||
await db.delete(apiKeys).where(eq(apiKeys.userId, uid));
|
|
||||||
await db.delete(sessions).where(eq(sessions.userId, uid));
|
|
||||||
await db.delete(categories).where(eq(categories.userId, uid));
|
|
||||||
await db.delete(users).where(eq(users.id, uid));
|
|
||||||
|
|
||||||
console.log("Dev user and all related data deleted");
|
|
||||||
Reference in New Issue
Block a user