@@ -31,12 +31,12 @@ func (rec *operationalIntentRecord) toModel() *scdmodels.OperationalIntent {
3131 State : rec .State ,
3232 OVN : ovn ,
3333 PastOVNs : clonePastOVNs (rec .PastOVNs ),
34- StartTime : cloneTime (rec .StartTime ),
35- EndTime : cloneTime (rec .EndTime ),
34+ StartTime : timePtr (rec .StartTime ),
35+ EndTime : timePtr (rec .EndTime ),
3636 USSBaseURL : rec .USSBaseURL ,
3737 SubscriptionID : cloneID (rec .SubscriptionID ),
38- AltitudeLower : cloneFloat32 (rec .AltitudeLower ),
39- AltitudeUpper : cloneFloat32 (rec .AltitudeUpper ),
38+ AltitudeLower : float32Ptr (rec .AltitudeLower ),
39+ AltitudeUpper : float32Ptr (rec .AltitudeUpper ),
4040 Cells : cloneCells (rec .Cells ),
4141 }
4242}
@@ -99,17 +99,24 @@ func (r *repo) UpsertOperationalIntent(ctx context.Context, operation *scdmodels
9999 ussRequestedOVN = operation .OVN .String ()
100100 }
101101
102+ if err := requireExtentTimes (operation .StartTime , operation .EndTime ); err != nil {
103+ return nil , err
104+ }
105+ if err := requireAltitudeBounds (operation .AltitudeLower , operation .AltitudeUpper ); err != nil {
106+ return nil , err
107+ }
108+
102109 rec := & operationalIntentRecord {
103110 ID : operation .ID ,
104111 Manager : operation .Manager ,
105112 Version : operation .Version ,
106113 State : operation .State ,
107- StartTime : cloneTime ( operation .StartTime ) ,
108- EndTime : cloneTime ( operation .EndTime ) ,
114+ StartTime : * operation .StartTime ,
115+ EndTime : * operation .EndTime ,
109116 USSBaseURL : operation .USSBaseURL ,
110117 SubscriptionID : cloneID (operation .SubscriptionID ),
111- AltitudeLower : cloneFloat32 ( operation .AltitudeLower ) ,
112- AltitudeUpper : cloneFloat32 ( operation .AltitudeUpper ) ,
118+ AltitudeLower : * operation .AltitudeLower ,
119+ AltitudeUpper : * operation .AltitudeUpper ,
113120 Cells : cloneCells (operation .Cells ),
114121 USSRequestedOVN : ussRequestedOVN ,
115122 PastOVNs : clonePastOVNs (operation .PastOVNs ),
@@ -144,19 +151,19 @@ func (r *repo) SearchOperationalIntents(ctx context.Context, v4d *dssmodels.Volu
144151 continue
145152 }
146153 // COALESCE(altitude_upper >= $2, true) with $2 = SpatialVolume.AltitudeLo
147- if rec . AltitudeUpper != nil && v4d .SpatialVolume .AltitudeLo != nil && * rec .AltitudeUpper < * v4d .SpatialVolume .AltitudeLo {
154+ if v4d .SpatialVolume .AltitudeLo != nil && rec .AltitudeUpper < * v4d .SpatialVolume .AltitudeLo {
148155 continue
149156 }
150157 // COALESCE(altitude_lower <= $3, true) with $3 = SpatialVolume.AltitudeHi
151- if rec . AltitudeLower != nil && v4d .SpatialVolume .AltitudeHi != nil && * rec .AltitudeLower > * v4d .SpatialVolume .AltitudeHi {
158+ if v4d .SpatialVolume .AltitudeHi != nil && rec .AltitudeLower > * v4d .SpatialVolume .AltitudeHi {
152159 continue
153160 }
154161 // COALESCE(ends_at >= $4, true) with $4 = v4d.StartTime
155- if rec . EndTime != nil && v4d .StartTime != nil && rec .EndTime .Before (* v4d .StartTime ) {
162+ if v4d .StartTime != nil && rec .EndTime .Before (* v4d .StartTime ) {
156163 continue
157164 }
158165 // COALESCE(starts_at <= $5, true) with $5 = v4d.EndTime
159- if rec . StartTime != nil && v4d .EndTime != nil && rec .StartTime .After (* v4d .EndTime ) {
166+ if v4d .EndTime != nil && rec .StartTime .After (* v4d .EndTime ) {
160167 continue
161168 }
162169 matched = append (matched , rec )
@@ -182,14 +189,8 @@ func (r *repo) GetDependentOperationalIntents(_ context.Context, subscriptionID
182189func (r * repo ) ListExpiredOperationalIntents (ctx context.Context , threshold time.Time ) ([]* scdmodels.OperationalIntent , error ) {
183190 var matched []* operationalIntentRecord
184191 for _ , rec := range r .state .OperationalIntents {
185- // (ends_at IS NOT NULL AND ends_at <= threshold) OR (ends_at IS NULL AND updated_at <= threshold)
186- var expired bool
187- if rec .EndTime != nil {
188- expired = ! rec .EndTime .After (threshold )
189- } else {
190- expired = ! rec .UpdatedAt .After (threshold )
191- }
192- if ! expired {
192+ // ends_at <= threshold
193+ if rec .EndTime .After (threshold ) {
193194 continue
194195 }
195196 matched = append (matched , rec )
0 commit comments