db: fix broken command "list ... group"

Grouping in the "list" command was completely broken from the start,
unlike "count group".  I have no idea what I have been thinking when I
wrote commit ae178c77bd, but it didn't
make any sense.

This commit is a rewrite of the feature.

For clients to be able to detect this feature, this commit also
increments the protocol version.
This commit is contained in:
Max Kellermann
2018-10-22 11:35:22 +02:00
parent 7cfe929c36
commit db27bb76e2
15 changed files with 145 additions and 332 deletions

View File

@@ -22,9 +22,12 @@
#include "Visitor.hxx"
#include "tag/TagType.h"
#include "tag/Mask.hxx"
#include "Compiler.h"
#include <map>
#include <set>
#include <string>
#include <time.h>
struct DatabasePlugin;
@@ -99,12 +102,9 @@ public:
return Visit(selection, VisitDirectory(), visit_song);
}
/**
* Visit all unique tag values.
*/
virtual void VisitUniqueTags(const DatabaseSelection &selection,
TagType tag_type, tag_mask_t group_mask,
VisitTag visit_tag) const = 0;
virtual std::map<std::string, std::set<std::string>> CollectUniqueTags(const DatabaseSelection &selection,
TagType tag_type,
TagType group=TAG_NUM_OF_ITEM_TYPES) const = 0;
virtual DatabaseStats GetStats(const DatabaseSelection &selection) const = 0;