insertData method

Future<int?> insertData(
  1. StepCount event
)

Implementation

Future<int?> insertData(StepCount event) async {
  Step? lastStep = await getLastStep();

  int last = event.steps;
  int plus = lastStep?.plus ?? 0;
  int total = event.steps;
  int timestamp = event.timeStamp.millisecondsSinceEpoch;

  //어플 처음 실행이 아닐 경우
  if(lastStep != null) {
    //재부팅이 되었을 경우, 재부팅 시점의 걸음값을 정확히 모르는 상태에서 초기화 해야함
    if((lastStep.last ?? 0) > event.steps) {
      // delta_steps = event.steps;
      // steps = (lastStep.steps ?? 0) + event.steps;
      // 0부터 시작
      total = lastStep.total ?? 0;
      plus = lastStep.total ?? 0; //더해야 할 값 재조정

    } else {
      //재부팅이 되지 않고 계속 쌓일 경우
      total = event.steps + plus;
    }
  }

  debugPrint("** insertData last: ${last}, plus: ${plus}, total: ${total}, steps: ${event.steps}, timestamp: ${timestamp}");

  return await db?.insert(
    tableName,  // table name
    {
      'total': total,
      'last': last,
      'timestamp': timestamp,
      'plus': plus,
    },  // new post row data
    conflictAlgorithm: ConflictAlgorithm.replace,
  );

}