package domain import ( "time" "go.mongodb.org/mongo-driver/bson/primitive" ) type DataDownloadKind string const ( DataDownloadPowerFlow DataDownloadKind = "power_flow" DataDownloadMqttLog DataDownloadKind = "mqtt_log" DataDownloadEventAlarm DataDownloadKind = "event_alarm" DataDownloadAlarmSnapshot DataDownloadKind = "alarm_snapshot" DataDownloadEmsLog DataDownloadKind = "ems_log" DataDownloadFaultRecord DataDownloadKind = "fault_record" DataDownloadUpdateLog DataDownloadKind = "update_log" ) type DataDownloadState string const ( DataDownloadMutable DataDownloadState = "mutable" DataDownloadFrozen DataDownloadState = "frozen" DataDownloadDynamic DataDownloadState = "dynamic" ) type DataDownloadStatus string const ( DataDownloadPending DataDownloadStatus = "pending" DataDownloadRunning DataDownloadStatus = "running" DataDownloadCancelling DataDownloadStatus = "cancelling" DataDownloadSucceeded DataDownloadStatus = "complete" DataDownloadItemSucceeded DataDownloadStatus = "success" DataDownloadSkipped DataDownloadStatus = "skipped" DataDownloadPartial DataDownloadStatus = "partial_success" DataDownloadFailed DataDownloadStatus = "failed" DataDownloadError DataDownloadStatus = "error" DataDownloadCancelled DataDownloadStatus = "cancelled" DataDownloadExpired DataDownloadStatus = "expired" ) type DataDownloadCompleteness string const ( DataDownloadCompletenessComplete DataDownloadCompleteness = "complete" DataDownloadCompletenessPartial DataDownloadCompleteness = "partial" ) type DataDownloadOptions struct { PowerFlow bool `bson:"powerFlow" json:"powerFlow"` MqttLogs []string `bson:"mqttLogs,omitempty" json:"mqttLogs,omitempty"` EventAlarm bool `bson:"eventAlarm" json:"eventAlarm"` AlarmSnapshot bool `bson:"alarmSnapshot" json:"alarmSnapshot"` EmsLogs []string `bson:"emsLogs,omitempty" json:"emsLogs,omitempty"` FaultRecord bool `bson:"faultRecord" json:"faultRecord"` UpdateLog bool `bson:"updateLog" json:"updateLog"` } func (o DataDownloadOptions) Empty() bool { return !o.PowerFlow && len(o.MqttLogs) == 0 && !o.EventAlarm && !o.AlarmSnapshot && len(o.EmsLogs) == 0 && !o.FaultRecord && !o.UpdateLog } type DataDownloadTask struct { ID primitive.ObjectID `bson:"_id,omitempty" json:"id"` OwnerID string `bson:"ownerId" json:"ownerId"` OwnerName string `bson:"ownerName" json:"ownerName"` SNs []string `bson:"sns" json:"sns"` Description string `bson:"description" json:"description"` StartDate string `bson:"startDate,omitempty" json:"startDate,omitempty"` EndDate string `bson:"endDate,omitempty" json:"endDate,omitempty"` Options DataDownloadOptions `bson:"options" json:"options"` Status DataDownloadStatus `bson:"status" json:"status"` Total int64 `bson:"total" json:"total"` Succeeded int64 `bson:"succeeded" json:"succeeded"` Failed int64 `bson:"failed" json:"failed"` Empty int64 `bson:"empty" json:"empty"` CreatedAt time.Time `bson:"createdAt" json:"createdAt"` UpdatedAt time.Time `bson:"updatedAt" json:"updatedAt"` FinishedAt *time.Time `bson:"finishedAt,omitempty" json:"finishedAt,omitempty"` } type DataDownloadItem struct { ID primitive.ObjectID `bson:"_id,omitempty" json:"id"` TaskID primitive.ObjectID `bson:"taskId" json:"taskId"` ItemKey string `bson:"itemKey" json:"itemKey"` Kind DataDownloadKind `bson:"kind" json:"kind"` SiteSN string `bson:"siteSn" json:"siteSn"` DeviceSN string `bson:"deviceSn,omitempty" json:"deviceSn,omitempty"` Date string `bson:"date,omitempty" json:"date,omitempty"` Subtype string `bson:"subtype,omitempty" json:"subtype,omitempty"` DeviceType string `bson:"deviceType,omitempty" json:"deviceType,omitempty"` Timezone string `bson:"timezone" json:"timezone"` Status DataDownloadStatus `bson:"status" json:"status"` Stage string `bson:"stage,omitempty" json:"stage,omitempty"` FailureReason string `bson:"failureReason,omitempty" json:"failureReason,omitempty"` Attempt int `bson:"attempt" json:"attempt"` CallRequestedAt *time.Time `bson:"callRequestedAt,omitempty" json:"callRequestedAt,omitempty"` CallRecordID int64 `bson:"callRecordId,omitempty" json:"callRecordId,omitempty"` CallRequestedCount int `bson:"callRequestedCount,omitempty" json:"callRequestedCount,omitempty"` CallRecordStatus *int `bson:"callRecordStatus,omitempty" json:"callRecordStatus,omitempty"` CreatedAt time.Time `bson:"createdAt" json:"createdAt"` UpdatedAt time.Time `bson:"updatedAt" json:"updatedAt"` } type DataDownloadDocument struct { ID string `bson:"_id" json:"id"` RequestKey string `bson:"requestKey" json:"requestKey"` Kind DataDownloadKind `bson:"kind" json:"kind"` SiteSN string `bson:"siteSn" json:"siteSn"` DeviceSN string `bson:"deviceSn,omitempty" json:"deviceSn,omitempty"` Date string `bson:"date,omitempty" json:"date,omitempty"` Subtype string `bson:"subtype,omitempty" json:"subtype,omitempty"` DeviceType string `bson:"deviceType,omitempty" json:"deviceType,omitempty"` Timezone string `bson:"timezone" json:"timezone"` State DataDownloadState `bson:"state" json:"state"` Completeness DataDownloadCompleteness `bson:"completeness,omitempty" json:"completeness,omitempty"` Empty bool `bson:"empty" json:"empty"` FileCount int64 `bson:"fileCount,omitempty" json:"fileCount"` FailedFileCount int64 `bson:"failedFileCount,omitempty" json:"failedFileCount"` ContentGeneration int64 `bson:"contentGeneration" json:"contentGeneration"` BinaryObjectKey string `bson:"binaryObjectKey,omitempty" json:"-"` HasBinary bool `bson:"-" json:"hasBinary"` Checksum string `bson:"checksum,omitempty" json:"checksum,omitempty"` SourceFetchedAt time.Time `bson:"sourceFetchedAt" json:"sourceFetchedAt"` FrozenAt *time.Time `bson:"frozenAt,omitempty" json:"frozenAt,omitempty"` CreatedAt time.Time `bson:"createdAt" json:"createdAt"` UpdatedAt time.Time `bson:"updatedAt" json:"updatedAt"` } type DataDownloadFaultRecordEntry struct { ID primitive.ObjectID `bson:"_id,omitempty" json:"id"` DocumentID string `bson:"documentId" json:"documentId"` SourceFileID string `bson:"sourceFileId" json:"sourceFileId"` FaultID int64 `bson:"faultId" json:"faultId"` SubRecordID int64 `bson:"subRecordId" json:"subRecordId"` FileName string `bson:"fileName" json:"fileName"` ContentType string `bson:"contentType" json:"contentType"` Size int64 `bson:"size" json:"size"` Checksum string `bson:"checksum" json:"checksum"` ObjectKey string `bson:"objectKey" json:"-"` LastSuccessfulAt time.Time `bson:"lastSuccessfulAt" json:"lastSuccessfulAt"` CreatedAt time.Time `bson:"createdAt" json:"createdAt"` UpdatedAt time.Time `bson:"updatedAt" json:"updatedAt"` } type DataDownloadFileAttempt struct { ID primitive.ObjectID `bson:"_id,omitempty" json:"id"` TaskID primitive.ObjectID `bson:"taskId" json:"taskId"` ItemID primitive.ObjectID `bson:"itemId" json:"itemId"` DocumentID string `bson:"documentId" json:"documentId"` SourceFileID string `bson:"sourceFileId" json:"sourceFileId"` FileName string `bson:"fileName,omitempty" json:"fileName,omitempty"` Status DataDownloadStatus `bson:"status" json:"status"` EntryID *primitive.ObjectID `bson:"entryId,omitempty" json:"entryId,omitempty"` AttemptCount int `bson:"attemptCount" json:"attemptCount"` FailureStage string `bson:"failureStage,omitempty" json:"failureStage,omitempty"` FailureReason string `bson:"failureReason,omitempty" json:"failureReason,omitempty"` CreatedAt time.Time `bson:"createdAt" json:"createdAt"` UpdatedAt time.Time `bson:"updatedAt" json:"updatedAt"` } type DataDownloadTaskDocument struct { ID primitive.ObjectID `bson:"_id,omitempty" json:"id"` TaskID primitive.ObjectID `bson:"taskId" json:"taskId"` ItemKey string `bson:"itemKey" json:"itemKey"` DocumentID string `bson:"documentId" json:"documentId"` LogicalPath string `bson:"logicalPath" json:"logicalPath"` Empty bool `bson:"empty" json:"empty"` CreatedAt time.Time `bson:"createdAt" json:"createdAt"` } type DataDownloadRenderSlot struct { ID primitive.ObjectID `bson:"_id,omitempty" json:"id"` DocumentID string `bson:"documentId" json:"documentId"` Format string `bson:"format" json:"format"` ContentGeneration int64 `bson:"contentGeneration" json:"contentGeneration"` ArtifactID *primitive.ObjectID `bson:"artifactId,omitempty" json:"artifactId,omitempty"` UpdatedAt time.Time `bson:"updatedAt" json:"updatedAt"` } type DataDownloadArtifact struct { ID primitive.ObjectID `bson:"_id,omitempty" json:"id"` DocumentID string `bson:"documentId" json:"documentId"` Format string `bson:"format" json:"format"` ContentGeneration int64 `bson:"contentGeneration" json:"contentGeneration"` ObjectKey string `bson:"objectKey" json:"-"` Filename string `bson:"filename" json:"filename"` Size int64 `bson:"size" json:"size"` Checksum string `bson:"checksum" json:"checksum"` ExpiresAt time.Time `bson:"expiresAt" json:"expiresAt"` CreatedAt time.Time `bson:"createdAt" json:"createdAt"` } type DataDownloadPackageJob struct { ID primitive.ObjectID `bson:"_id,omitempty" json:"id"` TaskIDs []primitive.ObjectID `bson:"taskIds" json:"taskIds"` OwnerID string `bson:"ownerId" json:"ownerId"` Status DataDownloadStatus `bson:"status" json:"status"` ObjectKey string `bson:"objectKey,omitempty" json:"-"` Filename string `bson:"filename,omitempty" json:"filename,omitempty"` Size int64 `bson:"size,omitempty" json:"size,omitempty"` TotalCount int64 `bson:"totalCount" json:"totalCount"` DoneCount int64 `bson:"doneCount" json:"doneCount"` FailureReason string `bson:"failureReason,omitempty" json:"failureReason,omitempty"` StartedAt *time.Time `bson:"startedAt,omitempty" json:"startedAt,omitempty"` CompletedAt *time.Time `bson:"completedAt,omitempty" json:"completedAt,omitempty"` ExpiresAt *time.Time `bson:"expiresAt,omitempty" json:"expiresAt,omitempty"` PurgeAt *time.Time `bson:"purgeAt,omitempty" json:"purgeAt,omitempty"` CreatedAt time.Time `bson:"createdAt" json:"createdAt"` UpdatedAt time.Time `bson:"updatedAt" json:"updatedAt"` }