UNPKG

directus-extension-sync

Version:

This extension exposes routes to manage id mapping for Directus sync.

92 lines (59 loc) 3.46 kB
# `directus-extension-sync` The `directus-sync` CLI provides a set of tools for managing and synchronizing the schema and collections within Directus across different environments. It allows to synchronize the following elements: `dashboards`, `flows`, `folders`, `operations`, `panels`, `permissions`, `policies`, `presets`, `roles`, `settings` and `translations`. More information about the `directus-sync` CLI tool can be found [here](https://github.com/tractr/directus-sync). ## Overview The `directus-extension-sync` is an essential extension required for using the `directus-sync` CLI. It manages the mapping between synchronization identifiers (SyncIDs) and Directus's internal entity IDs. This extension allows `directus-sync` to perform version control and synchronization tasks across various Directus instances. ## Features - **ID Mapping**: Maintains a mapping table linking SyncIDs with Directus's internal IDs. - **Initialization**: Automatically creates the mapping table upon first use. - **CRUD Operations**: Provides endpoints to create, read, update, and delete mappings. ## Installation ### Installation with NPM In your Directus installation root, run: ```bash npm install directus-extension-sync ``` Then, restart Directus. ### Use pre-built Docker image You can use the pre-built Docker image with this extension pre-installed. This image is available on Docker Hub: [tractr/directus-sync](https://hub.docker.com/r/tractr/directus-sync). ### Installation within custom Docker image If you prefer to build your own Docker image, you can follow the instructions from this issue: https://github.com/tractr/directus-sync/issues/63#issuecomment-2096657924 ### Installation with Directus Marketplace Unfortunately, the extension is not available in the Directus Marketplace out of the box. Directus Marketplace does not support extensions that require a database connection ([more details here](https://docs.directus.io/extensions/sandbox/sandbox-sdk.html#reference)). **However**, you can force Directus Marketplace to show all extensions by setting the `MARKETPLACE_TRUST` environment variable to `all`. ```bash MARKETPLACE_TRUST=all ``` Then, go to the Directus Marketplace and search for the `directus-extension-sync` extension. ![Marketplace installation](https://raw.githubusercontent.com/tractr/directus-sync/main/packages/api/docs/marketplace.png) ## Usage The extension provides a set of RESTful endpoints that are used internally by the `directus-sync` tool to manage SyncIDs. These endpoints include: - `GET /directus-extension-sync/table/:table/sync_id/:sync_id`: Retrieve a mapping by SyncID. - `GET /directus-extension-sync/table/:table/local_id/:local_id`: Retrieve a mapping by local ID. - `GET /directus-extension-sync/table/:table`: Retrieve all mappings for a table. - `POST /directus-extension-sync/table/:table`: Create a new mapping entry. - `DELETE /directus-extension-sync/table/:table/sync_id/:sync_id`: Remove a mapping by SyncID. - `DELETE /directus-extension-sync/table/:table/local_id/:local_id`: Remove a mapping by local ID. ### Helpers - `DELETE /directus-extension-sync/helpers/permissions/duplicates`: Remove conflicts in permissions when there are duplicated groups "policy + collection + action". ## Development Link the package to a development Directus instance: ```bash npm run link /path/to/directus/extensions ``` The run in development mode: ```bash npm run dev ```