create method

Future<Response<T>> create(
  1. String id,
  2. Map<String, dynamic> data, {
  3. DataFieldParams? params,
  4. bool merge = true,
  5. bool createRefs = false,
})

Method to create data with optional data source builder.

Example:

T newData = //...;
repository.create(
  newData,
  params: Params({"field1": "value1", "field2": "value2"}),
);

Implementation

Future<Response<T>> create(
  String id,
  Map<String, dynamic> data, {
  DataFieldParams? params,
  bool merge = true,
  bool createRefs = false,
}) async {
  if (id.isEmpty) return Response(status: Status.invalidId);
  if (data.isEmpty) return Response(status: Status.invalid);
  return execute(() {
    final path = ref(params, DataModifiers.create, id);
    if (isEncryptor) {
      return encryptor.input(data).then((raw) {
        if (raw.isEmpty) {
          return Response(status: Status.error, error: "Encryption error!");
        }
        return operation
            .create(path, raw, merge: merge, createRefs: createRefs)
            .then((value) {
          return Response(status: Status.ok, data: build(data));
        });
      });
    } else {
      return operation
          .create(path, data, merge: merge, createRefs: createRefs)
          .then((v) {
        return Response(status: Status.ok, data: build(data));
      });
    }
  });
}