niki/donateApp/service/entity/campiagn.go

48 lines
1.7 KiB
Go

package service
import (
"time"
)
// --- Type Aliases ---
// UserID is a type alias for clarity, representing foreign keys to the User service
type UserID uint32
// TransactionID is a type alias for clarity, representing foreign keys to the Transaction service
type TransactionID uint32
// CampaignID is a type alias for clarity, representing primary keys for Campaigns
type CampaignID uint32
// DonationID is a type alias for clarity, representing primary keys for Donations
type DonationID uint32
// --- Campaign Module Entities ---
// CampaignStatus represents the possible states of a campaign
type CampaignStatus string
const (
StatusActive CampaignStatus = "active"
StatusCompleted CampaignStatus = "completed"
StatusCancelled CampaignStatus = "cancelled"
StatusExpired CampaignStatus = "expired" // New status for deadlines
)
// Campaign represents a fundraising campaign entity
type Campaign struct {
ID CampaignID `json:"id"`
Title string `json:"title"`
Description string `json:"description"`
GoalAmount float64 `json:"goal_amount"` // Using float64 for decimal, consider using a dedicated decimal type for precision
RaisedAmount float64 `json:"raised_amount"`
Status CampaignStatus `json:"status"`
CreatedAt time.Time `json:"created_at"`
DeadlineAt *time.Time `json:"deadline_at,omitempty"` // Pointer to time.Time, allows nil for no deadline. omitempty hides if nil.
AdminID UserID `json:"admin_id"` // Foreign Key to User service
InitiatedByUserID *UserID `json:"initiated_by_user_id,omitempty"` // Pointer to UserID, allows nil. omitempty hides if nil.
}