Add days api
parent
61ebfb3f83
commit
aa008dbe91
|
@ -4,6 +4,7 @@ return [
|
||||||
['name' => 'page#index', 'url' => '/', 'verb' => 'GET'],
|
['name' => 'page#index', 'url' => '/', 'verb' => 'GET'],
|
||||||
|
|
||||||
// API
|
// API
|
||||||
['name' => 'api#list', 'url' => '/api/list', 'verb' => 'GET'],
|
['name' => 'api#days', 'url' => '/api/days', 'verb' => 'GET'],
|
||||||
|
['name' => 'api#day', 'url' => '/api/days/{id}', 'verb' => 'GET'],
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
|
@ -54,19 +54,35 @@ class ApiController extends Controller {
|
||||||
$this->connection = $connection;
|
$this->connection = $connection;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @NoAdminRequired
|
* @NoAdminRequired
|
||||||
* @NoCSRFRequired
|
* @NoCSRFRequired
|
||||||
*
|
*
|
||||||
* @return JSONResponse
|
* @return JSONResponse
|
||||||
*/
|
*/
|
||||||
public function list(): JSONResponse {
|
public function days(): JSONResponse {
|
||||||
$user = $this->userSession->getUser();
|
$user = $this->userSession->getUser();
|
||||||
if (is_null($user)) {
|
if (is_null($user)) {
|
||||||
return new JSONResponse([], Http::STATUS_PRECONDITION_FAILED);
|
return new JSONResponse([], Http::STATUS_PRECONDITION_FAILED);
|
||||||
}
|
}
|
||||||
|
|
||||||
$list = \OCA\BetterPhotos\Db\Util::getList($this->connection, $user->getUID());
|
$list = \OCA\BetterPhotos\Db\Util::getDays($this->connection, $user->getUID());
|
||||||
|
return new JSONResponse($list, Http::STATUS_OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @NoAdminRequired
|
||||||
|
* @NoCSRFRequired
|
||||||
|
*
|
||||||
|
* @return JSONResponse
|
||||||
|
*/
|
||||||
|
public function day(string $id): JSONResponse {
|
||||||
|
$user = $this->userSession->getUser();
|
||||||
|
if (is_null($user) || !is_numeric($id)) {
|
||||||
|
return new JSONResponse([], Http::STATUS_PRECONDITION_FAILED);
|
||||||
|
}
|
||||||
|
|
||||||
|
$list = \OCA\BetterPhotos\Db\Util::getDay($this->connection, $user->getUID(), intval($id));
|
||||||
return new JSONResponse($list, Http::STATUS_OK);
|
return new JSONResponse($list, Http::STATUS_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ class Util {
|
||||||
// Get parameters
|
// Get parameters
|
||||||
$fileId = $file->getId();
|
$fileId = $file->getId();
|
||||||
$dateTaken = $this->getDateTaken($file);
|
$dateTaken = $this->getDateTaken($file);
|
||||||
$dayId = 0;
|
$dayId = floor($dateTaken / 86400);
|
||||||
|
|
||||||
// Insert or update file
|
// Insert or update file
|
||||||
// todo: update dateTaken and dayId if needed
|
// todo: update dateTaken and dayId if needed
|
||||||
|
@ -83,24 +83,31 @@ class Util {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function getListQuery(
|
public static function getDays(
|
||||||
IDBConnection $connection,
|
IDBConnection $connection,
|
||||||
string $user,
|
string $user,
|
||||||
) {
|
): array {
|
||||||
|
$qb = $connection->getQueryBuilder();
|
||||||
|
$qb->select('day_id', 'count')
|
||||||
|
->from('betterphotos_day')
|
||||||
|
->where($qb->expr()->eq('user_id', $qb->createNamedParameter($user)))
|
||||||
|
->orderBy('day_id', 'DESC');
|
||||||
|
$result = $qb->executeQuery();
|
||||||
|
$rows = $result->fetchAll();
|
||||||
|
return $rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getDay(
|
||||||
|
IDBConnection $connection,
|
||||||
|
string $user,
|
||||||
|
int $dayId,
|
||||||
|
): array {
|
||||||
$qb = $connection->getQueryBuilder();
|
$qb = $connection->getQueryBuilder();
|
||||||
$qb->select('file_id', 'date_taken')
|
$qb->select('file_id', 'date_taken')
|
||||||
->from('betterphotos')
|
->from('betterphotos')
|
||||||
->where($qb->expr()->eq('user_id', $qb->createNamedParameter($user)))
|
->where($qb->expr()->eq('user_id', $qb->createNamedParameter($user)))
|
||||||
->orderBy('date_taken', 'DESC')
|
->andWhere($qb->expr()->eq('day_id', $qb->createNamedParameter($dayId)))
|
||||||
->setMaxResults(100);
|
->orderBy('date_taken', 'DESC');
|
||||||
return $qb;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function getList(
|
|
||||||
IDBConnection $connection,
|
|
||||||
string $user,
|
|
||||||
): array {
|
|
||||||
$qb = self::getListQuery($connection, $user);
|
|
||||||
$result = $qb->executeQuery();
|
$result = $qb->executeQuery();
|
||||||
$rows = $result->fetchAll();
|
$rows = $result->fetchAll();
|
||||||
return $rows;
|
return $rows;
|
||||||
|
|
Loading…
Reference in New Issue