mirror of
https://github.com/GothenburgBitFactory/timewarrior.git
synced 2025-07-07 20:06:39 +02:00
Database: Segmented interval in ::deleteInterval
This commit is contained in:
parent
709aa8fe41
commit
25be7c82e7
1 changed files with 11 additions and 6 deletions
|
@ -136,13 +136,18 @@ void Database::addInterval (const Interval& interval)
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
void Database::deleteInterval (const Interval& interval)
|
void Database::deleteInterval (const Interval& interval)
|
||||||
{
|
{
|
||||||
std::vector <Datafile>::reverse_iterator ri;
|
auto intervalRange = interval.range ();
|
||||||
for (ri = _files.rbegin (); ri != _files.rend (); ri++)
|
for (auto& segment : segmentRange (intervalRange))
|
||||||
if (ri->deleteInterval (interval))
|
{
|
||||||
break;
|
// Get the index into _files for the appropriate Datafile, which may be
|
||||||
|
// created on demand.
|
||||||
|
auto df = getDatafile (segment.start ().year (), segment.start ().month ());
|
||||||
|
|
||||||
// Datafile for this interval does not exist. This means the data file was
|
// Intersect the original interval range, and the segment.
|
||||||
// deleted/removed, or the interval is old. Nothing to do.
|
Interval segmentedInterval (interval);
|
||||||
|
segmentedInterval.range (intervalRange.intersect (segment));
|
||||||
|
_files[df].deleteInterval (segmentedInterval);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue