package model

import "time"

type MapfixStatus int32

const (
	// Phase: Creation
	MapfixStatusUnderConstruction   MapfixStatus = 0
	MapfixStatusChangesRequested    MapfixStatus = 1

	// Phase: Review
	MapfixStatusSubmitting          MapfixStatus = 2
	MapfixStatusSubmitted           MapfixStatus = 3

	// Phase: Testing
	MapfixStatusAcceptedUnvalidated MapfixStatus = 4 // pending script review, can re-trigger validation
	MapfixStatusValidating          MapfixStatus = 5
	MapfixStatusValidated           MapfixStatus = 6
	MapfixStatusUploading           MapfixStatus = 7

	// Phase: Final MapfixStatus
	MapfixStatusUploaded            MapfixStatus = 8 // uploaded to the group, but pending release
	MapfixStatusRejected            MapfixStatus = 9
)

type Mapfix struct {
	ID            int64 `gorm:"primaryKey"`
	DisplayName   string
	Creator       string
	GameID        uint32
	CreatedAt     time.Time
	UpdatedAt     time.Time
	Submitter     uint64 // UserID
	AssetID       uint64
	AssetVersion  uint64
	ValidatedAssetID       uint64
	ValidatedAssetVersion  uint64
	Completed     bool   // Has this version of the map been completed at least once on maptest
	TargetAssetID uint64 // where to upload map fix.  if the TargetAssetID is 0, it's a new map.
	StatusID      MapfixStatus
	Description   string // mapfix description
}