add method

Future<String> add({
  1. required String processName,
  2. required QueuePriority priority,
  3. required Future<void> function(),
})

Adds a task to the queue and starts processing pending work.

Implementation

Future<String> add({
  required String processName,
  required QueuePriority priority,
  required Future<void> Function() function,
}) async {
  final database = await _ensureInitialized();
  final id = IdService.generate();

  _memoryFunctions[id] = function;

  await database.insert(
    tableName,
    {
      'process_id': id,
      'parent_process_id': null,
      'process_name': processName,
      'state': QueueState.pending.name,
      'retry_count': 0,
      'priority': getPriorityValue(priority),
      'created_at': DateTime.now().millisecondsSinceEpoch,
    },
  );

  unawaited(_startProcessing());

  return id;
}