Features listed below are used for versioning. See more details at used versioning pattern: AO-SemVer
- Write "AuditableEntity" to be extended by all auditable entities
- Write "User" to be extended by all individual types.
- Write "Buyer" to represent a customer.
- Write "Seller" to represent a any kind of seller.
- Write "SellerAuthority" to represent the roles a seller can have.
- A store must have a "LegalEntity", thus write "LegalEntity" to represent a legal entity.
- Write "Store" to represent stores.
- Write a StoreType enum to represent the type of store. Currently of no use, but for future scalability.
- A store must have Sellers to manage it. (bidirectional one to many)
- Write Address class, it can be owned => unidirectional relationship.
- Represent a collection of addresses with "AddressCollection" class.
- A buyer must have an "AddressCollection". => currently unidirectional relationship to allow AddressCollection to be used by any entity.
- A store must have an "Address".
- A legal entity must have an "Address"
- Change address collection to be a list of addresses. Still address is not ownership of any relationships it has. But no more middle class anymore.
- Write "Rating" to be used by "Review" to represent a rating.
- Write "Review" to represent a review.
+3. Reviews should be owned by the store, as well.
- Store rating should be updatable without going through the entire review list and rating again.
-
Buyer controller is written.
-
Buyer service is written.
-
Buyer repository is written.
-
Buyer Response Dto(s) are written.
-
Buyer Request Dto(s) are written.
-
Buyer dto mapper(s) are written.
-
Store controller is written.
-
Store service is written.
-
Store repository is written.
-
Store Response Dto(s) are written.
-
Store Request Dto(s) are written.
-
Store dto mapper(s) are written.
-
Review controller is written.
-
Review service is written.
-
Review repository is written.
-
Review Response Dto(s) are written.
-
Review Request Dto(s) are written.
-
Address controller is written.
-
Address service is written.
-
Address repository is written.
-
Address Response Dto(s) are written.
-
Address Request Dto(s) are written.
-
Address coordinates retrieveing api is written.
-
On update requests, AuditableEntity fields should persist.
- Write a general specificiation to be used accross all services that will retrieve only active entities (An entity that is not deleted and is enabled.)
- Use the specification in all services.
- Services should be scalable to allow custom specifications to be used.
- Write custom exceptions that provides detailed information.
- Write a global exception handler, capture all custom exceptions and return a detailed error message.
- Write a response structure.
- Write a response builder to build the response structure.
- Write a Tuple record that stores same type of two objects. Tuple should have a mapped function to map the objects to a new object. Main use scenario is update requests.
- Write a spatialRecommendation engine to retrieve store listing in a recommended order.
- Write a spatialRecommendation controller to handle requests to retrieve store listing in a recommended order.
- Write an indexing engine to enable indexing operations on Solr.
- Better and patch-oriented store service (controller etc.).
- Store update requests also update Solr index.
- Prepare logging configurations.
- Insert logging statements to certain parts of the code.
- Add fundamental swagger documentation
- Dockerise the application
- Write unit tests.
- Write integration tests.
- Write validation annotations to controllers.
- Add more detailed swagger documentation.
- Pageable Recommendation listing (thanks to modifiable query structure).
- Store rating average should be periodically calculated from scratch and updated in the store table.
- Extend api documentation