import { z } from "zod";

import { _ApiKeyModel as ApiKey } from "@calcom/prisma/zod";

export const apiKeyCreateBodySchema = ApiKey.pick({
  note: true,
  expiresAt: true,
  userId: true,
})
  .partial({ userId: true })
  .merge(z.object({ neverExpires: z.boolean().optional() }))
  .strict();

export const apiKeyEditBodySchema = ApiKey.pick({
  note: true,
})
  .partial()
  .strict();

export const apiKeyPublicSchema = ApiKey.pick({
  id: true,
  userId: true,
  note: true,
  createdAt: true,
  expiresAt: true,
  lastUsedAt: true,
  /** We might never want to expose these. Leaving this a as reminder. */
  // hashedKey: true,
});
