SleepDetailsToCsvRow.java
package com.seebie.server.mapper.entitytodto;
import com.seebie.server.dto.SleepDetails;
import java.util.List;
import java.util.function.Function;
import static com.seebie.server.mapper.entitytodto.LocalDateTimeConverter.format;
/**
* Convert a SleepDetails object to a CSV row.
* Use SleepDetails not just SleepData because the details is what carries the duration in minutes.
*/
public class SleepDetailsToCsvRow implements Function<SleepDetails, List<String>> {
@Override
public List<String> apply(SleepDetails details) {
var data = details.sleepData();
return List.of(
format(data.startTime()),
format(data.stopTime()),
data.zoneId(),
Integer.toString(details.minutesAsleep()),
Integer.toString(data.minutesAwake()),
data.notes()
);
}
}