addRecord method

Future<(DatabaseRecord, bool)> addRecord(
  1. DatabaseRecord record, {
  2. bool isCancelledFile()?,
  3. void onProgressFile(
    1. double progress
    )?,
})

Add Database Record

Return-> (record, result)

parentId ?? JsonDBAdapter.getParentId(T value)

/// For JsonRecord
abstract class JsonDBAdapter<T>
  int getParentId(T value) => -1; <--- Need To Override

Implementation

Future<(DatabaseRecord, bool)> addRecord(
  DatabaseRecord record, {
  bool Function()? isCancelledFile,
  void Function(double progress)? onProgressFile,
}) async {
  if (!isOpened) throw Exception('You Should Call -> SMDB.open()');

  // lastindex
  if (record.id == 0 || record.id == -1) {
    record.id = _indexedDB.generateNextId();
  }

  bool result = false;

  final file = File(path);
  final raf = await file.open(mode: FileMode.append);
  if (record is FileRecord) {
    result = await record.write(
      raf,
      isCancelled: isCancelledFile,
      onProgress: onProgressFile,
    );
  } else {
    await record.write(raf);
    result = true;
  }

  // add index db
  if (record is JsonRecord) {
    record.jsonBytes = null;
  }
  await _indexedDB.addRecordToRAM(record);

  await raf.close();

  return (record, result);
}