import { env } from "cloudflare:workers";
import { invalidateUnread } from "../user-inbox";
import { z } from "zod";
import { placeholders } from "../db";
import { accountDb } from "../scoped-db";
import { filterReadable } from "../notification-store";
import { lfsUsage } from "../lfs/quota";
import { limitWrite, limitAccountWrite } from "../limits";
import { loadNotificationSettings } from "../notification-prefs";
import {
createWebhookIntegration,
deleteIntegrationById,
listIntegrationsFor,
redeliverDelivery,
sendTestEvent,
} from "../integrations/manage";
import type { ScopeRef } from "../integrations/scope";
import { noContent, readJson, requireAccountScope, requireScopedAdminWrite, requireScopedRepo } from "./http";
import type { ApiContext } from "./http";
import { INTEGRATION_EVENTS } from "~/lib/integrations";
const MAX_IDS = 100;
export async function getLfsQuota(ctx: ApiContext): Promise<Response> {
requireAccountScope(ctx);
const usage = await lfsUsage(ctx.viewer.id);
return Response.json({
storage_bytes: usage.storageBytes,
storage_limit: usage.storageLimit,
bandwidth_bytes: usage.bandwidthBytes,
bandwidth_limit: usage.bandwidthLimit,
period: usage.period,
});
}
function settingsJson(settings: Awaited<ReturnType<typeof loadNotificationSettings>>) {
return {
email_participating: settings.emailParticipating,
email_watching: settings.emailWatching,
web_participating: settings.webParticipating,