Add .npm-cache to gitignore; users route and mobile header updates
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { Hono } from 'hono';
|
||||
import { zValidator } from '@hono/zod-validator';
|
||||
import { z } from 'zod';
|
||||
import { db, dbGet, dbAll, users, tickets, events, payments } from '../db/index.js';
|
||||
import { db, dbGet, dbAll, users, tickets, events, payments, magicLinkTokens, userSessions, invoices, auditLogs, emailLogs, paymentOptions, legalPages, siteSettings } from '../db/index.js';
|
||||
import { eq, desc, sql } from 'drizzle-orm';
|
||||
import { requireAuth } from '../lib/auth.js';
|
||||
import { getNow } from '../lib/utils.js';
|
||||
@@ -191,14 +191,73 @@ usersRouter.delete('/:id', requireAuth(['admin']), async (c) => {
|
||||
.where(eq((tickets as any).userId, id))
|
||||
);
|
||||
|
||||
// Delete payments associated with user's tickets
|
||||
// Delete invoices associated with user's tickets (invoices reference payments which reference tickets)
|
||||
for (const ticket of userTickets) {
|
||||
// Get payments for this ticket
|
||||
const ticketPayments = await dbAll<any>(
|
||||
(db as any)
|
||||
.select()
|
||||
.from(payments)
|
||||
.where(eq((payments as any).ticketId, ticket.id))
|
||||
);
|
||||
|
||||
// Delete invoices for each payment
|
||||
for (const payment of ticketPayments) {
|
||||
await (db as any).delete(invoices).where(eq((invoices as any).paymentId, payment.id));
|
||||
}
|
||||
|
||||
// Delete payments for this ticket
|
||||
await (db as any).delete(payments).where(eq((payments as any).ticketId, ticket.id));
|
||||
}
|
||||
|
||||
// Delete invoices directly associated with the user (if any)
|
||||
await (db as any).delete(invoices).where(eq((invoices as any).userId, id));
|
||||
|
||||
// Delete user's tickets
|
||||
await (db as any).delete(tickets).where(eq((tickets as any).userId, id));
|
||||
|
||||
// Delete magic link tokens for the user
|
||||
await (db as any).delete(magicLinkTokens).where(eq((magicLinkTokens as any).userId, id));
|
||||
|
||||
// Delete user sessions
|
||||
await (db as any).delete(userSessions).where(eq((userSessions as any).userId, id));
|
||||
|
||||
// Set userId to null in audit_logs (nullable reference)
|
||||
await (db as any)
|
||||
.update(auditLogs)
|
||||
.set({ userId: null })
|
||||
.where(eq((auditLogs as any).userId, id));
|
||||
|
||||
// Set sentBy to null in email_logs (nullable reference)
|
||||
await (db as any)
|
||||
.update(emailLogs)
|
||||
.set({ sentBy: null })
|
||||
.where(eq((emailLogs as any).sentBy, id));
|
||||
|
||||
// Set updatedBy to null in payment_options (nullable reference)
|
||||
await (db as any)
|
||||
.update(paymentOptions)
|
||||
.set({ updatedBy: null })
|
||||
.where(eq((paymentOptions as any).updatedBy, id));
|
||||
|
||||
// Set updatedBy to null in legal_pages (nullable reference)
|
||||
await (db as any)
|
||||
.update(legalPages)
|
||||
.set({ updatedBy: null })
|
||||
.where(eq((legalPages as any).updatedBy, id));
|
||||
|
||||
// Set updatedBy to null in site_settings (nullable reference)
|
||||
await (db as any)
|
||||
.update(siteSettings)
|
||||
.set({ updatedBy: null })
|
||||
.where(eq((siteSettings as any).updatedBy, id));
|
||||
|
||||
// Clear checkedInByAdminId references in tickets
|
||||
await (db as any)
|
||||
.update(tickets)
|
||||
.set({ checkedInByAdminId: null })
|
||||
.where(eq((tickets as any).checkedInByAdminId, id));
|
||||
|
||||
// Delete the user
|
||||
await (db as any).delete(users).where(eq((users as any).id, id));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user