Phase1: Schema + skill event tracking
All checks were successful
Build and Push / build (push) Successful in 1m35s
All checks were successful
Build and Push / build (push) Successful in 1m35s
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { NextResponse } from "next/server";
|
||||
import { requirePlatformRole } from "@/lib/session";
|
||||
import { getTenant, patchTenantSpec } from "@/lib/k8s";
|
||||
import { recordSuspensionEvent } from "@/lib/db";
|
||||
import { safeError } from "@/lib/errors";
|
||||
|
||||
/**
|
||||
@@ -29,6 +30,32 @@ export async function POST(
|
||||
|
||||
try {
|
||||
const updated = await patchTenantSpec(name, { suspend });
|
||||
|
||||
// Billing — Phase 1: record the transition. Mirrors the same
|
||||
// hook in the customer-side suspend route so admin actions
|
||||
// also produce events. Best-effort; logging failures don't
|
||||
// block the response.
|
||||
try {
|
||||
const orgId =
|
||||
tenant.metadata.labels?.["pieced.ch/zitadel-org-id"] ?? null;
|
||||
if (orgId) {
|
||||
await recordSuspensionEvent(
|
||||
name,
|
||||
orgId,
|
||||
suspend ? "suspended" : "resumed"
|
||||
);
|
||||
} else {
|
||||
console.warn(
|
||||
`billing: tenant ${name} has no zitadel-org-id label; suspension event not recorded`
|
||||
);
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(
|
||||
`billing: failed to record suspension event for ${name}:`,
|
||||
e
|
||||
);
|
||||
}
|
||||
|
||||
return NextResponse.json({
|
||||
message: suspend ? "Tenant suspended." : "Tenant resumed.",
|
||||
tenant: updated,
|
||||
|
||||
Reference in New Issue
Block a user