forked from baron/baron-sso
74 lines
2.5 KiB
Go
74 lines
2.5 KiB
Go
package domain
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
const (
|
|
WorksmobileOutboxStatusPending = "pending"
|
|
WorksmobileOutboxStatusProcessing = "processing"
|
|
WorksmobileOutboxStatusProcessed = "processed"
|
|
WorksmobileOutboxStatusFailed = "failed"
|
|
)
|
|
|
|
const (
|
|
WorksmobileResourceOrgUnit = "ORGUNIT"
|
|
WorksmobileResourceUser = "USER"
|
|
)
|
|
|
|
const (
|
|
WorksmobileActionUpsert = "UPSERT"
|
|
WorksmobileActionDelete = "DELETE"
|
|
WorksmobileActionDryRun = "DRY_RUN"
|
|
WorksmobileActionSuspend = "SUSPEND"
|
|
WorksmobileActionPasswordReset = "PASSWORD_RESET"
|
|
)
|
|
|
|
type WorksmobileOutbox struct {
|
|
ID string `gorm:"primaryKey;type:uuid;default:gen_random_uuid()" json:"id"`
|
|
ResourceType string `gorm:"not null;index:idx_worksmobile_outbox_resource" json:"resourceType"`
|
|
ResourceID string `gorm:"not null;index:idx_worksmobile_outbox_resource" json:"resourceId"`
|
|
Action string `gorm:"not null" json:"action"`
|
|
Payload JSONMap `gorm:"type:jsonb" json:"payload,omitempty"`
|
|
DedupeKey string `gorm:"uniqueIndex" json:"dedupeKey"`
|
|
Status string `gorm:"default:'pending';index" json:"status"`
|
|
RetryCount int `gorm:"default:0" json:"retryCount"`
|
|
LastError string `json:"lastError,omitempty"`
|
|
NextAttemptAt *time.Time `json:"nextAttemptAt,omitempty"`
|
|
ProcessedAt *time.Time `json:"processedAt,omitempty"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
}
|
|
|
|
func (w *WorksmobileOutbox) BeforeCreate(tx *gorm.DB) error {
|
|
if w.ID == "" {
|
|
w.ID = uuid.NewString()
|
|
}
|
|
if w.Status == "" {
|
|
w.Status = WorksmobileOutboxStatusPending
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type WorksmobileResourceMapping struct {
|
|
ID string `gorm:"primaryKey;type:uuid;default:gen_random_uuid()" json:"id"`
|
|
BaronResourceType string `gorm:"not null;uniqueIndex:idx_worksmobile_mapping_baron" json:"baronResourceType"`
|
|
BaronResourceID string `gorm:"not null;uniqueIndex:idx_worksmobile_mapping_baron" json:"baronResourceId"`
|
|
ExternalKey string `gorm:"not null;uniqueIndex" json:"externalKey"`
|
|
WorksmobileResourceID string `json:"worksmobileResourceId,omitempty"`
|
|
DomainID int64 `json:"domainId"`
|
|
LastSyncedAt *time.Time `json:"lastSyncedAt,omitempty"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
UpdatedAt time.Time `json:"updatedAt"`
|
|
}
|
|
|
|
func (w *WorksmobileResourceMapping) BeforeCreate(tx *gorm.DB) error {
|
|
if w.ID == "" {
|
|
w.ID = uuid.NewString()
|
|
}
|
|
return nil
|
|
}
|