@@ -112,31 +112,45 @@ public List<AnsibleEvent> list(EventMarker marker, OffsetDateTime startTimestamp
112112            return  txResult (tx  -> {
113113                ProcessQueue  pq  = PROCESS_QUEUE .as ("pq" );
114114                ProcessEvents  pe  = PROCESS_EVENTS .as ("pe" );
115-                 Field <String > username  = tx .select (USERS .USERNAME ).from (USERS ).where (USERS .USER_ID .eq (pq .INITIATOR_ID )).asField ();
116- 
117115                Field <Object > eventData  = function ("jsonb_strip_nulls" , Object .class , pe .EVENT_DATA );
118-                 SelectConditionStep <Record9 <UUID , Long , UUID , OffsetDateTime , OffsetDateTime , Object , String , UUID , UUID >> s  = tx .select (
119-                         pe .EVENT_ID ,
120-                         pe .EVENT_SEQ ,
121-                         pe .INSTANCE_ID ,
122-                         pe .INSTANCE_CREATED_AT ,
123-                         pe .EVENT_DATE ,
124-                         eventData ,
125-                         username ,
126-                         pq .INITIATOR_ID ,
127-                         pq .PROJECT_ID )
128-                         .from (pe )
129-                         .innerJoin (pq ).on (pq .INSTANCE_ID .eq (pe .INSTANCE_ID ).and (pq .CREATED_AT .eq (pe .INSTANCE_CREATED_AT )))
130-                         .where (pe .EVENT_TYPE .eq ("ANSIBLE" )
131-                                 .and (pe .EVENT_SEQ .greaterThan (marker .eventSeq ())));
116+ 
117+                 SelectConditionStep <Record6 <UUID , Long , UUID , OffsetDateTime , OffsetDateTime , Object >> selectEventsSubQuery  =
118+                         tx .select (pe .EVENT_ID ,
119+                                 pe .EVENT_SEQ ,
120+                                 pe .INSTANCE_ID ,
121+                                 pe .INSTANCE_CREATED_AT ,
122+                                 pe .EVENT_DATE ,
123+                                 eventData .as ("event_data" ))
124+                             .from (pe )
125+                             .where (pe .EVENT_TYPE .eq ("ANSIBLE" ))
126+                             .and (pe .EVENT_SEQ .greaterThan (marker .eventSeq ()));
132127
133128                if  (startTimestamp  != null ) {
134-                     s .and (pe .INSTANCE_CREATED_AT .greaterOrEqual (startTimestamp ));
129+                     selectEventsSubQuery .and (pe .INSTANCE_CREATED_AT .greaterOrEqual (startTimestamp ));
135130                }
136131
137-                 return  s .orderBy (pe .EVENT_SEQ )
132+                 Table <Record6 <UUID , Long , UUID , OffsetDateTime , OffsetDateTime , Object >> eventsAlias  = selectEventsSubQuery 
133+                         .orderBy (pe .EVENT_SEQ )
138134                        .limit (count )
139-                         .fetch (this ::toEntity );
135+                         .asTable ("events_batch" );
136+ 
137+                 SelectOnConditionStep <Record9 <UUID , Long , UUID , OffsetDateTime , OffsetDateTime , Object , String , UUID , UUID >> s  = tx .select (
138+                                 eventsAlias .field ("event_id" , UUID .class ),
139+                                 eventsAlias .field ("event_seq" , Long .class ),
140+                                 eventsAlias .field ("instance_id" , UUID .class ),
141+                                 eventsAlias .field ("instance_created_at" , OffsetDateTime .class ),
142+                                 eventsAlias .field ("event_date" , OffsetDateTime .class ),
143+                                 eventsAlias .field ("event_data" , Object .class ),
144+                                 USERS .USERNAME ,
145+                                 pq .INITIATOR_ID ,
146+                                 pq .PROJECT_ID 
147+                         )
148+                         .from (eventsAlias )
149+                         .leftOuterJoin (pq )
150+                                 .on (pq .INSTANCE_ID .eq (eventsAlias .field ("instance_id" , UUID .class )))
151+                         .leftOuterJoin (USERS ).on (USERS .USER_ID .eq (pq .INITIATOR_ID ));
152+ 
153+                 return  s .fetch (this ::toEntity );
140154            });
141155        }
142156
0 commit comments