package tasks import ( "database/sql" "log/slog" "time" "vctp/db" "vctp/internal/settings" "vctp/internal/vcenter" ) // CronTask stores runtime information to be used by tasks. type CronTask struct { Logger *slog.Logger Database db.Database Settings *settings.Settings VcCreds *vcenter.VcenterLogin FirstHourlySnapshotCheck bool } // InventorySnapshotRow represents a single VM snapshot row. type InventorySnapshotRow struct { InventoryId sql.NullInt64 Name string Vcenter string VmId sql.NullString EventKey sql.NullString CloudId sql.NullString CreationTime sql.NullInt64 DeletionTime sql.NullInt64 ResourcePool sql.NullString Datacenter sql.NullString Cluster sql.NullString Folder sql.NullString ProvisionedDisk sql.NullFloat64 VcpuCount sql.NullInt64 RamGB sql.NullInt64 IsTemplate string PoweredOn string SrmPlaceholder string VmUuid sql.NullString SnapshotTime int64 } // snapshotTotals aliases DB snapshot totals for convenience. type snapshotTotals = db.SnapshotTotals type dailyAggKey struct { Vcenter string VmId string VmUuid string Name string } type dailyAggVal struct { key dailyAggKey resourcePool string datacenter string cluster string folder string isTemplate string poweredOn string srmPlaceholder string creation int64 firstSeen int64 lastSeen int64 lastDisk float64 lastVcpu int64 lastRam int64 sumVcpu int64 sumRam int64 sumDisk float64 samples int64 tinHits int64 bronzeHits int64 silverHits int64 goldHits int64 seen map[int64]struct{} deletion int64 } type monthlyAggKey struct { Vcenter string VmId string VmUuid string Name string } type monthlyAggVal struct { key monthlyAggKey inventoryId int64 eventKey string cloudId string resourcePool string datacenter string cluster string folder string isTemplate string poweredOn string srmPlaceholder string creation int64 deletion int64 lastSnapshot time.Time provisioned float64 vcpuCount int64 ramGB int64 samplesPresent int64 totalSamples float64 sumVcpu float64 sumRam float64 sumDisk float64 tinWeighted float64 bronzeWeighted float64 silverWeighted float64 goldWeighted float64 } // CronTracker manages re-entry protection and status recording for cron jobs. type CronTracker struct { db db.Database bindType int }