package v1

import (
	"time"
)

type CloudProductCost struct {
	CreatedAt   time.Time     `json:"createdAt" gorm:"column:createdAt"`
	ResourceID  uint64        `json:"resourceID" gorm:"column:resourceID"`
	Resource    CloudResource `json:"resource" gorm:"foreignkey:ResourceID;references:ID"`
	Date        time.Time     `json:"date" gorm:"column:date"`
	Cost        float64       `json:"cost" gorm:"column:cost"`
	ProductName string        `json:"productName" gorm:"column:productName"`
}

func (c *CloudProductCost) TableName() string {
	return "cloud_product_cost"
}

type DailyTotalCost struct {
	ResourceID uint64    `json:"resourceID" gorm:"column:resourceID"`
	Date       time.Time `json:"date" gorm:"column:date"`
	Cost       float64   `json:"cost" gorm:"column:cost"`
}

type DailyProductCost struct {
	ResourceID uint64    `json:"resourceID" gorm:"column:resourceID"`
	Date       time.Time `json:"date" gorm:"column:date"`
	Product    string    `json:"product" gorm:"column:product"`
	Cost       float64   `json:"cost" gorm:"column:cost"`
}

type RCost struct {
	ResourceID uint64  `gorm:"column:resourceID"`
	Cost       float64 `gorm:"column:cost"`
}

type CostWithDate struct {
	DateStr string  `json:"dateStr" gorm:"column:dateStr"`
	Cost    float64 `json:"cost" gorm:"column:cost"`
}

type DayCost struct {
	Date time.Time `json:"date"`
	Cost float64   `json:"cost"`
}

type CloudResourceCostOverview struct {
	Total      float64    `json:"total"`
	LastPeriod *float64   `json:"lastPeriod"`
	Latest14d  []*DayCost `json:"latest14d"`
}

type GetResBillingListDataIt struct {
	Resource *CloudResource             `json:"resource"`
	Cost     *CloudResourceCostOverview `json:"cost"`
}

type GetResBillingListData struct {
	Pagination *Pagination                `json:"pagination"`
	Items      []*GetResBillingListDataIt `json:"items"`
}
