Skip to content

sakupi01/rust-todo-be

Repository files navigation

ci

TODO API

How to run server

Setup .env

$ mv .env.template .env
$ vim .env  # Fill your value

Run via Docker Compose

$ mv .env.template .env.docker
$ vim .env.docker  # Fill your value
$ docker-compose up --build

Architectural Description - Clean Architecture

Figure: Clean Architecture

Figure: Clean Architecture2

src
โ”œโ”€โ”€ db // ๐ŸŸขDB ใƒขใƒ‡ใƒซ
โ”‚   โ”œโ”€โ”€ init_todo_db.rs
โ”‚   โ”œโ”€โ”€ init_user_db.rs
โ”‚   โ”œโ”€โ”€ ram_zatsu_todo_db.rs
โ”‚   โ””โ”€โ”€ ram_zatsu_user_db.rs
โ”œโ”€โ”€ db.rs
โ”œโ”€โ”€ domain // ๐ŸŸขใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใ€‚ๆœ€้‡่ฆใƒ“ใ‚ธใƒใ‚นใƒซใƒผใƒซใ‚’ใ‚ซใƒ—ใ‚ปใƒซๅŒ–ใ—ใŸใ‚‚ใฎ
โ”‚   โ”œโ”€โ”€ todo.rs
โ”‚   โ””โ”€โ”€ user.rs
โ”œโ”€โ”€ domain.rs
โ”œโ”€โ”€ frameworkใ€€// ๐ŸŸขAPIใƒใƒณใƒ‰ใƒฉ
โ”‚   โ””โ”€โ”€ api_server.rs
โ”œโ”€โ”€ framework.rs
โ”œโ”€โ”€ interface_adapter // ๐ŸŸขMVCใ‚’ไฟๆŒใ—ใฆใ„ใ‚‹ใƒฌใ‚คใƒคใƒผ
โ”‚   โ”œโ”€โ”€ controller // ๐ŸŸข ใƒชใ‚ฏใ‚จใ‚นใƒˆใ‚’ๅ—ใ‘ๅ–ใ‚Šใ€ใƒฌใ‚นใƒใƒณใ‚นใ‚’่ฟ”ใ™ใŸใ‚ใฎ็ช“ๅฃ
โ”‚   โ”‚   โ”œโ”€โ”€ web_todo.rs
โ”‚   โ”‚   โ””โ”€โ”€ web_user.rs
โ”‚   โ”œโ”€โ”€ controller.rs
โ”‚   โ”œโ”€โ”€ presenter // ๐ŸŸข Output Dataใ‹ใ‚‰View Modelใงๅฎš็พฉใ•ใ‚Œใฆใ„ใ‚‹ๅž‹ใซๅค‰ๆ›ใ™ใ‚‹ใŸใ‚ใฎๅ‡ฆ็†
โ”‚   โ”‚   โ”œโ”€โ”€ todo.rs
โ”‚   โ”‚   โ””โ”€โ”€ user.rs
โ”‚   โ”œโ”€โ”€ presenter.rs
โ”‚   โ”œโ”€โ”€ viewmodel // ๐ŸŸข ใƒฌใ‚นใƒใƒณใ‚นใฎๅž‹
โ”‚   โ”‚   โ”œโ”€โ”€ todo.rs
โ”‚   โ”‚   โ””โ”€โ”€ user.rs
โ”‚   โ””โ”€โ”€ viewmodel.rs
โ”œโ”€โ”€ interface_adapter.rs
โ”œโ”€โ”€ lib.rs
โ”œโ”€โ”€ main.rs
โ”œโ”€โ”€ usecase // ๐ŸŸขใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณๅ›บๆœ‰ใฎใƒ“ใ‚ธใƒใ‚นใƒซใƒผใƒซ
โ”‚   โ”œโ”€โ”€ data_access // ๐ŸŸขDBใฎๅž‹ใ‚’usecaseใงไฝฟ็”จใ™ใ‚‹ๅž‹ใจๅˆใ‚ใ›ใ‚‹
โ”‚   โ”‚   โ”œโ”€โ”€ todo.rs
โ”‚   โ”‚   โ””โ”€โ”€ user.rs
โ”‚   โ”œโ”€โ”€ data_access.rs
โ”‚   โ”œโ”€โ”€ input_boundary // ๐ŸŸข interface_adapterโ†’usecaseใธใฎ็›ดๆŽฅไพๅญ˜ใ‚’้˜ฒใใŸใ‚ใฎIF(IFๅˆ†้›ขใฎๆณ•ๅ‰‡)
โ”‚   โ”‚   โ”œโ”€โ”€ todo.rs
โ”‚   โ”‚   โ””โ”€โ”€ user.rs
โ”‚   โ”œโ”€โ”€ input_boundary.rs
โ”‚   โ”œโ”€โ”€ interactor // ๐ŸŸขใƒ“ใ‚ธใƒใ‚นใƒญใ‚ธใƒƒใ‚ฏๅฎŸ่ฃ…ใฎๅฎš็พฉ
โ”‚   โ”‚   โ”œโ”€โ”€ todo.rs
โ”‚   โ”‚   โ””โ”€โ”€ user.rs
โ”‚   โ”œโ”€โ”€ interactor.rs
โ”‚   โ”œโ”€โ”€ output_data // ๐ŸŸขใƒฆใƒผใ‚นใ‚ฑใƒผใ‚นๅฑคๅ‡บๅŠ›ๅ€คใฎๅฎš็พฉ
โ”‚   โ”‚   โ”œโ”€โ”€ todo.rs
โ”‚   โ”‚   โ””โ”€โ”€ user.rs
โ”‚   โ””โ”€โ”€ output_data.rs
โ””โ”€โ”€ usecase.rs // ๐ŸŸขใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณๅ›บๆœ‰ใฎใƒ“ใ‚ธใƒใ‚นใƒซใƒผใƒซ

GET: /todo

curl -XGET localhost:8081/todo

POST: /todo

curl -XPOST localhost:8081/todo -H "Content-Type: application/json" -d '{"title" : "็ถพ้ทน", "content": "้ธใฐใ‚ŒใŸใฎใฏ", "user_id": "1" }'

PUT: /todo/title

curl -XPUT localhost:8081/todo/title -H "Content-Type: application/json" -d '{"id" : "1", "title": "็ˆฝๅฅ็พŽ่Œถ" }'

PUT: /todo/content

curl -XPUT localhost:8081/todo/content -H "Content-Type: application/json" -d '{"id" : "1", "content": "Selected..." }'

DELETE: /todo

curl -XDELETE localhost:8081/todo -H "Content-Type: application/json" -d '{"id" : "1"}'

GET: /users

curl -XGET localhost:8081/users

POST: /users

curl -XPOST localhost:8081/users -H "Content-Type: application/json" -d '{"name" : "็ถพ้ทน" }'

PUT: /users

curl -XPUT localhost:8081/users -H "Content-Type: application/json" -d '{"name" : "ไผŠๅณ่ก›้–€" }'

DELETE: /users

curl -XDELETE localhost:8081/users -H "Content-Type: application/json" -d '{"id" : "1" }'

Ref: https://zenn.dev/htlsne/articles/rust-clean-architecture https://github.com/hiterm/bookshelf-api https://lucid.app/lucidchart/62854681-180e-4860-9d75-9c878674ba6d/edit?viewport_loc=-275%2C368%2C2917%2C1395%2C0_0&invitationId=inv_78d72729-6626-4966-a05d-d5e67e6ca173

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •