From d69c0a57690e8099568d8c5ab7d5499f6785a841 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sascha=20K=C3=BChl?= Date: Fri, 23 Jan 2026 16:32:29 +0100 Subject: [PATCH] added work query example --- demo/work.cpp | 101 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 100 insertions(+), 1 deletion(-) diff --git a/demo/work.cpp b/demo/work.cpp index 9f68414..2c8eb91 100644 --- a/demo/work.cpp +++ b/demo/work.cpp @@ -175,7 +175,7 @@ int main() { // .arg( LoginHistory::staticSqlMetaInfo().columnName( LoginHistory::Attributes::failReasonSqlAttributeId() ) ) // .arg( LoginHistory::staticSqlMetaInfo().columnName( LoginHistory::Attributes::idAttributeId() ) ); - const auto q = query::query::select({LOGIN_HISTORY.client, query::max(LOGIN_HISTORY.login_time).as( "lastSuccessfulLogin" ) } ) + const auto q = query::query::select({LOGIN_HISTORY.client, query::maximum(LOGIN_HISTORY.login_time).as( "lastSuccessfulLogin" ) } ) .from( LOGIN_HISTORY ) .where( LOGIN_HISTORY.fail_reason == _ ) .group_by( LOGIN_HISTORY.client ); @@ -217,6 +217,105 @@ int main() { // query.addBindValue( LoginHistory::FailReason::UnknownUserName ); // query.addBindValue( columnFilterValue ); + + // const auto temporaryTable = status.addChildExc( fillTemporaryTable( idsInsidePayload ) ); + // + // const auto& jobSqlMetaInfo = Job::staticSqlMetaInfo(); + // const auto& payloadSqlMetaInfo = Payload::staticSqlMetaInfo(); + // const auto& idPayloadSqlMetaInfo = IdPayload::staticSqlMetaInfo(); + // + // auto filter = std::make_unique( new SqlTools::AttributeDefaultFilter( jobSqlMetaInfo, + // Job::Attributes::idAttributeId(), + // Job::Attributes::idAttributeId(), + // Job::Attributes::typeAttributeId(), + // SqlTools::AttributeDefaultFilter::Operation::Equal, + // jobName ), + // new SqlTools::InFilter( payloadSqlMetaInfo.tableName(), + // jobSqlMetaInfo.columnName( Job::Attributes::payloadAttributeId() ), + // payloadSqlMetaInfo.columnName( Payload::Attributes::idAttributeId() ), + // new SqlTools::InFilter( idPayloadSqlMetaInfo.tableName(), + // payloadSqlMetaInfo.columnName( Payload::Attributes::idAttributeId() ), + // idPayloadSqlMetaInfo.columnName( IdPayload::Attributes::idAttributeId() ), + // new SqlTools::TemporaryInFilter( temporaryTable, + // idPayloadSqlMetaInfo.columnName( IdPayload::Attributes::payloadIdAttributeId() ), + // lookUpColName() ) ) ), + // SqlTools::GenericFilter::Operation::And ); + // + // if ( !jobStates.empty() ) { + // auto it = jobStates.begin(); + // std::unique_ptr criteria = std::make_unique( jobSqlMetaInfo, + // Job::Attributes::idAttributeId(), + // Job::Attributes::idAttributeId(), + // Job::Attributes::stateSqlAttributeId(), + // SqlTools::AttributeDefaultFilter::Operation::Equal, + // *it++ ); + // for ( ; it != jobStates.end(); ++it ) { + // criteria = std::make_unique( new SqlTools::AttributeDefaultFilter( jobSqlMetaInfo, + // Job::Attributes::idAttributeId(), + // Job::Attributes::idAttributeId(), + // Job::Attributes::stateSqlAttributeId(), + // SqlTools::AttributeDefaultFilter::Operation::Equal, + // *it ), + // criteria.release(), + // SqlTools::GenericFilter::Operation::Or ); + // } + // + // filter = std::make_unique( criteria.release(), filter.release(), SqlTools::GenericFilter::Operation::And ); + // } + // + // const auto ids = status.addChildExc( this->ids( SqlManager::jobFilter, filter.get() ) ); + // SELECT + // ID + // FROM + // NEWS_JOBS + // WHERE + // NEWS_JOBS.ID > ? + // AND (NEWS_JOBS.TYPE = ? + // AND ( NEWS_JOBS.PAYLOAD IN ( + // SELECT + // ID + // FROM + // NEWS_PAYLOADS + // WHERE + // NEWS_PAYLOADS.ID IN ( + // SELECT + // ID + // FROM + // NEWS_ID_PAYLOADS + // WHERE + // NEWS_ID_PAYLOADS.PAYLOAD_ID IN (SELECT ID FROM NEWS_TMP_3499274F12B644179DBD25BB60C48529) + // ) + // ) + // ) + // ) + + const auto stmt4 = query::query::select({JOB.id}) + .from(JOB) + .where( JOB.id > _ && JOB.name == _ && in( JOB.payload, query::query::select({PAYLOAD.id}).from(PAYLOAD).where( + in( PAYLOAD.id, query::query::select({ID_PAYLOAD.id}).from(ID_PAYLOAD).where( + in( ID_PAYLOAD.id, query::query::select({temp_id_col}).from(temporary)) + ) ) ) ) ) + .str( conn->dialect() ); + +// SELECT DISTINCT nj.ID +// FROM NEWS_JOBS nj +// JOIN NEWS_PAYLOADS np +// ON nj.PAYLOAD = np.ID +// JOIN NEWS_ID_PAYLOADS nip +// ON np.ID = nip.ID +// JOIN NEWS_TMP_3499274F12B644179DBD25BB60C48529 tmp +// ON nip.PAYLOAD_ID = tmp.ID +// WHERE nj.ID > ? +// AND nj.TYPE = ?; + + const auto stmt5 = query::query::select({JOB.id}) + .from(JOB) + .join_left(PAYLOAD).on(JOB.payload == PAYLOAD.id) + .join_left(ID_PAYLOAD).on(PAYLOAD.id == ID_PAYLOAD.id) + .join_left(temporary).on(ID_PAYLOAD.id == temp_id_col) + .where(JOB.id > _ && JOB.name == _) + .str(conn->dialect()); + return 0; }