Line data Source code
1 : // Package entity は ユーザーの履歴書・経歴書に記載する今人情報を表すドメインエンティティです。
2 : package entity
3 :
4 : import "time"
5 :
6 : // UserProfile は ユーザーの履歴書・経歴書に記載する今人情報を表すドメインエンティティです。
7 : type UserProfile struct {
8 : UserID uint64 `json:"user_id" gorm:"primaryKey;column:user_id"`
9 : FamilyName string `json:"family_name" gorm:"column:family_name;size:80;not null"`
10 : GivenName string `json:"given_name" gorm:"column:given_name;size:80;not null"`
11 : FamilyNameKana string `json:"family_name_kana" gorm:"column:family_name_kana;size:80;not null"`
12 : GivenNameKana string `json:"given_name_kana" gorm:"column:given_name_kana;size:80;not null"`
13 :
14 : // 生成列(STORED)。DBで作っているので読み取り専用にしておくと安全
15 : LegalName string `json:"legal_name" gorm:"column:legal_name;->"` // CONCAT_WS(' ', family_name, given_name)
16 : LegalNameKana string `json:"legal_name_kana" gorm:"column:legal_name_kana;->"` // CONCAT_WS(' ', family_name_kana, given_name_kana)
17 :
18 : BirthDate *time.Time `json:"birth_date,omitempty" gorm:"column:birth_date"`
19 :
20 : GenderID *uint8 `json:"gender_id,omitempty" gorm:"column:gender_id"`
21 : Gender *Gender `gorm:"foreignKey:GenderID;references:ID"`
22 : Initial *string `json:"initial,omitempty" gorm:"column:initial;size:32"`
23 :
24 : CreatedAt time.Time `json:"created_at" gorm:"column:created_at;autoCreateTime"`
25 : UpdatedAt time.Time `json:"updated_at" gorm:"column:updated_at;autoUpdateTime"`
26 : }
27 :
28 : // TableName golang-migrate で auth_identities を作っている前提に合わせる
29 0 : func (UserProfile) TableName() string {
30 0 : return "user_profiles"
31 0 : }
|