Skip to content

Commit 96f936c

Browse files
committed
Fix: README
1 parent a86b599 commit 96f936c

File tree

3 files changed

+135
-11
lines changed

3 files changed

+135
-11
lines changed

README.md

+131-8
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,133 @@
11
**go-ddd-practice**
22

3-
* DDD勉強用
4-
* 業務ユースケースは雑
5-
* セキュリティを考慮しないアカウント管理
6-
* TODOリスト
7-
* 利用するフレームワーク等
8-
* Gin
9-
* GORM
10-
* MySQL
3+
### 構成
4+
```
5+
├── .vscode
6+
├── pkg
7+
|   ├── controller
8+
|   |   ├── response
9+
|   |   |   └── response.go
10+
|   |   ├── app_controllers.go
11+
|   |   ├── master_controllers.go
12+
|   |   └── routers.go
13+
|   ├── error
14+
|   |   └── errors.go
15+
|   ├── infrastracture
16+
|   |   ├── db
17+
|   |   |   ├── db.go
18+
|   |   |   └── tx.go
19+
|   |   ├── repository
20+
|   |   |   └── account_repository.go
21+
|   |   └── security
22+
|   |      └── security.go
23+
|   ├── model
24+
|   |    └── accounts.go
25+
|   ├── test
26+
|   |   └── master_test.go
27+
|   └── usecase
28+
|       ├── dto
29+
|       |   ├── app_dto.go
30+
|       |   ├── dto.go
31+
|       |   └── master_dto.go
32+
|       ├── app_service.go
33+
|       └── master_service.go
34+
├── .env
35+
├── go.mod
36+
├── go.sum
37+
└── main.go
38+
```
39+
40+
### モデル
41+
**accounts**
42+
| 論理名 | 物理名 ||| 必須 | 桁数 | 一意 | 備考 |
43+
| ---------------- | ------------ | :---: | -------- | :---: | :---: | :---: | ------------------- |
44+
| ID | id || int || || |
45+
| 作成日時 | created_at | | datetime | | | | |
46+
| 更新日時 | updated_at | | datetime | | | | |
47+
| 削除日時 | deleted_at | | datetime | | | | |
48+
| パスワード | password | | varchar || 500 | | SHA-256でハッシュ化 |
49+
| アクセストークン | access_token | | varchar | | 500 | | |
50+
| アカウント名 | name | | varchar || 50 | | |
51+
| メールアドレス | email | | varchar || 50 | | |
52+
53+
### ユースケース
54+
* IDはgorm.ModelのAIをそのまま利用
55+
* 返すアクセストークンはJWTなどで生成せず、ハードコードして一応ハッシュ化
56+
57+
58+
#### ログイン
59+
| **Login** | |
60+
| --------- | ------------------------------------------------------------------------------------------------ |
61+
| メソッド | POST |
62+
| URI | /api/login |
63+
| 説明 | IDとパスワードを入力してログインする。IDとパスワードが一致すれば、アクセストークンが発行される。 |
64+
65+
```
66+
{
67+
"id": 1,
68+
"password": password
69+
}
70+
```
71+
72+
#### アカウント取得(1件)
73+
| **GetAccount** | |
74+
| -------------- | ------------------------- |
75+
| メソッド | GET |
76+
| URI | /api/master/:id |
77+
| 説明 | アカウントを1件取得する。 |
78+
79+
#### アカウント取得(全件)
80+
| **GetAccountAll** | |
81+
| ----------------- | -------------------------- |
82+
| メソッド | GET |
83+
| URI | /api/master |
84+
| 説明 | アカウントを全件取得する。 |
85+
86+
#### アカウント登録
87+
| **RegisterAccount** | |
88+
| ------------------- | ---------------------- |
89+
| メソッド | POST |
90+
| URI | /api/master |
91+
| 説明 | アカウントを登録する。 |
92+
93+
```
94+
{
95+
"name": "山田 太郎",
96+
"password": "Yamada_Taro01",
97+
"email": "yamada@example.com"
98+
}
99+
```
100+
101+
#### アカウント編集
102+
| **EditAccount** | |
103+
| --------------- | ---------------------- |
104+
| メソッド | PUT |
105+
| URI | /api/master/edit |
106+
| 説明 | アカウントを編集する。 |
107+
108+
```
109+
{
110+
"id": "1",
111+
"name": "山田 太郎",
112+
"email": "yamada@sample.com"
113+
}
114+
```
115+
116+
#### アカウント削除
117+
| **DeleteAccount** | |
118+
| ----------------- | -------------------------- |
119+
| メソッド | DELETE |
120+
| URI | /api/master/delete |
121+
| 説明 | アカウントを論理削除する。 |
122+
123+
```
124+
{
125+
"id": "1",
126+
}
127+
```
128+
129+
### 参考
130+
* [ddd_on_golang_sample](https://github.com/yu-croco/ddd_on_golang_sample)
131+
* [ざっくりDDD・クリーンアーキテクチャにおける各層の責務を理解したい①(ドメイン層・ユースケース層編)](https://qiita.com/kotobuki5991/items/22712c7d761c659a784f)
132+
* [ドメイン層の実装](https://terasolunaorg.github.io/guideline/current/ja/ImplementationAtEachLayer/DomainLayer.html)
133+
* [sample-boot-jpa](https://github.com/jkazama/sample-boot-jpa)

pkg/model/accounts.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ var (
1414

1515
type Accounts struct {
1616
gorm.Model
17-
Password string `gorm:"type:varchar(500)" json:"password"`
17+
Password string `gorm:"type:varchar(500); not null" json:"password"`
1818
AccessToken string `gorm:"type:varchar(500)" json:"access_token"`
19-
Name string `gorm:"type:varchar(50)" json:"name"`
20-
Email string `gorm:"type:varchar(50)" json:"email"`
19+
Name string `gorm:"type:varchar(50); not null" json:"name"`
20+
Email string `gorm:"type:varchar(50); not null" json:"email"`
2121
}
2222

2323
func NewAccount() *Accounts {

pkg/test/master_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
package test

0 commit comments

Comments
 (0)