package models

import (
	"time"
)

type EventType string

const (
	EventTypeMatch    EventType = "match"
	EventTypeTraining EventType = "training"
	EventTypeMeeting  EventType = "meeting"
	EventTypeOther    EventType = "other"
)

type Event struct {
	BaseModel
	Title       string     `json:"title" gorm:"not null"`
	Description string     `json:"description"`
	StartTime   time.Time  `json:"start_time" gorm:"not null"`
	EndTime     *time.Time `json:"end_time"`
	Location    string     `json:"location"`
	Type        EventType  `json:"type" gorm:"type:varchar(20);not null;default:'other'"`
	CategoryName string    `json:"category_name" gorm:"type:varchar(255)"`
	IsPublic    bool       `json:"is_public" gorm:"default:true"`
	CreatedByID uint       `json:"created_by_id"`
	CreatedBy   User       `json:"created_by" gorm:"foreignKey:CreatedByID"`
	ImageURL    string     `json:"image_url"`
	FileURL     string     `json:"file_url"`
	Attachments []EventAttachment `json:"attachments" gorm:"constraint:OnDelete:CASCADE"`
	YoutubeURL  string     `json:"youtube_url" gorm:"type:varchar(500)"`
	Latitude    *float64   `json:"latitude"`
	Longitude   *float64   `json:"longitude"`
}

type EventAttachment struct {
  BaseModel
  EventID  uint   `json:"event_id" gorm:"index;not null"`
  Name     string `json:"name"`
  URL      string `json:"url"`
  MimeType string `json:"mime_type"`
  Size     int64  `json:"size"`
}
