The previous lint fix incorrectly renamed ctx to _ctx in server actions that actually USE ctx.user.id for authorization. This caused runtime 'ctx is not defined' errors when creating pages, modules, etc. Reverted all 13 action files back to using ctx properly.
84 lines
2.9 KiB
TypeScript
84 lines
2.9 KiB
TypeScript
'use server';
|
|
|
|
import { z } from 'zod';
|
|
|
|
import { authActionClient } from '@kit/next/safe-action';
|
|
import { getLogger } from '@kit/shared/logger';
|
|
import { getSupabaseServerClient } from '@kit/supabase/server-client';
|
|
|
|
import {
|
|
CreateEventSchema,
|
|
UpdateEventSchema,
|
|
EventRegistrationSchema,
|
|
CreateHolidayPassSchema,
|
|
} from '../../schema/event.schema';
|
|
import { createEventManagementApi } from '../api';
|
|
|
|
export const createEvent = authActionClient
|
|
.inputSchema(CreateEventSchema)
|
|
.action(async ({ parsedInput: input, ctx }) => {
|
|
const client = getSupabaseServerClient();
|
|
const logger = await getLogger();
|
|
const api = createEventManagementApi(client);
|
|
|
|
logger.info({ name: 'event.create' }, 'Creating event...');
|
|
const result = await api.createEvent(input);
|
|
logger.info({ name: 'event.create' }, 'Event created');
|
|
return { success: true, data: result };
|
|
});
|
|
|
|
export const updateEvent = authActionClient
|
|
.inputSchema(UpdateEventSchema)
|
|
.action(async ({ parsedInput: input, ctx }) => {
|
|
const client = getSupabaseServerClient();
|
|
const logger = await getLogger();
|
|
const api = createEventManagementApi(client);
|
|
|
|
logger.info({ name: 'event.update' }, 'Updating event...');
|
|
const result = await api.updateEvent(input);
|
|
logger.info({ name: 'event.update' }, 'Event updated');
|
|
return { success: true, data: result };
|
|
});
|
|
|
|
export const deleteEvent = authActionClient
|
|
.inputSchema(z.object({ eventId: z.string().uuid() }))
|
|
.action(async ({ parsedInput: input, ctx }) => {
|
|
const client = getSupabaseServerClient();
|
|
const logger = await getLogger();
|
|
const api = createEventManagementApi(client);
|
|
|
|
logger.info({ name: 'event.delete' }, 'Cancelling event...');
|
|
await api.deleteEvent(input.eventId);
|
|
logger.info({ name: 'event.delete' }, 'Event cancelled');
|
|
return { success: true };
|
|
});
|
|
|
|
export const registerForEvent = authActionClient
|
|
.inputSchema(EventRegistrationSchema)
|
|
.action(async ({ parsedInput: input, ctx }) => {
|
|
const client = getSupabaseServerClient();
|
|
const logger = await getLogger();
|
|
const api = createEventManagementApi(client);
|
|
|
|
logger.info({ name: 'event.register' }, 'Registering for event...');
|
|
const result = await api.registerForEvent(input);
|
|
logger.info({ name: 'event.register' }, 'Registered for event');
|
|
return { success: true, data: result };
|
|
});
|
|
|
|
export const createHolidayPass = authActionClient
|
|
.inputSchema(CreateHolidayPassSchema)
|
|
.action(async ({ parsedInput: input, ctx }) => {
|
|
const client = getSupabaseServerClient();
|
|
const logger = await getLogger();
|
|
const api = createEventManagementApi(client);
|
|
|
|
logger.info(
|
|
{ name: 'event.createHolidayPass' },
|
|
'Creating holiday pass...',
|
|
);
|
|
const result = await api.createHolidayPass(input);
|
|
logger.info({ name: 'event.createHolidayPass' }, 'Holiday pass created');
|
|
return { success: true, data: result };
|
|
});
|