Skip to content

Commit

Permalink
Adds delays for suggestion api
Browse files Browse the repository at this point in the history
  • Loading branch information
NejcZdovc committed Jan 16, 2020
1 parent dcd05aa commit 0156052
Show file tree
Hide file tree
Showing 21 changed files with 833 additions and 98 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -345,17 +345,18 @@ bool DatabaseContributionInfo::GetOneTimeTips(
return false;
}

const std::string query =
const std::string query = base::StringPrintf(
"SELECT pi.publisher_id, pi.name, pi.url, pi.favIcon, "
"ci.amount, ci.created_at, spi.status, pi.provider "
"FROM contribution_info as ci "
"FROM %s as ci "
"INNER JOIN contribution_info_publishers AS cp "
"ON cp.contribution_id = ci.contribution_id "
"INNER JOIN publisher_info AS pi ON cp.publisher_key = pi.publisher_id "
"LEFT JOIN server_publisher_info AS spi "
"ON spi.publisher_key = pi.publisher_id "
"WHERE strftime('%m', datetime(ci.created_at, 'unixepoch')) = ? AND "
"strftime('%Y', datetime(ci.created_at, 'unixepoch')) = ? AND ci.type = ?";
"strftime('%%Y', datetime(ci.created_at, 'unixepoch')) = ? AND ci.type = ?",
table_name_);

sql::Statement statement(db->GetUniqueStatement(query.c_str()));

Expand Down Expand Up @@ -394,11 +395,12 @@ bool DatabaseContributionInfo::GetContributionReport(
return false;
}

const std::string query =
const std::string query = base::StringPrintf(
"SELECT ci.contribution_id, ci.amount, ci.type, ci.created_at "
"FROM contribution_info as ci "
"FROM %s as ci "
"WHERE strftime('%m', datetime(ci.created_at, 'unixepoch')) = ? AND "
"strftime('%Y', datetime(ci.created_at, 'unixepoch')) = ?";
"strftime('%%Y', datetime(ci.created_at, 'unixepoch')) = ?",
table_name_);

sql::Statement statement(db->GetUniqueStatement(query.c_str()));

Expand All @@ -423,4 +425,96 @@ bool DatabaseContributionInfo::GetContributionReport(
return true;
}

bool DatabaseContributionInfo::GetNotCompletedRecords(
sql::Database* db,
ledger::ContributionInfoList* list) {
DCHECK(list);
if (!list) {
return false;
}

const std::string query = base::StringPrintf(
"SELECT ci.contribution_id, ci.amount, ci.type, ci.step, ci.retry_count "
"FROM %s as ci "
"WHERE ci.step > 0",
table_name_);

sql::Statement statement(db->GetUniqueStatement(query.c_str()));

while (statement.Step()) {
auto info = ledger::ContributionInfo::New();
info->contribution_id = statement.ColumnString(0);
info->amount = statement.ColumnDouble(1);
info->type = static_cast<ledger::RewardsType>(statement.ColumnInt64(2));
info->step = statement.ColumnInt(3);
info->retry_count = statement.ColumnInt(4);
publishers_->GetRecords(
db,
info->contribution_id,
&info->publishers);

list->push_back(std::move(info));
}

return true;
}

ledger::ContributionInfoPtr DatabaseContributionInfo::GetRecord(
sql::Database* db,
const std::string& contribution_id) {
if (!db || contribution_id.empty()) {
return nullptr;
}

const std::string query = base::StringPrintf(
"SELECT ci.contribution_id, ci.amount, ci.type, ci.step, ci.retry_count "
"FROM %s as ci "
"WHERE ci.contribution_id = ?",
table_name_);

sql::Statement statement(db->GetUniqueStatement(query.c_str()));

statement.BindString(0, contribution_id);

if (!statement.Step()) {
return nullptr;
}

auto info = ledger::ContributionInfo::New();
info->contribution_id = statement.ColumnString(0);
info->amount = statement.ColumnDouble(1);
info->type = static_cast<ledger::RewardsType>(statement.ColumnInt64(2));
info->step = statement.ColumnInt(3);
info->retry_count = statement.ColumnInt(4);
publishers_->GetRecords(
db,
info->contribution_id,
&info->publishers);

return info;
}

bool DatabaseContributionInfo::UpdateStepAndCount(
sql::Database* db,
const std::string& contribution_id,
const ledger::ContributionStep step,
const int32_t retry_count) {
if (!db || contribution_id.empty()) {
return false;
}

const std::string query = base::StringPrintf(
"UPDATE %s SET step=?, retry_count=? WHERE contribution_id = ?;",
table_name_);

sql::Statement statement(
db->GetCachedStatement(SQL_FROM_HERE, query.c_str()));

statement.BindInt(0, static_cast<int>(step));
statement.BindInt(1, retry_count);
statement.BindString(2, contribution_id);

return statement.Run();
}

} // namespace brave_rewards
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,20 @@ class DatabaseContributionInfo: public DatabaseTable {
const ledger::ActivityMonth month,
const int year);

bool GetNotCompletedRecords(
sql::Database* db,
ledger::ContributionInfoList* list);

ledger::ContributionInfoPtr GetRecord(
sql::Database* db,
const std::string& contribution_id);

bool UpdateStepAndCount(
sql::Database* db,
const std::string& contribution_id,
const ledger::ContributionStep step,
const int32_t retry_count);

private:
bool CreateTableV2(sql::Database* db);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,32 @@ void PublisherInfoDatabase::GetContributionReport(
contribution_info_->GetContributionReport(&GetDB(), list, month, year);
}

void PublisherInfoDatabase::GetNotCompletedContributions(
ledger::ContributionInfoList* list) {
DCHECK(list);
if (!IsInitialized() || !list) {
return;
}

contribution_info_->GetNotCompletedRecords(&GetDB(), list);
}

ledger::ContributionInfoPtr PublisherInfoDatabase::GetContributionInfo(
const std::string& contribution_id) {
return contribution_info_->GetRecord(&GetDB(), contribution_id);
}

bool PublisherInfoDatabase::UpdateContributionInfoStepAndCount(
const std::string& contribution_id,
const ledger::ContributionStep step,
const int32_t retry_count) {
return contribution_info_->UpdateStepAndCount(
&GetDB(),
contribution_id,
step,
retry_count);
}

/**
*
* PUBLISHER INFO
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,17 @@ class PublisherInfoDatabase {
const ledger::ActivityMonth month,
const int year);

void GetNotCompletedContributions(
ledger::ContributionInfoList* list);

ledger::ContributionInfoPtr GetContributionInfo(
const std::string& contribution_id);

bool UpdateContributionInfoStepAndCount(
const std::string& contribution_id,
const ledger::ContributionStep step,
const int32_t retry_count);

// Vacuums the database. This will cause sqlite to defragment and collect
// unused space in the file. It can be VERY SLOW.
void Vacuum();
Expand Down
98 changes: 98 additions & 0 deletions components/brave_rewards/browser/rewards_service_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4574,4 +4574,102 @@ void RewardsServiceImpl::OnGetContributionReport(
callback(std::move(list));
}



ledger::ContributionInfoList GetNotCompletedContributionsOnFileTaskRunner(
PublisherInfoDatabase* backend) {
DCHECK(backend);
if (!backend) {
return {};
}

ledger::ContributionInfoList list;
backend->GetNotCompletedContributions(&list);
return list;
}

void RewardsServiceImpl::GetNotCompletedContributions(
ledger::GetNotCompletedContributionsCallback callback) {
base::PostTaskAndReplyWithResult(
file_task_runner_.get(),
FROM_HERE,
base::BindOnce(&GetNotCompletedContributionsOnFileTaskRunner,
publisher_info_backend_.get()),
base::BindOnce(&RewardsServiceImpl::OnGetNotCompletedContributions,
AsWeakPtr(),
callback));
}

void RewardsServiceImpl::OnGetNotCompletedContributions(
ledger::GetNotCompletedContributionsCallback callback,
ledger::ContributionInfoList list) {
callback(std::move(list));
}

ledger::ContributionInfoPtr GetContributionInfoOnFileTaskRunner(
PublisherInfoDatabase* backend,
const std::string& contribution_id) {
DCHECK(backend);
if (!backend) {
return {};
}

return backend->GetContributionInfo(contribution_id);
}

void RewardsServiceImpl::GetContributionInfo(
const std::string& contribution_id,
ledger::GetContributionInfoCallback callback) {
base::PostTaskAndReplyWithResult(
file_task_runner_.get(),
FROM_HERE,
base::BindOnce(&GetContributionInfoOnFileTaskRunner,
publisher_info_backend_.get(),
contribution_id),
base::BindOnce(&RewardsServiceImpl::OnGetContributionInfo,
AsWeakPtr(),
callback));
}

void RewardsServiceImpl::OnGetContributionInfo(
ledger::GetContributionInfoCallback callback,
ledger::ContributionInfoPtr info) {
callback(std::move(info));
}

ledger::Result UpdateContributionInfoStepAndCountOnFileTaskRunner(
PublisherInfoDatabase* backend,
const std::string& contribution_id,
const ledger::ContributionStep step,
const int32_t retry_count) {
DCHECK(backend);
if (!backend) {
return {};
}

const bool success = backend->UpdateContributionInfoStepAndCount(
contribution_id,
step,
retry_count);
return success ? ledger::Result::LEDGER_OK : ledger::Result::LEDGER_ERROR;
}

void RewardsServiceImpl::UpdateContributionInfoStepAndCount(
const std::string& contribution_id,
const ledger::ContributionStep step,
const int32_t retry_count,
ledger::ResultCallback callback) {
base::PostTaskAndReplyWithResult(
file_task_runner_.get(),
FROM_HERE,
base::BindOnce(&UpdateContributionInfoStepAndCountOnFileTaskRunner,
publisher_info_backend_.get(),
contribution_id,
step,
retry_count),
base::BindOnce(&RewardsServiceImpl::OnResult,
AsWeakPtr(),
callback));
}

} // namespace brave_rewards
21 changes: 21 additions & 0 deletions components/brave_rewards/browser/rewards_service_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -752,6 +752,19 @@ class RewardsServiceImpl : public RewardsService,
const int year,
ledger::GetContributionReportCallback callback) override;

void GetNotCompletedContributions(
ledger::GetNotCompletedContributionsCallback callback) override;

void GetContributionInfo(
const std::string& contribution_id,
ledger::GetContributionInfoCallback callback) override;

void UpdateContributionInfoStepAndCount(
const std::string& contribution_id,
const ledger::ContributionStep step,
const int32_t retry_count,
ledger::ResultCallback callback) override;

// end ledger::LedgerClient

// Mojo Proxy methods
Expand Down Expand Up @@ -842,6 +855,14 @@ class RewardsServiceImpl : public RewardsService,
ledger::GetContributionReportCallback callback,
ledger::ContributionReportInfoList list);

void OnGetNotCompletedContributions(
ledger::GetNotCompletedContributionsCallback callback,
ledger::ContributionInfoList list);

void OnGetContributionInfo(
ledger::GetContributionInfoCallback callback,
ledger::ContributionInfoPtr info);

#if defined(OS_ANDROID)
ledger::Environment GetServerEnvironmentForAndroid();
void CreateWalletAttestationResult(
Expand Down
45 changes: 45 additions & 0 deletions components/services/bat_ledger/bat_ledger_client_mojo_proxy.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1072,4 +1072,49 @@ void BatLedgerClientMojoProxy::GetContributionReport(
base::BindOnce(&OnGetContributionReport, std::move(callback)));
}

void OnGetNotCompletedContributions(
ledger::GetNotCompletedContributionsCallback callback,
ledger::ContributionInfoList list) {
callback(std::move(list));
}

void BatLedgerClientMojoProxy::GetNotCompletedContributions(
ledger::GetNotCompletedContributionsCallback callback) {
bat_ledger_client_->GetNotCompletedContributions(
base::BindOnce(&OnGetNotCompletedContributions, std::move(callback)));
}

void OnGetContributionInfo(
ledger::GetContributionInfoCallback callback,
ledger::ContributionInfoPtr info) {
callback(std::move(info));
}

void BatLedgerClientMojoProxy::GetContributionInfo(
const std::string& contribution_id,
ledger::GetContributionInfoCallback callback) {
bat_ledger_client_->GetContributionInfo(
contribution_id,
base::BindOnce(&OnGetContributionInfo, std::move(callback)));
}

void OnUpdateContributionInfoStepAndCount(
ledger::ResultCallback callback,
const ledger::Result result) {
callback(result);
}

void BatLedgerClientMojoProxy::UpdateContributionInfoStepAndCount(
const std::string& contribution_id,
const ledger::ContributionStep step,
const int32_t retry_count,
ledger::ResultCallback callback) {
bat_ledger_client_->UpdateContributionInfoStepAndCount(
contribution_id,
step,
retry_count,
base::BindOnce(&OnUpdateContributionInfoStepAndCount,
std::move(callback)));
}

} // namespace bat_ledger
Loading

0 comments on commit 0156052

Please sign in to comment.