This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { calculateBalances } from '../../../shared/utils/balances'
|
||||
import { calculateBalances } from '~~/shared/utils/balances'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const slug = getRouterParam(event, 'slug')!
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { useDb } from '../../../database/client'
|
||||
import { expenseParticipants, expenses } from '../../../database/schema'
|
||||
import { useDb } from '~~/server/database/client'
|
||||
import { expenseParticipants, expenses } from '~~/server/database/schema'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const slug = getRouterParam(event, 'slug')!
|
||||
@@ -29,7 +29,7 @@ export default defineEventHandler(async (event) => {
|
||||
|
||||
const db = useDb()
|
||||
const [expense] = await db.insert(expenses).values({ potSlug: slug, description, amountCents, payerId }).returning()
|
||||
await db.insert(expenseParticipants).values(participantIds.map(participantId => ({ expenseId: expense.id, participantId })))
|
||||
await db.insert(expenseParticipants).values(participantIds.map(participantId => ({ expenseId: expense!.id, participantId })))
|
||||
|
||||
return { ...expense, participantIds }
|
||||
})
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { and, eq } from 'drizzle-orm'
|
||||
import { useDb } from '../../../../database/client'
|
||||
import { expenseParticipants, expenses } from '../../../../database/schema'
|
||||
import { useDb } from '~~/server/database/client'
|
||||
import { expenseParticipants, expenses } from '~~/server/database/schema'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const slug = getRouterParam(event, 'slug')!
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { and, eq } from 'drizzle-orm'
|
||||
import { useDb } from '../../../../database/client'
|
||||
import { expenseParticipants, expenses } from '../../../../database/schema'
|
||||
import { useDb } from '~~/server/database/client'
|
||||
import { expenseParticipants, expenses } from '~~/server/database/schema'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const slug = getRouterParam(event, 'slug')!
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { useDb } from '../../../database/client'
|
||||
import { participants } from '../../../database/schema'
|
||||
import { useDb } from '~~/server/database/client'
|
||||
import { participants } from '~~/server/database/schema'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const slug = getRouterParam(event, 'slug')!
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
import { and, eq } from 'drizzle-orm'
|
||||
import { useDb } from '~~/server/database/client'
|
||||
import { expenseParticipants, expenses, participants } from '~~/server/database/schema'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const slug = getRouterParam(event, 'slug')!
|
||||
const id = Number(getRouterParam(event, 'id'))
|
||||
await getPotOrThrow(slug)
|
||||
|
||||
const db = useDb()
|
||||
const [existing] = await db.select().from(participants).where(and(eq(participants.id, id), eq(participants.potSlug, slug)))
|
||||
if (!existing) {
|
||||
throw createError({ statusCode: 404, statusMessage: 'Participant not found' })
|
||||
}
|
||||
|
||||
const [asPayer] = await db.select().from(expenses).where(eq(expenses.payerId, id)).limit(1)
|
||||
const [asSplit] = await db.select().from(expenseParticipants).where(eq(expenseParticipants.participantId, id)).limit(1)
|
||||
if (asPayer || asSplit) {
|
||||
throw createError({ statusCode: 409, statusMessage: 'Cannot remove a participant with expenses or payments' })
|
||||
}
|
||||
|
||||
await db.delete(participants).where(eq(participants.id, id))
|
||||
|
||||
return { success: true }
|
||||
})
|
||||
@@ -1,7 +1,7 @@
|
||||
import { and, eq } from 'drizzle-orm'
|
||||
import { isValidPaymentLink } from '../../../../../shared/utils/paymentLink'
|
||||
import { useDb } from '../../../../database/client'
|
||||
import { participants } from '../../../../database/schema'
|
||||
import { isValidPaymentLink } from '~~/shared/utils/paymentLink'
|
||||
import { useDb } from '~~/server/database/client'
|
||||
import { participants } from '~~/server/database/schema'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const slug = getRouterParam(event, 'slug')!
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { useDb } from '../../../database/client'
|
||||
import { expenseParticipants, expenses } from '../../../database/schema'
|
||||
import { useDb } from '~~/server/database/client'
|
||||
import { expenseParticipants, expenses } from '~~/server/database/schema'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const slug = getRouterParam(event, 'slug')!
|
||||
@@ -27,7 +27,7 @@ export default defineEventHandler(async (event) => {
|
||||
const [payment] = await db.insert(expenses)
|
||||
.values({ potSlug: slug, type: 'payment', description: 'Settlement', amountCents, payerId: fromId })
|
||||
.returning()
|
||||
await db.insert(expenseParticipants).values({ expenseId: payment.id, participantId: toId })
|
||||
await db.insert(expenseParticipants).values({ expenseId: payment!.id, participantId: toId })
|
||||
|
||||
return { ...payment, participantIds: [toId] }
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user