import { api } from "@/lib/api/client";

export type Role = {
	id: string;
	name: string;
	slug: string;
	description: string;
	isSystem: boolean;
	isActive: boolean;
	permissionCount: number;
	permissions?: string[];
	createdAt: string;
	updatedAt: string;
};

export type CreateRoleInput = {
	name: string;
	description: string;
};

export type UpdateRoleInput = {
	name?: string;
	description?: string;
	isActive?: boolean;
};

export function getRoles() {
	return api.get<{ items: Role[] }>("/roles");
}

export function getRole(id: string) {
	return api.get<Role>(`/roles/${id}`);
}

export function createRole(data: CreateRoleInput) {
	return api.post<Role>("/roles", data);
}

export function updateRole(id: string, data: UpdateRoleInput) {
	return api.patch<Role>(`/roles/${id}`, data);
}

export function replaceRolePermissions(id: string, permissions: string[]) {
	return api.put<Role>(`/roles/${id}/permissions`, { permissions });
}

export function deleteRole(id: string) {
	return api.delete<{ success: boolean }>(`/roles/${id}`);
}
