@eventcatalog/sdk 2.8.2 → 2.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -571,6 +571,42 @@ var addEntityToService = (directory) => async (id, entity, version) => {
571
571
  await rmServiceById(directory)(id, version);
572
572
  await writeService(pathToResource)(service, { format: extension === ".md" ? "md" : "mdx" });
573
573
  };
574
+ var addDataStoreToService = (directory) => async (id, operation, dataStore, version) => {
575
+ let service = await getService(directory)(id, version);
576
+ const servicePath = await getResourcePath(directory, id, version);
577
+ const extension = extname(servicePath?.fullPath || "");
578
+ if (operation === "writesTo") {
579
+ if (service.writesTo === void 0) {
580
+ service.writesTo = [];
581
+ }
582
+ for (let i = 0; i < service.writesTo.length; i++) {
583
+ if (service.writesTo[i].id === dataStore.id && service.writesTo[i].version === dataStore.version) {
584
+ return;
585
+ }
586
+ }
587
+ service.writesTo.push({ id: dataStore.id, version: dataStore.version });
588
+ } else if (operation === "readsFrom") {
589
+ if (service.readsFrom === void 0) {
590
+ service.readsFrom = [];
591
+ }
592
+ for (let i = 0; i < service.readsFrom.length; i++) {
593
+ if (service.readsFrom[i].id === dataStore.id && service.readsFrom[i].version === dataStore.version) {
594
+ return;
595
+ }
596
+ }
597
+ service.readsFrom.push({ id: dataStore.id, version: dataStore.version });
598
+ } else {
599
+ throw new Error(`Operation ${operation} is invalid, only 'writesTo' and 'readsFrom' are supported`);
600
+ }
601
+ const existingResource = await findFileById(directory, id, version);
602
+ if (!existingResource) {
603
+ throw new Error(`Cannot find service ${id} in the catalog`);
604
+ }
605
+ const path5 = existingResource.split(/[\\/]+services/)[0];
606
+ const pathToResource = join6(path5, "services");
607
+ await rmServiceById(directory)(id, version);
608
+ await writeService(pathToResource)(service, { format: extension === ".md" ? "md" : "mdx" });
609
+ };
574
610
 
575
611
  // src/domains.ts
576
612
  import fs6 from "fs/promises";
@@ -1573,6 +1609,23 @@ var index_default = (path5) => {
1573
1609
  * ```
1574
1610
  */
1575
1611
  addEventToService: addMessageToService(join16(path5)),
1612
+ /**
1613
+ * Add a data store to a service by it's id.
1614
+ *
1615
+ * Optionally specify a version to add the data store to a specific version of the service.
1616
+ *
1617
+ * @example
1618
+ * ```ts
1619
+ * import utils from '@eventcatalog/utils';
1620
+ *
1621
+ * const { addDataStoreToService } = utils('/path/to/eventcatalog');
1622
+ *
1623
+ * // adds a new data store (orders-db) that the InventoryService will write to
1624
+ * await addDataStoreToService('InventoryService', 'writesTo', { id: 'orders-db', version: '2.0.0' });
1625
+ *
1626
+ * ```
1627
+ */
1628
+ addDataStoreToService: addDataStoreToService(join16(path5)),
1576
1629
  /**
1577
1630
  * Add a command to a service by it's id.
1578
1631
  *