Structs
Use an existing database pool
type encapsulating username and hashed password of a user
Data required to register a new user
data required to update them email of a user
Enums
Connect to databse
types of credentials used as identifiers during login
Functions
map postgres errors to ServiceError types
map custom row not found error to DB error