package domain

import "time"

const (
	UserProjectionNameKratos = "kratos_users"

	UserProjectionStatusSyncing = "syncing"
	UserProjectionStatusReady   = "ready"
	UserProjectionStatusFailed  = "failed"
)

type UserProjectionState struct {
	Name         string     `gorm:"primaryKey;column:name" json:"name"`
	Status       string     `gorm:"column:status;not null" json:"status"`
	LastSyncedAt *time.Time `gorm:"column:last_synced_at" json:"lastSyncedAt,omitempty"`
	LastError    string     `gorm:"column:last_error;type:text" json:"lastError,omitempty"`
	UpdatedAt    time.Time  `gorm:"column:updated_at" json:"updatedAt"`
}

type UserProjectionStatus struct {
	Name           string     `json:"name"`
	Status         string     `json:"status"`
	Ready          bool       `json:"ready"`
	LastSyncedAt   *time.Time `json:"lastSyncedAt,omitempty"`
	LastError      string     `json:"lastError,omitempty"`
	UpdatedAt      *time.Time `json:"updatedAt,omitempty"`
	ProjectedUsers int64      `json:"projectedUsers"`
}
