feat(housekeeping): cut over administration to ase

This commit is contained in:
Simo committed 2026-08-30 20:35:22 +02:00
1 parent c9e35cf602
commit 2b8f73a91d
457 files changed
+589 -55936

No files matched your search

-128
View File
@@ -1,128 +0,0 @@
"use server";
import {
type EconomyMutationOperation,
executeLegacyEconomyMutation,
} from "@/features/housekeeping/domains/economy/services/mutations";
import { requirePermission } from "@/lib/admin/guard";
import { PERMS } from "@/lib/permissions";
import {
type ActionResult,
actionOk,
handleActionError,
} from "@/lib/safe-action-shared";
import type {
AlignResult,
DedupResult,
FixOfferResult,
FixSpriteResult,
FurniHealth,
ReconcileResult,
} from "@/lib/services/furni-maintenance";
import * as maintenance from "@/lib/services/furni-maintenance";
async function guard() {
return requirePermission(PERMS.CATALOG_EDIT);
}
async function mutate<T>(
operation: EconomyMutationOperation,
input: Record<string, unknown> = {},
): Promise<T> {
const staff = await guard();
const snapshot = await executeLegacyEconomyMutation(staff, operation, input);
return snapshot.output as T;
}
export async function getFurniHealthAction(): Promise<
ActionResult<{ health: FurniHealth }>
> {
try {
await guard();
const health = await maintenance.getFurniHealth();
return actionOk({ health });
} catch (e) {
return handleActionError(e);
}
}
export async function fixSpriteIdsAction(): Promise<
ActionResult<FixSpriteResult>
> {
try {
return actionOk(
await mutate<FixSpriteResult>("maintenance.fix-sprite-ids"),
);
} catch (e) {
return handleActionError(e);
}
}
export async function fixCatalogOffersAction(): Promise<
ActionResult<FixOfferResult>
> {
try {
return actionOk(await mutate<FixOfferResult>("maintenance.fix-offers"));
} catch (e) {
return handleActionError(e);
}
}
export async function reconcileIdsAction(): Promise<
ActionResult<ReconcileResult>
> {
try {
return actionOk(await mutate<ReconcileResult>("maintenance.reconcile-ids"));
} catch (e) {
return handleActionError(e);
}
}
export async function removeDuplicateItemsBaseAction(): Promise<
ActionResult<DedupResult>
> {
try {
return actionOk(await mutate<DedupResult>("maintenance.remove-duplicates"));
} catch (e) {
return handleActionError(e);
}
}
export async function previewAlignIdsAction(): Promise<
ActionResult<AlignResult>
> {
try {
return actionOk(
await mutate<AlignResult>("maintenance.align-ids", { apply: false }),
);
} catch (e) {
return handleActionError(e);
}
}
export async function applyAlignIdsAction(): Promise<
ActionResult<AlignResult>
> {
try {
return actionOk(
await mutate<AlignResult>("maintenance.align-ids", { apply: true }),
);
} catch (e) {
return handleActionError(e);
}
}
export async function fixEverythingAction(input?: {
dedupePages?: boolean;
}): Promise<ActionResult<maintenance.FixAllResult>> {
try {
return actionOk(
await mutate<maintenance.FixAllResult>(
"maintenance.fix-everything",
input ?? {},
),
);
} catch (e) {
return handleActionError(e);
}
}