43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
import "server-only";
|
|
|
|
import { executeEconomyCatalogMutation } from "./mutation-runtime-catalog";
|
|
import { executeEconomyDatabaseMutation } from "./mutation-runtime-commerce";
|
|
import { executeEconomyRewardsMutation } from "./mutation-runtime-rewards";
|
|
import type {
|
|
EconomyMutationContext,
|
|
EconomyMutationOperation,
|
|
EconomyMutationSnapshot,
|
|
} from "./mutations";
|
|
import { EconomyMutationFailure } from "./mutations";
|
|
|
|
export async function executeEconomyMutationOperation(
|
|
operation: EconomyMutationOperation,
|
|
input: unknown,
|
|
context: EconomyMutationContext,
|
|
transaction?: unknown,
|
|
): Promise<EconomyMutationSnapshot> {
|
|
const databaseResult = await executeEconomyDatabaseMutation(
|
|
operation,
|
|
input,
|
|
context,
|
|
transaction,
|
|
);
|
|
if (databaseResult) return databaseResult;
|
|
const catalogResult = await executeEconomyCatalogMutation(
|
|
operation,
|
|
input,
|
|
context,
|
|
);
|
|
if (catalogResult) return catalogResult;
|
|
const rewardsResult = await executeEconomyRewardsMutation(
|
|
operation,
|
|
input,
|
|
context,
|
|
);
|
|
if (rewardsResult) return rewardsResult;
|
|
throw new EconomyMutationFailure(
|
|
"VALIDATION",
|
|
"errors.housekeeping.validation",
|
|
);
|
|
}
|