package models import ( "errors" "time" ) // Typed errors var ( ErrTempUserNotFound = errors.New("User not found") ) type TempUserStatus string const ( TmpUserSignUpStarted TempUserStatus = "SignUpStarted" TmpUserInvitePending TempUserStatus = "InvitePending" TmpUserCompleted TempUserStatus = "Completed" TmpUserRevoked TempUserStatus = "Revoked" TmpUserExpired TempUserStatus = "Expired" ) // TempUser holds data for org invites and unconfirmed sign ups type TempUser struct { Id int64 OrgId int64 Version int Email string Name string Role RoleType InvitedByUserId int64 Status TempUserStatus EmailSent bool EmailSentOn time.Time Code string RemoteAddr string Created int64 Updated int64 } // --------------------- // COMMANDS type CreateTempUserCommand struct { Email string Name string OrgId int64 InvitedByUserId int64 Status TempUserStatus Code string Role RoleType RemoteAddr string Result *TempUser } type UpdateTempUserStatusCommand struct { Code string Status TempUserStatus } type ExpireTempUsersCommand struct { OlderThan time.Time NumExpired int64 } type UpdateTempUserWithEmailSentCommand struct { Code string } type GetTempUsersQuery struct { OrgId int64 Email string Status TempUserStatus Result []*TempUserDTO } type GetTempUserByCodeQuery struct { Code string Result *TempUserDTO } type TempUserDTO struct { Id int64 `json:"id"` OrgId int64 `json:"orgId"` Name string `json:"name"` Email string `json:"email"` Role RoleType `json:"role"` InvitedByLogin string `json:"invitedByLogin"` InvitedByEmail string `json:"invitedByEmail"` InvitedByName string `json:"invitedByName"` Code string `json:"code"` Status TempUserStatus `json:"status"` Url string `json:"url"` EmailSent bool `json:"emailSent"` EmailSentOn time.Time `json:"emailSentOn"` Created time.Time `json:"createdOn"` }