all repos — stealth-developers @ d0656abd066b7aca7e2b2a79e752f6ea4a9a9409

feat: script to anonymise transcripts
vi v@vt3e.cat
Wed, 04 Mar 2026 22:54:57 +0000
commit

d0656abd066b7aca7e2b2a79e752f6ea4a9a9409

parent

84dcb9423a0109db94a9ae2697775ff3e833ec4e

1 files changed, 45 insertions(+), 0 deletions(-)

jump to
A scripts/anonymise-database.ts

@@ -0,0 +1,45 @@

+import { db, ticketMessages, tickets } from "@/database"; +import { eq } from "drizzle-orm"; + +console.log("starting anonymisation of ticket logs..."); + +const allTickets = db.select().from(tickets).all(); + +console.log(`found ${allTickets.length} tickets to process`); + +let processedMessages = 0; +let updatedMessages = 0; + +for (const ticket of allTickets) { + const messages = db + .select() + .from(ticketMessages) + .where(eq(ticketMessages.ticketId, ticket.id)) + .all(); + + for (const message of messages) { + processedMessages++; + + if (message.content.includes(ticket.authorId)) { + const anonymisedContent = message.content.replace( + new RegExp(ticket.authorId, "g"), + "-".repeat(ticket.authorId.length), + ); + + db.update(ticketMessages) + .set({ content: anonymisedContent }) + .where(eq(ticketMessages.id, message.id)) + .run(); + + updatedMessages++; + + if (updatedMessages % 10 === 0) { + console.log(`updated ${updatedMessages} messages so far...`); + } + } + } +} + +console.log( + `done! processed ${processedMessages} messages, updated ${updatedMessages}`, +);