Files
worker/app/models/invite.go
Gleb Tv 2c884c5612
Некоторые проверки не удались
CI / test (push) Successful in 2m5s
Docker / Build and publish worker image (push) Failing after 31s
refactor: adopt worker module path
2026-07-13 17:56:12 +03:00

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
}
}