From 889bda7e1d885498813ec03c16d84cb052c604b4 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Thu, 5 Jan 2017 14:21:48 +0100 Subject: Remove resources and identities with the account --- common/resourcefacade.cpp | 15 +++++++++++++++ common/resourcefacade.h | 1 + 2 files changed, 16 insertions(+) (limited to 'common') diff --git a/common/resourcefacade.cpp b/common/resourcefacade.cpp index 1c6b0c8..091970c 100644 --- a/common/resourcefacade.cpp +++ b/common/resourcefacade.cpp @@ -376,6 +376,21 @@ QPair, typename Sink::ResultEmitter(), runner->emitter()); } +KAsync::Job AccountFacade::remove(const Sink::ApplicationDomain::SinkAccount &account) +{ + using namespace Sink::ApplicationDomain; + auto job = KAsync::null(); + + //Remove all resources + job = job.then(Store::fetch(Sink::Query{}.filter(account))) + .each([] (const SinkResource::Ptr &resource) { return Store::remove(*resource); }); + //Remove all identities + job = job.then(Store::fetch(Sink::Query{}.filter(account))) + .each([] (const Identity::Ptr &identity) { return Store::remove(*identity); }); + + return job.then(LocalStorageFacade::remove(account)); +} + IdentityFacade::IdentityFacade() : LocalStorageFacade("identities", "type") { } diff --git a/common/resourcefacade.h b/common/resourcefacade.h index 509b37a..f72132d 100644 --- a/common/resourcefacade.h +++ b/common/resourcefacade.h @@ -108,6 +108,7 @@ class AccountFacade : public LocalStorageFacade remove(const Sink::ApplicationDomain::SinkAccount &resource) Q_DECL_OVERRIDE; virtual QPair, typename Sink::ResultEmitter::Ptr> load(const Sink::Query &query, const Sink::Log::Context &) Q_DECL_OVERRIDE; }; -- cgit v1.2.3