interface UserListParams {
page?: number;
limit?: number;
status?: 'active' | 'inactive';
role?: string[];
search?: string;
}
function buildUserParams(params: UserListParams): URLSearchParamsInit {
const entries: [string, string][] = [];
if (params.page !== undefined) {
entries.push(['page', params.page.toString()]);
}
if (params.limit !== undefined) {
entries.push(['limit', params.limit.toString()]);
}
if (params.status) {
entries.push(['status', params.status]);
}
if (params.role) {
params.role.forEach(r => entries.push(['role', r]));
}
if (params.search) {
entries.push(['search', params.search]);
}
return entries;
}
// Usage
const params = buildUserParams({
page: 1,
limit: 10,
status: 'active',
role: ['admin', 'user'],
search: 'john'
});
await http.instance.get('users', {
searchParams: params
});