@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.
@@ -575,6 +575,42 @@ var addEntityToService = (directory) => async (id, entity, version) => {
575
575
  await rmServiceById(directory)(id, version);
576
576
  await writeService(pathToResource)(service, { format: extension === ".md" ? "md" : "mdx" });
577
577
  };
578
+ var addDataStoreToService = (directory) => async (id, operation, dataStore, version) => {
579
+ let service = await getService(directory)(id, version);
580
+ const servicePath = await getResourcePath(directory, id, version);
581
+ const extension = extname(servicePath?.fullPath || "");
582
+ if (operation === "writesTo") {
583
+ if (service.writesTo === void 0) {
584
+ service.writesTo = [];
585
+ }
586
+ for (let i = 0; i < service.writesTo.length; i++) {
587
+ if (service.writesTo[i].id === dataStore.id && service.writesTo[i].version === dataStore.version) {
588
+ return;
589
+ }
590
+ }
591
+ service.writesTo.push({ id: dataStore.id, version: dataStore.version });
592
+ } else if (operation === "readsFrom") {
593
+ if (service.readsFrom === void 0) {
594
+ service.readsFrom = [];
595
+ }
596
+ for (let i = 0; i < service.readsFrom.length; i++) {
597
+ if (service.readsFrom[i].id === dataStore.id && service.readsFrom[i].version === dataStore.version) {
598
+ return;
599
+ }
600
+ }
601
+ service.readsFrom.push({ id: dataStore.id, version: dataStore.version });
602
+ } else {
603
+ throw new Error(`Operation ${operation} is invalid, only 'writesTo' and 'readsFrom' are supported`);
604
+ }
605
+ const existingResource = await findFileById(directory, id, version);
606
+ if (!existingResource) {
607
+ throw new Error(`Cannot find service ${id} in the catalog`);
608
+ }
609
+ const path5 = existingResource.split(/[\\/]+services/)[0];
610
+ const pathToResource = join6(path5, "services");
611
+ await rmServiceById(directory)(id, version);
612
+ await writeService(pathToResource)(service, { format: extension === ".md" ? "md" : "mdx" });
613
+ };
578
614
 
579
615
  // src/domains.ts
580
616
  import fs6 from "fs/promises";
@@ -1480,6 +1516,23 @@ var index_default = (path5) => {
1480
1516
  * ```
1481
1517
  */
1482
1518
  addEventToService: addMessageToService(join15(path5)),
1519
+ /**
1520
+ * Add a data store to a service by it's id.
1521
+ *
1522
+ * Optionally specify a version to add the data store to a specific version of the service.
1523
+ *
1524
+ * @example
1525
+ * ```ts
1526
+ * import utils from '@eventcatalog/utils';
1527
+ *
1528
+ * const { addDataStoreToService } = utils('/path/to/eventcatalog');
1529
+ *
1530
+ * // adds a new data store (orders-db) that the InventoryService will write to
1531
+ * await addDataStoreToService('InventoryService', 'writesTo', { id: 'orders-db', version: '2.0.0' });
1532
+ *
1533
+ * ```
1534
+ */
1535
+ addDataStoreToService: addDataStoreToService(join15(path5)),
1483
1536
  /**
1484
1537
  * Add a command to a service by it's id.
1485
1538
  *