Hermod
A cross-platform, modular and fully GDPR-compliant email archival solution!
Loading...
Searching...
No Matches
DatabaseConnector.cs
Go to the documentation of this file.
1using System;
2
4
5 using Core.Accounts;
6
7 using System.Threading.Tasks;
8
15 public abstract class DatabaseConnector: IDisposable {
16
17 protected object m_lock;
18
19 protected DatabaseConnector() {
20 m_lock = new object();
21 }
22
26 public abstract void Connect();
27
32 public abstract Task ConnectAsync();
33
38 public abstract Task<bool> IsInitialisedAsync();
39
44 public abstract Task InitialiseDatabaseAsync();
45
52 public abstract Task<List<Domain>> GetDomainsAsync(bool includeUsers = true, params string[] tlds);
53
59 public abstract Task GetUsersForDomainAsync(Domain domain);
60
65 public abstract Task<int> PurgeDatabasesAsync();
66
73 public abstract Task<bool> RemoveUserFromDomainAsync(Domain domain, DomainUser user);
74
80 public abstract Task<int> PurgeUsersFromDomainAsync(Domain domain);
81
83 public abstract void Dispose();
84
90 public abstract Task<Domain> AddDomainAsync(string domainName);
91
98 public abstract Task<bool> RemoveDomainAsync(Domain domain);
99 }
100}
101
Represents a single domain.
Definition: Domain.cs:20
This class represents a single user (email account) in a domain.
Definition: DomainUser.cs:11
Defines a simple contract between the EmailImport plugin and any database connectors.
abstract Task GetUsersForDomainAsync(Domain domain)
Asynchronously gets all the users for a given domain.
abstract Task< bool > RemoveDomainAsync(Domain domain)
Removes a single domain from the database.
abstract Task< bool > RemoveUserFromDomainAsync(Domain domain, DomainUser user)
Asynchronously removes a single user from a given domain.
abstract Task< bool > IsInitialisedAsync()
Asynchronously gets a value indicating whether or not the database is initialised.
abstract Task< int > PurgeUsersFromDomainAsync(Domain domain)
Asynchronously purges all users from a given domain.
abstract Task InitialiseDatabaseAsync()
Asynchronously initialises the database.
abstract Task< int > PurgeDatabasesAsync()
Asynchronously purges all databases.
abstract Task ConnectAsync()
Asynchronously connect to the database.
abstract Task< List< Domain > > GetDomainsAsync(bool includeUsers=true, params string[] tlds)
Asynchronously gets a list of all known domains.
abstract Task< Domain > AddDomainAsync(string domainName)
Adds a single domain to the database.
abstract void Connect()
Connect to the database.