package domain import "time" type Raffle struct { ID int32 CompanyID int32 Name string CreatedAt time.Time ExpiresAt time.Time Type string Status string } type RaffleStanding struct { UserID int64 RaffleID int32 FirstName string LastName string PhoneNumber string Email string TicketCount int64 } type RaffleWinnerParams struct { RaffleID int32 UserID int32 Rank int32 } type RaffleTicket struct { ID int32 RaffleID int32 UserID int32 IsActive bool } type RaffleTicketRes struct { TicketID int32 UserID int32 Name string Type string ExpiresAt time.Time Status string } type CreateRaffle struct { CompanyID int32 `json:"company_id" validate:"required"` Name string `json:"name" validate:"required"` ExpiresAt *time.Time `json:"expires_at" validate:"required"` Type string `json:"type" validate:"required"` } type CreateRaffleTicket struct { RaffleID int32 `json:"raffle_id" validate:"required"` UserID int32 `json:"user_id" validate:"required"` } // aside from ID, atleast one of the fields should be required type UpdateRaffleParams struct { ID int32 `json:"id" validate:"required"` Name string `json:"name" validate:"required_without_all=ExpiresAt"` ExpiresAt *time.Time `json:"expires_at" validate:"required_without_all=Name"` }