Skip to content
Snippets Groups Projects

Resolve "Backend code update"

Merged Lidiya Gelemeev requested to merge 4-backend-code-update into main
8 files
+ 317
71
Compare changes
  • Side-by-side
  • Inline
Files
8
@@ -5,81 +5,54 @@ namespace OCA\SccuotNC\Db\OC;
use OCA\SccuotNC\Db\ExtMapper;
use OCA\SccuotNC\Util\FileSize;
use OCP\DB\Exception;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCA\SccuotNC\Service\ConfigService;
class PreferencesMapper extends ExtMapper {
class AccountsMapper extends ExtMapper {
const PREFERENCES_TABLE = 'preferences';
private ConfigService $configService;
public function __construct(IDBConnection $db, int $chunkSize = 10) {
parent::__construct($db, self::PREFERENCES_TABLE, 10);
public function __construct(IDBConnection $db, int $chunkSize, ConfigService $configService ) {
parent::__construct($db, self::PREFERENCES_TABLE, $chunkSize);
$this->configService = $configService;
}
public function queryTotalCount(string $state) {
$data = [
'state' => $state,
'count' => 0
];
$this->chunkedQuery('userid', array($this, 'queryTotalCountCallback'), $data, true);
return $data['count'];
}
protected function queryTotalCountCallback(IQueryBuilder $query, $offset, &$data): string {
$state = $data['state'];
$qb = $this->getQueryBuilder();
$qb->selectDistinct('userid')
->from(self::PREFERENCES_TABLE)
->where($qb->expr()->eq('configkey', $qb->expr()->literal('enabled')))
->andWhere($qb->expr()->eq('configvalue', $qb->expr()->literal('false')));
if ($state == 'true') {
$query
->selectAlias($query->createFunction('COUNT(DISTINCT userid)'), 'c')
->selectAlias($query->createFunction('MAX(userid)'), 'm')
->from(self::PREFERENCES_TABLE)
->where($query->expr()->notIn('userid', $query->createFunction($qb->getSQL())));
} else {
$query->selectAlias($query->createFunction('COUNT(DISTINCT userid)'), 'c')
->selectAlias($query->createFunction('MAX(userid)'), 'm')
->from(self::PREFERENCES_TABLE)
->where($query->expr()->in('userid', $query->createFunction($qb->getSQL())));
public function queryTotalCount(string $state): int {
$users = $this->configService->config()->getUsersForUserValue('core', 'enabled', 'false');
if ($state === 'false'){
return count($users);
}
$this->addAlphabeticalChunkCondition($query,'userid', $offset);
// Query values and add up count
$values = $this->queryValues($query, ['c', 'm']);
$data['count'] += $values['c'];
return $values['m'] == NULL ? '' : $values['m'];
}
public function queryActiveCount(int $since): int {
$data = [
'since' => $since,
'count' => 0
];
$this->chunkedQuery('userid', array($this, 'queryActiveCountCallback'), $data, true);
return $data['count'];
$qb = $this->db->getQueryBuilder();
$qb->selectAlias($qb->createFunction('COUNT(DISTINCT uid)'), 'c')
->from('accounts');
$stmt = $qb->execute();
$result = $stmt->fetch();
$stmt->closeCursor();
$count = (int)$result['c'] - count($users);
return $count;
}
protected function queryActiveCountCallback(IQueryBuilder $query, $offset, &$data): string {
$since = $data['since'];
/**
* @throws Exception
*/
public function queryActiveCount(int $since): int {
$qb = $this->db->getQueryBuilder();
$query->selectAlias($query->createFunction('COUNT(*)'), 'c')
->selectAlias($query->createFunction('MAX(userid)'), 'm')
->from(self::PREFERENCES_TABLE)
->where($query->expr()->eq('configkey', $query->createPositionalParameter('lastLogin')))
->andWhere($query->expr()->gte('configvalue',$query->createPositionalParameter($since)));
$this->addAlphabeticalChunkCondition($query,'userid', $offset);
$qb->selectAlias($qb->createFunction('COUNT(DISTINCT uid)'), 'c')
->from('authtoken')
->where($qb->expr()->gte('last_activity', $qb->createPositionalParameter($since)));
// Query values and add up count
$values = $this->queryValues($query, ['c', 'm']);
$data['count'] += $values['c'];
$stmt = $qb->execute();
$result = $stmt->fetch();
$stmt->closeCursor();
return $values['m'] == NULL ? '' : $values['m'];
}
return (int) $result['c'];
}
public function queryUserStorages(): array {
$data = [
@@ -109,7 +82,7 @@ class PreferencesMapper extends ExtMapper {
$this->addAlphabeticalChunkCondition($query,'p.userid', $offset);
// Add storages and get highest ID
$highestID = 'A';
$highestID = '0';
foreach ($this->queryRows($query) as $row) {
$storages[] = intval($row['s']);
$highestID = max($row['i'], $highestID);
Loading