28 lines
1.2 KiB
Go
28 lines
1.2 KiB
Go
package tables
|
|
|
|
import "time"
|
|
|
|
// TableCustomer represents a customer entity with budget and rate limit
|
|
type TableCustomer struct {
|
|
ID string `gorm:"primaryKey;type:varchar(255)" json:"id"`
|
|
Name string `gorm:"type:varchar(255);not null" json:"name"`
|
|
BudgetID *string `gorm:"type:varchar(255);index" json:"budget_id,omitempty"`
|
|
RateLimitID *string `gorm:"type:varchar(255);index" json:"rate_limit_id,omitempty"`
|
|
|
|
// Relationships
|
|
Budget *TableBudget `gorm:"foreignKey:BudgetID" json:"budget,omitempty"`
|
|
RateLimit *TableRateLimit `gorm:"foreignKey:RateLimitID" json:"rate_limit,omitempty"`
|
|
Teams []TableTeam `gorm:"foreignKey:CustomerID" json:"teams"`
|
|
VirtualKeys []TableVirtualKey `gorm:"foreignKey:CustomerID" json:"virtual_keys"`
|
|
|
|
// Config hash is used to detect the changes synced from config.json file
|
|
// Every time we sync the config.json file, we will update the config hash
|
|
ConfigHash string `gorm:"type:varchar(255);null" json:"config_hash"`
|
|
|
|
CreatedAt time.Time `gorm:"index;not null" json:"created_at"`
|
|
UpdatedAt time.Time `gorm:"index;not null" json:"updated_at"`
|
|
}
|
|
|
|
// TableName sets the table name for each model
|
|
func (TableCustomer) TableName() string { return "governance_customers" }
|