2025-10-08 13:46:23 +09:00
|
|
|
/**
|
|
|
|
|
* Common Salesforce Provider Types
|
2025-12-25 17:30:02 +09:00
|
|
|
*
|
2025-10-08 13:46:23 +09:00
|
|
|
* Generic Salesforce API response structures used across multiple domains.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
import { z } from "zod";
|
|
|
|
|
|
|
|
|
|
// ============================================================================
|
|
|
|
|
// Salesforce Query Response (Generic SOQL Response)
|
|
|
|
|
// ============================================================================
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Base schema for Salesforce SOQL query result
|
|
|
|
|
*/
|
2026-02-24 19:05:30 +09:00
|
|
|
// Base schema uses z.unknown() for records because it is always overridden by
|
|
|
|
|
// salesforceResponseSchema() which extends records with the caller's typed schema.
|
2025-10-08 13:46:23 +09:00
|
|
|
const salesforceResponseBaseSchema = z.object({
|
|
|
|
|
totalSize: z.number(),
|
|
|
|
|
done: z.boolean(),
|
|
|
|
|
records: z.array(z.unknown()),
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
type SalesforceResponseBase = z.infer<typeof salesforceResponseBaseSchema>;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Generic type for Salesforce query results derived from schema
|
|
|
|
|
* All SOQL queries return this structure regardless of SObject type
|
2025-12-25 17:30:02 +09:00
|
|
|
*
|
2025-10-08 13:46:23 +09:00
|
|
|
* Usage: SalesforceResponse<SalesforceOrderRecord>
|
|
|
|
|
*/
|
2025-12-25 17:30:02 +09:00
|
|
|
export type SalesforceResponse<TRecord> = Omit<SalesforceResponseBase, "records"> & {
|
2025-10-08 13:46:23 +09:00
|
|
|
records: TRecord[];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Schema factory for validating Salesforce query responses
|
|
|
|
|
* Usage: salesforceResponseSchema(salesforceOrderRecordSchema)
|
|
|
|
|
*/
|
|
|
|
|
export const salesforceResponseSchema = <TRecord extends z.ZodTypeAny>(recordSchema: TRecord) =>
|
|
|
|
|
salesforceResponseBaseSchema.extend({
|
|
|
|
|
records: z.array(recordSchema),
|
|
|
|
|
});
|