Pure OTP Exercise
Create a todo list using only pure processes
- Add a todo to a todo-list
TODO.add(%{ title: "study otp", completed: false })
=> %{ id: "md5-943jg4938j39", title: "study otp", completed: false, created_at:"2018-10-02" }
- List todos
TODO.list
=> [ %{ id: "md5-f0932jf934", title: "study otp", completed: false } ]
- Mark todo as completed
TODO.complete("md5-943jg4938j39")
=> %{ id: "md5-943jg4938j39", title: "study otp", completed: true, created_at: "2018-10-03", completed_at:"2018-10-03" }
- Add validation to not allow duplicated todos titles
TODO.add(%{ title: "study otp", completed: false })
=> %{ id: "md5-943jg4938j39", title: "study otp", completed: false, created_at:"2018-10-02" }
TODO.add(%{ title: "study otp", completed: false })
=> %{ error: "task already created"}
- Add validation to not allow completion on already completed tasks
TODO.complete("md5-943jg4938j39")
=> %{ id: "md5-943jg4938j39", title: "study otp", completed: true, created_at: "2018-10-03", completed_at:"2018-10-03" }
TODO.complete("md5-943jg4938j39")
=> %{ error: "task already completed"}
-
Add Supervision to the Application, when the todo process crashes it will be restarted automatically
-
Tests