Fixing issues with service metadata

This commit is contained in:
Matt Aitken
2023-02-20 12:22:32 +00:00
parent 06f2fc3aeb
commit c76d930f08
7 changed files with 31 additions and 27 deletions
@@ -6,7 +6,7 @@ import {
WrenchScrewdriverIcon,
} from "@heroicons/react/24/outline";
import { Link } from "@remix-run/react";
import { TemplateListItem } from "~/presenters/templateListPresenter.server";
import type { TemplateListItem } from "~/models/templateListPresenter.server";
import { ApiLogoIcon } from "./code/ApiLogoIcon";
import { Panel } from "./layout/Panel";
import { Body } from "./primitives/text/Body";
@@ -25,7 +25,7 @@ export function LoginPromoPanel({ template }: { template?: TemplateListItem }) {
</Header1>
<Panel className="border border-slate-800 bg-slate-800/40 !p-6">
<div className="h-fit w-full overflow-hidden rounded object-cover">
<img src={template.imageUrl} />
<img alt={template.shortTitle} src={template.imageUrl} />
</div>
<div className="mt-3 flex flex-col gap-2 pt-2">
<Header3 size="extra-small" className=" text-slate-300">
@@ -9,7 +9,6 @@ export function getVersion1Integrations(showAdminOnly: boolean) {
return getInternalIntegrations(showAdminOnly);
}
//todo get metadata from the new integrations service and merge it with the old one
export async function getServiceMetadatas(
showAdminOnly: boolean
): Promise<Record<string, ServiceMetadata>> {
@@ -1,9 +1,9 @@
import type { PrismaClient } from "~/db.server";
import { prisma } from "~/db.server";
import { getIntegrationMetadataByService } from "~/models/integrations.server";
import { getRuntimeEnvironment } from "~/models/runtimeEnvironment.server";
import { renderMarkdown } from "~/services/renderMarkdown.server";
import { TemplateListItem } from "./templateListPresenter.server";
import { getServiceMetadatas } from "./integrations.server";
import type { TemplateListItem } from "./templateListPresenter.server";
import { WorkflowsPresenter } from "./workflowsPresenter.server";
export class OrganizationTemplatePresenter {
@@ -59,10 +59,12 @@ export class OrganizationTemplatePresenter {
organizationTemplate.repositoryUrl.split("/").pop() ??
"missing repository name";
const serviceMetadatas = await getServiceMetadatas(true);
const template: TemplateListItem = {
...organizationTemplate.template,
services: organizationTemplate.template.services.map(
getIntegrationMetadataByService
(s) => serviceMetadatas[s]
),
docsHTML: renderMarkdown(organizationTemplate.template.markdownDocs),
};
@@ -1,12 +1,12 @@
import { Template } from ".prisma/client";
import type { IntegrationMetadata } from "@trigger.dev/integration-sdk";
import type { Template } from ".prisma/client";
import type { ServiceMetadata } from "@trigger.dev/integration-sdk";
import type { PrismaClient } from "~/db.server";
import { prisma } from "~/db.server";
import { getIntegrationMetadataByService } from "~/models/integrations.server";
import { renderMarkdown } from "~/services/renderMarkdown.server";
import { getServiceMetadatas } from "./integrations.server";
export type TemplateListItem = Omit<Template, "services"> & {
services: Array<IntegrationMetadata>;
services: Array<ServiceMetadata>;
docsHTML: string;
};
@@ -22,8 +22,10 @@ export class TemplateListPresenter {
orderBy: { priority: "asc" },
});
const serviceMetadatas = await getServiceMetadatas(true);
const templatesWithServiceMetadata = templates.map((template) => {
const services = template.services.map(getIntegrationMetadataByService);
const services = template.services.map((s) => serviceMetadatas[s]);
return {
...template,
@@ -1,8 +1,8 @@
import type { PrismaClient } from "~/db.server";
import { prisma } from "~/db.server";
import { getIntegrationMetadataByService } from "~/models/integrations.server";
import { renderMarkdown } from "~/services/renderMarkdown.server";
import { TemplateListItem } from "./templateListPresenter.server";
import { getServiceMetadatas } from "./integrations.server";
import type { TemplateListItem } from "./templateListPresenter.server";
export class TemplatePresenter {
#prismaClient: PrismaClient;
@@ -34,10 +34,12 @@ export class TemplatePresenter {
return { template: undefined };
}
const serviceMetadatas = await getServiceMetadatas(true);
const templateWithServiceMetadata = {
...template,
docsHTML: renderMarkdown(template.markdownDocs),
services: template.services.map(getIntegrationMetadataByService),
services: template.services.map((s) => serviceMetadatas[s]),
};
return { template: templateWithServiceMetadata };
@@ -1,8 +1,8 @@
import type { PrismaClient } from "~/db.server";
import { prisma } from "~/db.server";
import { getIntegrationMetadataByService } from "~/models/integrations.server";
import { renderMarkdown } from "~/services/renderMarkdown.server";
import { TemplateListItem } from "./templateListPresenter.server";
import { getServiceMetadatas } from "./integrations.server";
import type { TemplateListItem } from "./templateListPresenter.server";
export class WorkflowStartPresenter {
#prismaClient: PrismaClient;
@@ -71,9 +71,11 @@ export class WorkflowStartPresenter {
return;
}
const serviceMetadatas = await getServiceMetadatas(true);
return {
...template,
services: template.services.map(getIntegrationMetadataByService),
services: template.services.map((s) => serviceMetadatas[s]),
docsHTML: renderMarkdown(template.markdownDocs),
};
}
@@ -8,13 +8,10 @@ import type { DisplayProperties } from "@trigger.dev/integration-sdk";
import * as github from "@trigger.dev/github/internal";
import invariant from "tiny-invariant";
import { triggerLabel } from "~/components/triggers/triggerLabel";
import type { PrismaClient } from "~/db.server";
import { prisma, Prisma } from "~/db.server";
import {
getIntegrationMetadata,
getIntegrations,
} from "../models/integrations.server";
import type { PrismaClient, Prisma } from "~/db.server";
import { prisma } from "~/db.server";
import type { ExternalSource, Workflow } from "../models/workflow.server";
import { getServiceMetadatas } from "./integrations.server";
export type WorkflowListItem = Awaited<
ReturnType<WorkflowsPresenter["data"]>
@@ -33,7 +30,7 @@ export class WorkflowsPresenter {
whereInput,
environmentId
);
const integrations = getIntegrations(true);
const serviceMetadatas = await getServiceMetadatas(true);
return workflows.map((workflow) => {
const lastRun =
@@ -57,10 +54,10 @@ export class WorkflowsPresenter {
),
integrations: {
source: workflow.service
? getIntegrationMetadata(integrations, workflow.service)
? serviceMetadatas[workflow.service]
: undefined,
services: workflow.externalServices.map((service) =>
getIntegrationMetadata(integrations, service.service)
services: workflow.externalServices.map(
(service) => serviceMetadatas[service.service]
),
},
lastRun,