mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-07-07 20:06:36 +02:00
TDB2 & CmdCustom
- Converted CmdCustom to use TDB2, which means that for the first time, 2.0 is now optimizing data load based on filter characteristics. This means that "task list" and "task next" etc are now *fast*. - Improved diagnostics for TDB2, for debugging.
This commit is contained in:
parent
9a862bc75a
commit
b1ad00313f
2 changed files with 12 additions and 19 deletions
20
src/TDB2.cpp
20
src/TDB2.cpp
|
@ -60,7 +60,7 @@ void TF2::target (const std::string& f)
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
const std::vector <Task>& TF2::get_tasks ()
|
||||
{
|
||||
// std::cout << "# TF2::get_tasks\n";
|
||||
// std::cout << "# TF2::get_tasks " << _file.data << "\n";
|
||||
|
||||
if (! _loaded_tasks)
|
||||
load_tasks ();
|
||||
|
@ -71,7 +71,7 @@ const std::vector <Task>& TF2::get_tasks ()
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
const std::vector <std::string>& TF2::get_lines ()
|
||||
{
|
||||
// std::cout << "# TF2::get_lines\n";
|
||||
// std::cout << "# TF2::get_lines " << _file.data << "\n";
|
||||
|
||||
if (! _loaded_lines)
|
||||
load_lines ();
|
||||
|
@ -82,7 +82,7 @@ const std::vector <std::string>& TF2::get_lines ()
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
const std::string& TF2::get_contents ()
|
||||
{
|
||||
// std::cout << "# TF2::get_contents\n";
|
||||
// std::cout << "# TF2::get_contents " << _file.data << "\n";
|
||||
|
||||
if (! _loaded_contents)
|
||||
load_contents ();
|
||||
|
@ -93,7 +93,7 @@ const std::string& TF2::get_contents ()
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
void TF2::add_task (const Task& task)
|
||||
{
|
||||
// std::cout << "# TF2::add_task\n";
|
||||
// std::cout << "# TF2::add_task " << _file.data << "\n";
|
||||
|
||||
_tasks.push_back (task); // For subsequent queries
|
||||
_added_tasks.push_back (task); // For commit/synch
|
||||
|
@ -103,7 +103,7 @@ void TF2::add_task (const Task& task)
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
void TF2::modify_task (const Task& task)
|
||||
{
|
||||
// std::cout << "# TF2::modify_task\n";
|
||||
// std::cout << "# TF2::modify_task " << _file.data << "\n";
|
||||
|
||||
// Modify in-place.
|
||||
std::vector <Task>::iterator i;
|
||||
|
@ -123,7 +123,7 @@ void TF2::modify_task (const Task& task)
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
void TF2::add_line (const std::string& line)
|
||||
{
|
||||
// std::cout << "# TF2::add_line\n";
|
||||
// std::cout << "# TF2::add_line " << _file.data << "\n";
|
||||
|
||||
_added_lines.push_back (line);
|
||||
_dirty = true;
|
||||
|
@ -133,7 +133,7 @@ void TF2::add_line (const std::string& line)
|
|||
// This is so that synch.key can just overwrite and not grow.
|
||||
void TF2::clear_lines ()
|
||||
{
|
||||
// std::cout << "# TF2::clear_lines\n";
|
||||
// std::cout << "# TF2::clear_lines " << _file.data << "\n";
|
||||
_lines.clear ();
|
||||
_dirty = true;
|
||||
}
|
||||
|
@ -239,7 +239,7 @@ void TF2::commit ()
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
void TF2::load_tasks ()
|
||||
{
|
||||
// std::cout << "# TF2::load_tasks\n";
|
||||
// std::cout << "# TF2::load_tasks " << _file.data << "\n";
|
||||
|
||||
if (! _loaded_lines)
|
||||
load_lines ();
|
||||
|
@ -283,7 +283,7 @@ void TF2::load_tasks ()
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
void TF2::load_lines ()
|
||||
{
|
||||
// std::cout << "# TF2::load_lines\n";
|
||||
// std::cout << "# TF2::load_lines " << _file.data << "\n";
|
||||
|
||||
if (! _loaded_contents)
|
||||
load_contents ();
|
||||
|
@ -295,7 +295,7 @@ void TF2::load_lines ()
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
void TF2::load_contents ()
|
||||
{
|
||||
// std::cout << "# TF2::load_contents\n";
|
||||
// std::cout << "# TF2::load_contents " << _file.data << "\n";
|
||||
|
||||
_contents = "";
|
||||
|
||||
|
|
|
@ -92,17 +92,10 @@ int CmdCustom::execute (std::string& output)
|
|||
context.a3.dump ("CmdCustom::execute");
|
||||
|
||||
// Load the data.
|
||||
// TODO Replace with TDB2.
|
||||
std::vector <Task> tasks;
|
||||
context.tdb.lock (context.config.getBoolean ("locking"));
|
||||
handleRecurrence ();
|
||||
context.tdb.load (tasks);
|
||||
context.tdb.commit ();
|
||||
context.tdb.unlock ();
|
||||
|
||||
// Apply filter.
|
||||
context.tdb2.commit ();
|
||||
std::vector <Task> filtered;
|
||||
filter (tasks, filtered);
|
||||
filter (filtered);
|
||||
|
||||
// Sort the tasks.
|
||||
std::vector <int> sequence;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue