criteria progress
This commit is contained in:
@@ -164,5 +164,58 @@ int main() {
|
||||
in( iPT.payload_id, query::query::select({ temp_id_col }).from( temporary ) )
|
||||
)
|
||||
.str( conn->dialect() );
|
||||
|
||||
// const QString statement = QString( "SELECT %5 FROM %1 "
|
||||
// "LEFT JOIN (SELECT %2, MAX(%3) AS lastSuccessfulLogin FROM %1 WHERE %4 = ? GROUP BY %2) ll "
|
||||
// "ON %1.%2 = ll.%2 "
|
||||
// "WHERE (lastSuccessfulLogin IS NULL OR %3 <= lastSuccessfulLogin) AND %3 < ?" )
|
||||
// .arg( LoginHistory::staticSqlMetaInfo().tableName() )
|
||||
// .arg( LoginHistory::staticSqlMetaInfo().columnName( LoginHistory::Attributes::userAttributeId() ) )
|
||||
// .arg( LoginHistory::staticSqlMetaInfo().columnName( LoginHistory::Attributes::timestampAttributeId() ) )
|
||||
// .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" ) } )
|
||||
.from( LOGIN_HISTORY )
|
||||
.where( LOGIN_HISTORY.fail_reason == _ )
|
||||
.group_by( LOGIN_HISTORY.client );
|
||||
// .as_table("ll");
|
||||
|
||||
const auto stmt3 = query::query::select({ LOGIN_HISTORY.client })
|
||||
.from( LOGIN_HISTORY )
|
||||
.join_left(q/*, "ll"*/ )
|
||||
.on( LOGIN_HISTORY.client == "ll.client" )
|
||||
.where( query::is_null("lastSuccessfulLogin") && LOGIN_HISTORY.login_time < "ll.lastSuccessfulLogin" )
|
||||
.str( conn->dialect() );
|
||||
|
||||
std::cout << stmt1 << std::endl;
|
||||
std::cout << stmt2 << std::endl;
|
||||
std::cout << stmt3 << std::endl;
|
||||
|
||||
// const QString subQuery = QString( "SELECT MAX(%1) AS lastSuccessfulLogin, %3 FROM %2 "
|
||||
// "WHERE(%4 = ? OR %4 = ? OR %4 = ?) AND %3 = ? GROUP BY %3 " );
|
||||
//
|
||||
// const QString statement = QString( "SELECT MAX(t1.%1) AS LAST_FAILED_LOGIN FROM %2 t1 LEFT JOIN"
|
||||
// "(%0) t2 "
|
||||
// "ON t1.%3 = t2.%3 "
|
||||
// "WHERE(t2.lastSuccessfulLogin IS NULL OR t2.lastSuccessfulLogin < t1.%1) "
|
||||
// "AND (t1.%4 = ? OR t1.%4 = ?) "
|
||||
// "AND t1.%3 = ?" )
|
||||
// .arg( subQuery )
|
||||
// .arg( LoginHistory::staticSqlMetaInfo().columnName( LoginHistory::Attributes::timestampAttributeId() ) )
|
||||
// .arg( LoginHistory::staticSqlMetaInfo().tableName() )
|
||||
// .arg( columnFilterName )
|
||||
// .arg( LoginHistory::staticSqlMetaInfo().columnName( LoginHistory::Attributes::failReasonSqlAttributeId() ) );
|
||||
//
|
||||
// QSqlQuery query( sqlDatabase() );
|
||||
// if ( query.prepare( statement ) ) {
|
||||
// query.addBindValue( LoginHistory::FailReason::NoFailReason );
|
||||
// query.addBindValue( LoginHistory::FailReason::NoScenarioForUser );
|
||||
// query.addBindValue( LoginHistory::FailReason::UserLockedByAdmin );
|
||||
// query.addBindValue( columnFilterValue );
|
||||
// query.addBindValue( LoginHistory::FailReason::WrongPassword );
|
||||
// query.addBindValue( LoginHistory::FailReason::UnknownUserName );
|
||||
// query.addBindValue( columnFilterValue );
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -9,6 +9,8 @@
|
||||
|
||||
#include "matador/object/object_ptr.hpp"
|
||||
|
||||
#include "matador/query/meta_table_macro.hpp"
|
||||
|
||||
#include "matador/utils/base_class.hpp"
|
||||
#include "matador/utils/enum_mapper.hpp"
|
||||
#include "matador/utils/foreign_attributes.hpp"
|
||||
@@ -59,6 +61,9 @@ struct LoginHistory : core::Model {
|
||||
field::attribute( op, "login_time", login_time );
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
META_TABLE( login_histories, LOGIN_HISTORY, id, version, client, scenario, collection_center, login_name, fail_reason, login_time )
|
||||
|
||||
#endif //LOGIN_HISTORY_HPP
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
|
||||
#include "matador/object/object_ptr.hpp"
|
||||
|
||||
#include "matador/query/meta_table_macro.hpp"
|
||||
|
||||
#include "matador/utils/base_class.hpp"
|
||||
#include "matador/utils/foreign_attributes.hpp"
|
||||
#include "matador/utils/types.hpp"
|
||||
@@ -42,4 +44,7 @@ struct User : core::Model {
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
META_TABLE(users, USER, id, version, name, symbol, salt, password, lock_type, locked_at, lock_reason, role, user_directory)
|
||||
|
||||
#endif //USER_HPP
|
||||
|
||||
Reference in New Issue
Block a user