@@ -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