/// <inheritdoc /> public void Handle(DoesJobExistQuery <TConnection, TTransaction> query, IDbCommand dbCommand, CommandStringTypes commandType) { dbCommand.CommandText = _commandCache.GetCommand(commandType); var param = dbCommand.CreateParameter(); param.ParameterName = "@JobName"; param.Size = 255; param.DbType = DbType.AnsiString; param.Value = query.JobName; dbCommand.Parameters.Add(param); }
/// <inheritdoc /> public QueueStatuses Handle(DoesJobExistQuery <TConnection, TTransaction> query) { if (query.Connection != null) { return(RunQuery(query, query.Connection, query.Transaction)); } using (var connection = _dbConnectionFactory.Create()) { connection.Open(); using (var trans = _transactionFactory.Create(connection).BeginTransaction()) { return(RunQuery(query, connection, trans)); } } }
private QueueStatuses RunQuery(DoesJobExistQuery <TConnection, TTransaction> query, IDbConnection connection, IDbTransaction transaction) { var returnStatus = QueueStatuses.NotQueued; using (var command = connection.CreateCommand()) { command.Transaction = transaction; _prepareQuery.Handle(query, command, CommandStringTypes.DoesJobExist); using (var reader = command.ExecuteReader()) { if (reader.Read()) { returnStatus = (QueueStatuses)_readColumn.ReadAsInt32(CommandStringTypes.DoesJobExist, 0, reader); } } if (returnStatus == QueueStatuses.NotQueued && _tableExists.Handle(new GetTableExistsQuery(_connectionInformation.ConnectionString, _tableNameHelper.JobTableName))) { command.CommandText = _commandCache.GetCommand(CommandStringTypes.GetJobLastScheduleTime); command.Transaction = transaction; using (var reader = command.ExecuteReader()) { if (!reader.Read()) { return(returnStatus); } var scheduleTime = _readColumn.ReadAsDateTimeOffset(CommandStringTypes.GetJobLastScheduleTime, 0, reader); if (scheduleTime == query.ScheduledTime) { return(QueueStatuses.Processed); } } } } return(returnStatus); }
/// <summary> /// Handles the specified query. /// </summary> /// <param name="query">The query.</param> /// <returns></returns> public QueueStatuses Handle(DoesJobExistQuery <IDbConnection, IDbTransaction> query) { return(!_databaseExists.Exists(_connectionInformation.ConnectionString) ? QueueStatuses.NotQueued : _decorated.Handle(query)); }