@directus/api
Version:
Directus is a real-time API and App dashboard for managing SQL database content
58 lines (57 loc) • 2.66 kB
JavaScript
import { ForbiddenError } from '@directus/errors';
import { AccessService, ActivityService, CommentsService, DashboardsService, FilesService, FlowsService, FoldersService, ItemsService, NotificationsService, OperationsService, PanelsService, PermissionsService, PoliciesService, PresetsService, RevisionsService, RolesService, SettingsService, SharesService, TranslationsService, UsersService, VersionsService, WebhooksService, } from '../services/index.js';
/**
* Select the correct service for the given collection. This allows the individual services to run
* their custom checks (f.e. it allows `UsersService` to prevent updating TFA secret from outside).
*/
export function getService(collection, opts) {
switch (collection) {
case 'directus_access':
return new AccessService(opts);
case 'directus_activity':
return new ActivityService(opts);
case 'directus_comments':
return new CommentsService(opts);
case 'directus_dashboards':
return new DashboardsService(opts);
case 'directus_files':
return new FilesService(opts);
case 'directus_flows':
return new FlowsService(opts);
case 'directus_folders':
return new FoldersService(opts);
case 'directus_notifications':
return new NotificationsService(opts);
case 'directus_operations':
return new OperationsService(opts);
case 'directus_panels':
return new PanelsService(opts);
case 'directus_permissions':
return new PermissionsService(opts);
case 'directus_presets':
return new PresetsService(opts);
case 'directus_policies':
return new PoliciesService(opts);
case 'directus_revisions':
return new RevisionsService(opts);
case 'directus_roles':
return new RolesService(opts);
case 'directus_settings':
return new SettingsService(opts);
case 'directus_shares':
return new SharesService(opts);
case 'directus_translations':
return new TranslationsService(opts);
case 'directus_users':
return new UsersService(opts);
case 'directus_versions':
return new VersionsService(opts);
case 'directus_webhooks':
return new WebhooksService(opts);
default:
// Deny usage of other system collections via ItemsService
if (collection.startsWith('directus_'))
throw new ForbiddenError();
return new ItemsService(collection, opts);
}
}