clusters: add type to response

Signed-off-by: Varun Patil <varunpatil@ucla.edu>
pull/563/head
Varun Patil 2023-03-24 04:17:54 -07:00
parent 24615ddd0d
commit 92781df0c1
8 changed files with 85 additions and 11 deletions

View File

@ -75,11 +75,11 @@ class Application extends App implements IBootstrap
$context->registerEventListener(NodeDeletedEvent::class, PostDeleteListener::class); $context->registerEventListener(NodeDeletedEvent::class, PostDeleteListener::class);
// Register clusters backends // Register clusters backends
ClustersBackend\Manager::register('albums', ClustersBackend\AlbumsBackend::class); ClustersBackend\AlbumsBackend::register();
ClustersBackend\Manager::register('tags', ClustersBackend\TagsBackend::class); ClustersBackend\TagsBackend::register();
ClustersBackend\Manager::register('places', ClustersBackend\PlacesBackend::class); ClustersBackend\PlacesBackend::register();
ClustersBackend\Manager::register('recognize', ClustersBackend\RecognizeBackend::class); ClustersBackend\RecognizeBackend::register();
ClustersBackend\Manager::register('facerecognition', ClustersBackend\FaceRecognitionBackend::class); ClustersBackend\FaceRecognitionBackend::register();
} }
public function boot(IBootContext $context): void public function boot(IBootContext $context): void

View File

@ -41,11 +41,16 @@ class AlbumsBackend extends Backend
$this->request = $request; $this->request = $request;
} }
public function appName(): string public static function appName(): string
{ {
return 'Albums'; return 'Albums';
} }
public static function clusterType(): string
{
return 'albums';
}
public function isEnabled(): bool public function isEnabled(): bool
{ {
return Util::albumsIsEnabled(); return Util::albumsIsEnabled();
@ -105,6 +110,11 @@ class AlbumsBackend extends Backend
return array_values($list); return array_values($list);
} }
public static function getClusterId(array $cluster)
{
return $cluster['album_id'];
}
public function getPhotos(string $name, ?int $limit = null): array public function getPhotos(string $name, ?int $limit = null): array
{ {
// Get album // Get album

View File

@ -31,7 +31,12 @@ abstract class Backend
* A human-readable name for the app. * A human-readable name for the app.
* Used for error messages. * Used for error messages.
*/ */
abstract public function appName(): string; abstract static public function appName(): string;
/**
* Get name of the cluster type.
*/
abstract static public function clusterType(): string;
/** /**
* Whether the app is enabled for the current user. * Whether the app is enabled for the current user.
@ -58,6 +63,11 @@ abstract class Backend
*/ */
abstract public function getClusters(): array; abstract public function getClusters(): array;
/**
* Get a cluster ID for the given cluster.
*/
abstract static public function getClusterId(array $cluster);
/** /**
* Get a list of photos with any extra parameters for the given cluster * Get a list of photos with any extra parameters for the given cluster
* Used for preview generation and download. * Used for preview generation and download.
@ -112,4 +122,12 @@ abstract class Backend
{ {
return (int) $photo['fileid']; return (int) $photo['fileid'];
} }
/**
* Register the backend. Do not override.
*/
public static function register(): void
{
Manager::register(static::clusterType(), static::class);
}
} }

View File

@ -46,11 +46,16 @@ class FaceRecognitionBackend extends Backend
$this->config = $config; $this->config = $config;
} }
public function appName(): string public static function appName(): string
{ {
return 'Face Recognition'; return 'Face Recognition';
} }
public static function clusterType(): string
{
return 'facerecognition';
}
public function isEnabled(): bool public function isEnabled(): bool
{ {
return Util::facerecognitionIsInstalled() return Util::facerecognitionIsInstalled()
@ -134,6 +139,11 @@ class FaceRecognitionBackend extends Backend
return $faces; return $faces;
} }
public static function getClusterId(array $cluster)
{
return $cluster['id'];
}
public function getPhotos(string $name, ?int $limit = null): array public function getPhotos(string $name, ?int $limit = null): array
{ {
$query = $this->tq->getBuilder(); $query = $this->tq->getBuilder();

View File

@ -38,11 +38,16 @@ class PlacesBackend extends Backend
$this->request = $request; $this->request = $request;
} }
public function appName(): string public static function appName(): string
{ {
return 'Places'; return 'Places';
} }
public static function clusterType(): string
{
return 'places';
}
public function isEnabled(): bool public function isEnabled(): bool
{ {
return Util::placesGISType() > 0; return Util::placesGISType() > 0;
@ -92,6 +97,11 @@ class PlacesBackend extends Backend
return $places; return $places;
} }
public static function getClusterId(array $cluster)
{
return $cluster['osm_id'];
}
public function getPhotos(string $name, ?int $limit = null): array public function getPhotos(string $name, ?int $limit = null): array
{ {
$query = $this->tq->getBuilder(); $query = $this->tq->getBuilder();

View File

@ -40,11 +40,16 @@ class RecognizeBackend extends Backend
$this->request = $request; $this->request = $request;
} }
public function appName(): string public static function appName(): string
{ {
return 'Recognize'; return 'Recognize';
} }
public static function clusterType(): string
{
return 'recognize';
}
public function isEnabled(): bool public function isEnabled(): bool
{ {
return Util::recognizeIsEnabled(); return Util::recognizeIsEnabled();
@ -162,6 +167,11 @@ class RecognizeBackend extends Backend
return $faces; return $faces;
} }
public static function getClusterId(array $cluster)
{
return $cluster['id'];
}
public function getPhotos(string $name, ?int $limit = null): array public function getPhotos(string $name, ?int $limit = null): array
{ {
$query = $this->tq->getBuilder(); $query = $this->tq->getBuilder();

View File

@ -39,11 +39,16 @@ class TagsBackend extends Backend
$this->request = $request; $this->request = $request;
} }
public function appName(): string public static function appName(): string
{ {
return 'Tags'; return 'Tags';
} }
public static function clusterType(): string
{
return 'tags';
}
public function isEnabled(): bool public function isEnabled(): bool
{ {
return Util::tagsIsEnabled(); return Util::tagsIsEnabled();
@ -101,6 +106,11 @@ class TagsBackend extends Backend
return $tags; return $tags;
} }
public static function getClusterId(array $cluster)
{
return $cluster['name'];
}
public function getPhotos(string $name, ?int $limit = null): array public function getPhotos(string $name, ?int $limit = null): array
{ {
$query = $this->tq->getBuilder(); $query = $this->tq->getBuilder();

View File

@ -47,6 +47,12 @@ class ClustersController extends GenericApiController
$list = $this->backend->getClusters(); $list = $this->backend->getClusters();
// Set cluster_id and cluster_type for each cluster
foreach ($list as &$cluster) {
$cluster['cluster_id'] = $this->backend->getClusterId($cluster);
$cluster['cluster_type'] = $this->backend->clusterType();
}
return new JSONResponse($list, Http::STATUS_OK); return new JSONResponse($list, Http::STATUS_OK);
}); });
} }