crud static method
Creates a standard CRUD API for a resource.
This is a convenience method that adds common CRUD endpoints:
- GET /resource (list all)
- GET /resource/{id} (get by ID)
- POST /resource (create)
- PUT /resource/{id} (update)
- DELETE /resource/{id} (delete)
Implementation
static SimpleApiBuilder crud({
required String title,
required String baseUrl,
required String resource,
String? description,
List<String>? listQueryParams,
bool includeSearch = false,
}) {
final builder = SimpleApiBuilder(
title: title,
baseUrl: baseUrl,
description: description,
);
// List all
builder.get(
'/$resource',
name: 'Get All $resource',
description: 'Retrieve all $resource items',
queryParams: [
...?listQueryParams,
if (includeSearch) 'search',
'_limit',
'_offset',
],
tags: [resource, 'read'],
responseType: 'List<${_capitalize(resource)}>',
);
// Get by ID
builder.get(
'/$resource/{id}',
name: 'Get $resource by ID',
description: 'Retrieve a specific $resource item',
tags: [resource, 'read'],
responseType: _capitalize(resource),
);
// Create
builder.post(
'/$resource',
name: 'Create $resource',
description: 'Create a new $resource item',
tags: [resource, 'write'],
responseType: _capitalize(resource),
);
// Update
builder.put(
'/$resource/{id}',
name: 'Update $resource',
description: 'Update an existing $resource item',
tags: [resource, 'write'],
responseType: _capitalize(resource),
);
// Delete
builder.delete(
'/$resource/{id}',
name: 'Delete $resource',
description: 'Delete a $resource item',
tags: [resource, 'write'],
responseType: 'void',
);
return builder;
}