Rhys Sullivanfmtc92c57d6 months agoHistory
28 lines · 1.3 KB · TypeScript
RawDownload
// ---------------------------------------------------------------------------// Organization lookup — local mirror with lazy WorkOS fallback.// ---------------------------------------------------------------------------//// We keep a minimal local mirror of organizations so domain tables can// foreign-key against them and so we don't hit WorkOS on every request.// But the mirror can drift: a user's session can reference an org that was// created outside this app (or before the mirror existed). Rather than// proactively mirroring on every login — which was the source of the messy// callback flow we just untangled — we mirror lazily the first time an// unknown org is read. All other callers just do `getOrganization` and get// a self-healing lookup for free. import { Effect } from "effect"; import { UserStoreService } from "./context";import { WorkOSAuth } from "./workos"; export const resolveOrganization = (organizationId: string) =>  Effect.gen(function* () {    const users = yield* UserStoreService;    const existing = yield* users.use((s) => s.getOrganization(organizationId));    if (existing) return existing;     const workos = yield* WorkOSAuth;    const fresh = yield* workos.getOrganization(organizationId);    return yield* users.use((s) => s.upsertOrganization({ id: fresh.id, name: fresh.name }));  });