package model import ( "time" "gorm.io/datatypes" ) type RentalOrder struct { ID uint64 `gorm:"primaryKey" json:"id"` OrderNo string `gorm:"size:64;not null;uniqueIndex" json:"order_no"` ListingID uint64 `gorm:"not null;index" json:"listing_id"` AccountID uint64 `gorm:"not null;index" json:"account_id"` OwnerID uint64 `gorm:"not null;index" json:"owner_id"` RenterID uint64 `gorm:"not null;index" json:"renter_id"` RentedAt *time.Time `json:"rented_at"` HandoffStartedAt *time.Time `json:"handoff_started_at"` EstimatedDurationHours int `gorm:"not null;default:24" json:"estimated_duration_hours"` RentAmountCent int64 `gorm:"not null;default:0" json:"-"` OwnerRentAmountCent int64 `gorm:"not null;default:0" json:"-"` DepositAmountCent int64 `gorm:"not null;default:0" json:"-"` DepositOriginalAmountCent int64 `gorm:"not null;default:0" json:"-"` DepositWaivedAmountCent int64 `gorm:"not null;default:0" json:"-"` PlatformFeeCent int64 `gorm:"not null;default:0" json:"-"` AccountSnapshot datatypes.JSON `json:"account_snapshot"` Status string `gorm:"size:32;not null;default:'pending_payment'" json:"status"` HandoffStatus string `gorm:"size:32;not null;default:'none'" json:"handoff_status"` SettlementStatus string `gorm:"size:32;not null;default:'unsettled'" json:"settlement_status"` RefundStatus string `gorm:"size:32;not null;default:'none';index" json:"refund_status"` RefundAmountCent int64 `gorm:"not null;default:0" json:"refund_amount_cent"` RefundedAt *time.Time `json:"refunded_at"` OwnerSettledAt *time.Time `json:"owner_settled_at"` SettledAt *time.Time `json:"settled_at"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } func (RentalOrder) TableName() string { return "rental_orders" }