后端开发代写｜Backend Take-home Project
- Problem Statement: As a user, I should be able
- to register into the system with my first name, last name, email and multiple addresses with information like line 1, line 2, city, state, zip.
- to get the list of all the users in the system.
- to search a user by email and confirm if the user exists.
- to edit the address of the user but retain the old address.
- to update user information.
- to delete users from the system but am able to audit the deletion of users.
- Create an architectural diagram demonstrating the workflow of your solution to the problems below.
- Create REST API using Javamicroservice with distinct proto’s/data model and service with gradle or maven dependency management system.
- Microservice will support below endpoints
- UpsertUserAPI to update user if exists else create a new
- IsUserExistsAPI which takes input as email and returns appropriate status
- ListUsersAPI to return list of all users
- GetUserDetailsAPI inputs user id and returns user details including address.
- DeleteUserAPI which takes user id and marks the user as deleted.
- UpdateAddressAPI which takes user id and updates user address such that the old address is archived.
- Your goal is to architect a solution that will
- Create right protoBuf/data model for required API
- Demonstrate OOP principles along with separation of concerns.
- Demonstrate use of design patterns necessary for the solution.
- Plan to include indexes to optimize query performance.
- Create unit tests and integration tests to test the system behavior.
- Please include the database migration script.
- You are welcome to use any open source libraries and/or create additional services to accomplish your tasks.
- You areopen to use any database, preferred Postgres
- Setup database connections with below settings or provide ability to configure connection via env variables url host – localhost, dbname – backend_test, username – varo, password – varo.
C|C++|Java|Python|Matlab|Android|Jsp|Prolog|MIPS|Haskell|R|Linux|C#|PHP|SQL| .Net|Hadoop|Processing|JS|Ruby|Scala|Rust|Data Mining|数据库|Oracle|Mysql| Sqlite|IOS|Data Mining|网络编程|多线程编程|Linux编程|操作系统| 计算机网络|留学生|编程|程序|代写|加急|个人代写|作业代写|Assignment