Request for Feedback on Improving Efficiency and Ecosystem Usage in TypeScript Code

Hi! I would love to get some feedback from the experts! I want to use Effect more efficiently but not sure where to start. Especially the for loops. Any feedback is great!

  const program = Effect.gen(function* () {
    const currentDestinations = yield* Effect.promise(() =>
      ctx.db
        .query("destinations")
        .withIndex("by_contact_id", (q) =>
          q
            .eq("organizationId", ctx.user.defaultOrganizationId!)
            .eq("contactId", contactId)
            .eq("type", type),
        )
        .collect(),
    ).pipe();

    const newDestinations = destinations.filter((d) => !d._id);
    const existingDestinations = destinations.filter((d) => d._id);
    const destinationsToRemove = currentDestinations.filter(
      (cd) => !existingDestinations.some((d) => d._id === cd._id),
    );

    const favoriteDestination =
      existingDestinations.find((d) => d.isFavorite) ||
      newDestinations.find((d) => d.isFavorite) ||
      existingDestinations[0] ||
      newDestinations[0];

    const updatedDestinations = [
      ...existingDestinations,
      ...newDestinations,
    ].map((d) => ({
      ...d,
      isFavorite: d._id === favoriteDestination?._id,
    }));

    for (const destination of updatedDestinations.filter((d) => d._id)) {
      yield* Effect.promise(() =>
        ctx.db.patch(destination._id!, {
          value: destination.value,
          isFavorite: destination.isFavorite,
        }),
      );
    }

    for (const destination of destinationsToRemove) {
      yield* Effect.promise(() => ctx.db.delete(destination._id));
    }

    for (const destination of updatedDestinations.filter((d) => !d._id)) {
      yield* Effect.promise(() =>
        ctx.db.insert("destinations", {
          contactId,
          type,
          value: destination.value,
          isFavorite: destination.isFavorite,
          status: "active",
          organizationId: ctx.user.defaultOrganizationId!,
        }),
      );
    }
  });
Was this page helpful?