Line data Source code
1 : // Package entity は 性別のドメインエンティティを定義します
2 : package entity
3 :
4 : import "time"
5 :
6 : // Gender は性別マスタのエンティティです。
7 : // コード値(male/female/other/unspecified)を主体に、
8 : // アクティブ状態や並び順などを持ちます。
9 : // 表示ラベルはi18n辞書で解決されるため、この構造体には含めません。
10 : type Gender struct {
11 : ID uint8 `json:"id" gorm:"primaryKey;column:id"` // TINYINT UNSIGNED に対応
12 : Code string `json:"code" gorm:"column:code;size:32;not null;unique"`
13 : SortOrder uint8 `json:"sort_order" gorm:"column:sort_order;not null;default:0"`
14 : IsActive bool `json:"is_active" gorm:"column:is_active;not null;default:true"`
15 : CreatedAt time.Time `json:"created_at" gorm:"column:created_at;autoCreateTime"`
16 : UpdatedAt time.Time `json:"updated_at" gorm:"column:updated_at;autoUpdateTime"`
17 : }
18 :
19 : // TableName は GORM 用の明示的なテーブル名指定。
20 : // (GORM のデフォルト規則では複数形にされるが、明示しておくと安全)
21 0 : func (Gender) TableName() string {
22 0 : return "genders"
23 0 : }
24 :
25 : // GenderMaleID◯◯ は genders テーブルの ID を表す定数です。
26 : // マジックナンバーを避けるために、性別 ID を参照する箇所ではこれらを利用します。
27 : const (
28 : // GenderMaleID は code=home の Gender のIDです。
29 : GenderMaleID uint8 = 1
30 :
31 : // GenderFemaleID は code=home の Gender のIDです。
32 : GenderFemaleID uint8 = 2
33 :
34 : // GenderOtherID は code=home の Gender のIDです。
35 : GenderOtherID uint8 = 3
36 : )
37 :
38 : // GenderMaleCode◯◯ は genders テーブルの code を表す定数です。
39 : // バリデーションや分岐で code を扱う場合には、文字列リテラルではなくこれらを利用します。
40 : const (
41 : // GenderMaleCode は code=home 用途を表す code です。
42 : GenderMaleCode = "male"
43 :
44 : // GenderFemaleCode は code=female 用途を表す code です。
45 : GenderFemaleCode = "female"
46 :
47 : // GenderOtherCode は code=other 用途を表す code です。
48 : GenderOtherCode = "other"
49 : )
|