import { Client } from '@vulog/aima-client';
import { z } from 'zod';

const schema = z.object({
    profileId: z.string().uuid(),
    serviceId: z.string().uuid(),
});

/**
 * Register a user profile to a service.
 *
 * Swagger: `PUT /fleets/{fleetId}/profiles/{profileId}/services/{id}` (admin-user,
 * operationId `requestServiceRegistration`).
 */
export const requestServiceRegistration = async (
    client: Client,
    profileId: string,
    serviceId: string
): Promise<string> => {
    const result = schema.safeParse({ profileId, serviceId });
    if (!result.success) {
        throw new TypeError('Invalid args', { cause: result.error.issues });
    }

    return client
        .put<string>(
            `boapi/proxy/user/fleets/${client.clientOptions.fleetId}/profiles/${result.data.profileId}/services/${result.data.serviceId}`
        )
        .then(({ data }) => data);
};
