Некоторые проверки не удались
CI / test (push) Successful in 2m5s
Docker / Build and publish worker image (push) Failing after 31s
53 строки
1.3 KiB
Go
53 строки
1.3 KiB
Go
package models
|
|
|
|
import (
|
|
"time"
|
|
|
|
"gorm.io/gorm"
|
|
|
|
"rocketgit.ru/rsmon/worker/app/models/concerns"
|
|
)
|
|
|
|
// Invite provides functionality.
|
|
type Invite struct {
|
|
concerns.Model
|
|
|
|
AccountID int64 `gorm:"type:bigint REFERENCES accounts(id)" json:"account_id"`
|
|
Account *Account `json:"-"`
|
|
InviterID *int64 `gorm:"type:bigint REFERENCES users(id)" json:"inviter_id"`
|
|
Inviter *User `json:"inviter"`
|
|
InviteeID *int64 `gorm:"type:bigint REFERENCES users(id)" json:"invitee_id"`
|
|
Invitee *User `json:"invitee"`
|
|
|
|
Name string `json:"name"`
|
|
Email string `json:"email"`
|
|
|
|
// invite state, FAIL - failed to send, SENT - not regestired, OK - registered
|
|
State string `gorm:"not null;default:'UNK'" json:"state"`
|
|
|
|
CreatedAt time.Time `json:"created_at"`
|
|
RegisteredAt time.Time `json:"registered_at"`
|
|
SentAt time.Time `json:"sent_at"`
|
|
|
|
Accesses []Access `json:"accesses" gorm:"foreignkey:invite_id"`
|
|
|
|
concerns.HasToken
|
|
Audited
|
|
}
|
|
|
|
// BeforeCreate runs before creating an Invite record.
|
|
func (i *Invite) BeforeCreate(_ *gorm.DB) error {
|
|
i.SetToken()
|
|
return nil
|
|
}
|
|
|
|
// FillAccesses provides functionality.
|
|
func (i *Invite) FillAccesses() {
|
|
for k, a := range i.Accesses { //nolint:gocritic // range copy is acceptable here
|
|
if a.ID <= 0 {
|
|
i.Accesses[k].ID = 0
|
|
}
|
|
i.Accesses[k].AccountID = i.AccountID
|
|
}
|
|
}
|