@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.
@@ -610,6 +610,42 @@ var addEntityToService = (directory) => async (id, entity, version) => {
610
610
  await rmServiceById(directory)(id, version);
611
611
  await writeService(pathToResource)(service, { format: extension === ".md" ? "md" : "mdx" });
612
612
  };
613
+ var addDataStoreToService = (directory) => async (id, operation, dataStore, version) => {
614
+ let service = await getService(directory)(id, version);
615
+ const servicePath = await getResourcePath(directory, id, version);
616
+ const extension = (0, import_node_path6.extname)(servicePath?.fullPath || "");
617
+ if (operation === "writesTo") {
618
+ if (service.writesTo === void 0) {
619
+ service.writesTo = [];
620
+ }
621
+ for (let i = 0; i < service.writesTo.length; i++) {
622
+ if (service.writesTo[i].id === dataStore.id && service.writesTo[i].version === dataStore.version) {
623
+ return;
624
+ }
625
+ }
626
+ service.writesTo.push({ id: dataStore.id, version: dataStore.version });
627
+ } else if (operation === "readsFrom") {
628
+ if (service.readsFrom === void 0) {
629
+ service.readsFrom = [];
630
+ }
631
+ for (let i = 0; i < service.readsFrom.length; i++) {
632
+ if (service.readsFrom[i].id === dataStore.id && service.readsFrom[i].version === dataStore.version) {
633
+ return;
634
+ }
635
+ }
636
+ service.readsFrom.push({ id: dataStore.id, version: dataStore.version });
637
+ } else {
638
+ throw new Error(`Operation ${operation} is invalid, only 'writesTo' and 'readsFrom' are supported`);
639
+ }
640
+ const existingResource = await findFileById(directory, id, version);
641
+ if (!existingResource) {
642
+ throw new Error(`Cannot find service ${id} in the catalog`);
643
+ }
644
+ const path5 = existingResource.split(/[\\/]+services/)[0];
645
+ const pathToResource = (0, import_node_path6.join)(path5, "services");
646
+ await rmServiceById(directory)(id, version);
647
+ await writeService(pathToResource)(service, { format: extension === ".md" ? "md" : "mdx" });
648
+ };
613
649
 
614
650
  // src/domains.ts
615
651
  var import_promises6 = __toESM(require("fs/promises"));
@@ -1515,6 +1551,23 @@ var index_default = (path5) => {
1515
1551
  * ```
1516
1552
  */
1517
1553
  addEventToService: addMessageToService((0, import_node_path16.join)(path5)),
1554
+ /**
1555
+ * Add a data store to a service by it's id.
1556
+ *
1557
+ * Optionally specify a version to add the data store to a specific version of the service.
1558
+ *
1559
+ * @example
1560
+ * ```ts
1561
+ * import utils from '@eventcatalog/utils';
1562
+ *
1563
+ * const { addDataStoreToService } = utils('/path/to/eventcatalog');
1564
+ *
1565
+ * // adds a new data store (orders-db) that the InventoryService will write to
1566
+ * await addDataStoreToService('InventoryService', 'writesTo', { id: 'orders-db', version: '2.0.0' });
1567
+ *
1568
+ * ```
1569
+ */
1570
+ addDataStoreToService: addDataStoreToService((0, import_node_path16.join)(path5)),
1518
1571
  /**
1519
1572
  * Add a command to a service by it's id.
1520
1573
  *