finnow/finnow-api/source/profile/data.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();
}