33 lines
986 B
D
33 lines
986 B
D
module profile.data;
|
|
|
|
import handy_httpd.components.optional;
|
|
import profile.model;
|
|
|
|
/// Repository for interacting with the set of profiles belonging to a user.
|
|
interface ProfileRepository {
|
|
Optional!Profile findByName(string name);
|
|
Profile createProfile(string name);
|
|
Profile[] findAll();
|
|
void deleteByName(string name);
|
|
ProfileDataSource getDataSource(in Profile profile);
|
|
}
|
|
|
|
/// Repository for accessing the properties of a profile.
|
|
interface PropertiesRepository {
|
|
Optional!string findProperty(string propertyName);
|
|
void setProperty(string name, string value);
|
|
void deleteProperty(string name);
|
|
ProfileProperty[] findAll();
|
|
}
|
|
|
|
/**
|
|
* A data source for all data contained within a profile. This serves as the
|
|
* gateway for all data access operations for a profile.
|
|
*/
|
|
interface ProfileDataSource {
|
|
import account.data : AccountRepository;
|
|
|
|
PropertiesRepository getPropertiesRepository();
|
|
AccountRepository getAccountRepository();
|
|
}
|