63 lines
1.9 KiB
TypeScript
63 lines
1.9 KiB
TypeScript
import { createServerFn } from "@tanstack/react-start";
|
|
import { BacklinksService } from "@/server/features/backlinks/services/BacklinksService";
|
|
import { requireProjectContext } from "@/serverFunctions/middleware";
|
|
import {
|
|
backlinksOverviewInputSchema,
|
|
backlinksRowsPageRequestSchema,
|
|
referringDomainsPageRequestSchema,
|
|
topPagesPageRequestSchema,
|
|
} from "@/types/schemas/backlinks";
|
|
|
|
// The web UI exposes spam score as a regular user filter, so the implicit
|
|
// DataForSEO spam-score cutoff stays off for all web requests.
|
|
const WEB_SPAM_OPTIONS = { hideSpam: false };
|
|
|
|
export const getBacklinksOverview = createServerFn({
|
|
method: "POST",
|
|
})
|
|
.middleware(requireProjectContext)
|
|
.inputValidator((data: unknown) => backlinksOverviewInputSchema.parse(data))
|
|
.handler(async ({ data, context }) => {
|
|
const profile = await BacklinksService.profileOverview(
|
|
{
|
|
target: data.target,
|
|
scope: data.scope,
|
|
},
|
|
context,
|
|
);
|
|
return profile.overview;
|
|
});
|
|
|
|
export const getBacklinksRows = createServerFn({
|
|
method: "POST",
|
|
})
|
|
.middleware(requireProjectContext)
|
|
.inputValidator((data: unknown) => backlinksRowsPageRequestSchema.parse(data))
|
|
.handler(({ data, context }) =>
|
|
BacklinksService.profileBacklinksPage(data, context, WEB_SPAM_OPTIONS),
|
|
);
|
|
|
|
export const getBacklinksReferringDomains = createServerFn({
|
|
method: "POST",
|
|
})
|
|
.middleware(requireProjectContext)
|
|
.inputValidator((data: unknown) =>
|
|
referringDomainsPageRequestSchema.parse(data),
|
|
)
|
|
.handler(({ data, context }) =>
|
|
BacklinksService.profileReferringDomainsPage(
|
|
data,
|
|
context,
|
|
WEB_SPAM_OPTIONS,
|
|
),
|
|
);
|
|
|
|
export const getBacklinksTopPages = createServerFn({
|
|
method: "POST",
|
|
})
|
|
.middleware(requireProjectContext)
|
|
.inputValidator((data: unknown) => topPagesPageRequestSchema.parse(data))
|
|
.handler(({ data, context }) =>
|
|
BacklinksService.profileTopPagesPage(data, context),
|
|
);
|