added work query example

This commit is contained in:
Sascha Kühl 2026-01-23 16:32:29 +01:00
parent 36a160e1c7
commit d69c0a5769
1 changed files with 100 additions and 1 deletions

View File

@ -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<SqlTools::GenericFilter>( 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<SqlTools::GenericFilter> criteria = std::make_unique<SqlTools::AttributeDefaultFilter>( jobSqlMetaInfo,
// Job::Attributes::idAttributeId(),
// Job::Attributes::idAttributeId(),
// Job::Attributes::stateSqlAttributeId(),
// SqlTools::AttributeDefaultFilter::Operation::Equal,
// *it++ );
// for ( ; it != jobStates.end(); ++it ) {
// criteria = std::make_unique<SqlTools::GenericFilter>( 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<SqlTools::GenericFilter>( 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;
}