routeInsert method

FinchRoute routeInsert(
  1. String path, {
  2. List<String> methods = const [Methods.POST],
  3. Future<ApiDoc>? apiDoc()?,
  4. AuthController? auth,
  5. List<String> extraPath = const [],
  6. List<String> excludePaths = const [],
  7. List<String> hosts = const ['*'],
  8. Map<String, Object?> params = const {},
  9. List<String> permissions = const [],
  10. List<int> ports = const [],
})

Creates a route for inserting new documents into the collection. This method generates a REST API endpoint that handles document creation with automatic form validation. The route processes POST requests containing document data, validates it against the form definition, and inserts it into the collection. Parameters:

  • path - URL path for this route
  • methods - HTTP methods to accept (default: POST)
  • apiDoc - Optional API documentation generator
  • auth - Optional authentication controller
  • extraPath - Additional path segments to match
  • excludePaths - Path segments to exclude from matching
  • hosts - Host names to match (default: all hosts)
  • params - Additional route parameters
  • permissions - Required permissions for access
  • ports - Specific ports to match Returns a FinchRoute configured for creating documents. Success response (201):
{
  "success": true,
  "message": "inserted",
  "data": {"_id": "...", "name": "..."}
}

Error response (502):

{
  "success": false,
  "message": "error",
  "form": {"field1": ["error message"]}
}

Implementation

FinchRoute routeInsert(
  String path, {
  List<String> methods = const [Methods.POST],
  Future<ApiDoc>? Function()? apiDoc,
  AuthController<dynamic>? auth,
  List<String> extraPath = const [],
  List<String> excludePaths = const [],
  List<String> hosts = const ['*'],
  Map<String, Object?> params = const {},
  List<String> permissions = const [],
  List<int> ports = const [],
}) {
  Future<String> index() async {
    final rq = Context.rq;
    var res = await insert(rq.getAll());

    if (!res.success) {
      return rq.renderData(
        data: {
          'form': res.toJson(),
          'success': false,
          'message': 'error',
        },
        status: 502,
      );
    }

    return rq.renderData(data: {
      'data': res.formValues(),
      'success': true,
      'message': 'inserted',
    });
  }

  return FinchRoute(
    path: path,
    methods: methods,
    apiDoc: apiDoc,
    auth: auth,
    excludePaths: excludePaths,
    extraPath: extraPath,
    hosts: hosts,
    params: params,
    permissions: permissions,
    ports: ports,
    index: index,
  );
}