Skip to content

Commit

Permalink
feat(Simulations): narrow down simulation payload types
Browse files Browse the repository at this point in the history
  • Loading branch information
danbillson committed Oct 9, 2024
1 parent 46d9b2f commit 4f1a408
Show file tree
Hide file tree
Showing 5 changed files with 112 additions and 32 deletions.
Original file line number Diff line number Diff line change
@@ -1,15 +1,8 @@
/**
* ! Autogenerated code !
* Do not make changes to this file.
* Changes may be overwritten as part of auto-generation.
*/
import type { DiscriminatedEventResponse } from '../../../types';

import type { SimulationScenarioType } from '../../../enums';
import type { IEventName } from '../../../notifications';

export interface CreateSimulationRequestBody {
interface BaseCreateSimulationRequestBody {
notificationSettingId: string;
type: IEventName | SimulationScenarioType;
name: string;
payload?: any;
}

export type CreateSimulationRequestBody = DiscriminatedEventResponse<BaseCreateSimulationRequestBody>;
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
/**
* ! Autogenerated code !
* Do not make changes to this file.
* Changes may be overwritten as part of auto-generation.
*/
import type { Status } from '../../../enums';
import type { DiscriminatedEventResponse } from '../../../types';

import type { SimulationScenarioType, Status } from '../../../enums';
import type { IEventName } from '../../../notifications';

export interface UpdateSimulationRequestBody {
interface BaseUpdateSimulationRequestBody {
notificationSettingId?: string;
name?: string;
status?: Status;
type?: IEventName | SimulationScenarioType;
payload?: any;
}

type RawUpdateSimulationRequestBody = DiscriminatedEventResponse<BaseUpdateSimulationRequestBody>;

// Map all properties to be optional
export type UpdateSimulationRequestBody = {
[Key in keyof RawUpdateSimulationRequestBody]?: RawUpdateSimulationRequestBody[Key];
};
1 change: 1 addition & 0 deletions src/types/shared/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,4 @@ export * from './custom-data';
export * from './import-meta-response';
export * from './simulation-event-request';
export * from './simulation-event-response';
export * from './simulation-payload';
93 changes: 93 additions & 0 deletions src/types/shared/simulation-payload.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
import {
type AddressCreatedEvent,
type AddressImportedEvent,
type AddressUpdatedEvent,
type AdjustmentCreatedEvent,
type AdjustmentUpdatedEvent,
type BusinessCreatedEvent,
type BusinessImportedEvent,
type BusinessUpdatedEvent,
type CustomerCreatedEvent,
type CustomerImportedEvent,
type CustomerUpdatedEvent,
type DiscountCreatedEvent,
type DiscountImportedEvent,
type DiscountUpdatedEvent,
type PayoutCreatedEvent,
type PayoutPaidEvent,
type PriceCreatedEvent,
type PriceImportedEvent,
type PriceUpdatedEvent,
type ProductCreatedEvent,
type ProductImportedEvent,
type ProductUpdatedEvent,
type ReportCreatedEvent,
type ReportUpdatedEvent,
type SubscriptionActivatedEvent,
type SubscriptionCanceledEvent,
type SubscriptionCreatedEvent,
type SubscriptionImportedEvent,
type SubscriptionPastDueEvent,
type SubscriptionPausedEvent,
type SubscriptionResumedEvent,
type SubscriptionTrialingEvent,
type SubscriptionUpdatedEvent,
type TransactionBilledEvent,
type TransactionCanceledEvent,
type TransactionCompletedEvent,
type TransactionCreatedEvent,
type TransactionPaidEvent,
type TransactionPastDueEvent,
type TransactionPaymentFailedEvent,
type TransactionReadyEvent,
type TransactionUpdatedEvent,
} from '../../notifications/events';

export interface EventPayloadMap {
'address.created': AddressCreatedEvent;
'address.updated': AddressUpdatedEvent;
'address.imported': AddressImportedEvent;
'adjustment.created': AdjustmentCreatedEvent;
'adjustment.updated': AdjustmentUpdatedEvent;
'business.created': BusinessCreatedEvent;
'business.updated': BusinessUpdatedEvent;
'business.imported': BusinessImportedEvent;
'customer.created': CustomerCreatedEvent;
'customer.updated': CustomerUpdatedEvent;
'customer.imported': CustomerImportedEvent;
'discount.created': DiscountCreatedEvent;
'discount.updated': DiscountUpdatedEvent;
'discount.imported': DiscountImportedEvent;
'payout.created': PayoutCreatedEvent;
'payout.paid': PayoutPaidEvent;
'price.created': PriceCreatedEvent;
'price.updated': PriceUpdatedEvent;
'price.imported': PriceImportedEvent;
'product.created': ProductCreatedEvent;
'product.updated': ProductUpdatedEvent;
'product.imported': ProductImportedEvent;
'subscription.created': SubscriptionCreatedEvent;
'subscription.past_due': SubscriptionPastDueEvent;
'subscription.activated': SubscriptionActivatedEvent;
'subscription.canceled': SubscriptionCanceledEvent;
'subscription.imported': SubscriptionImportedEvent;
'subscription.paused': SubscriptionPausedEvent;
'subscription.resumed': SubscriptionResumedEvent;
'subscription.trialing': SubscriptionTrialingEvent;
'subscription.updated': SubscriptionUpdatedEvent;
'transaction.billed': TransactionBilledEvent;
'transaction.canceled': TransactionCanceledEvent;
'transaction.completed': TransactionCompletedEvent;
'transaction.created': TransactionCreatedEvent;
'transaction.paid': TransactionPaidEvent;
'transaction.past_due': TransactionPastDueEvent;
'transaction.payment_failed': TransactionPaymentFailedEvent;
'transaction.ready': TransactionReadyEvent;
'transaction.updated': TransactionUpdatedEvent;
'report.created': ReportCreatedEvent;
'report.updated': ReportUpdatedEvent;
}

export type DiscriminatedEventResponse<Base> = {
[K in keyof EventPayloadMap]: Base & { type: K; payload?: Partial<EventPayloadMap[K]['data']> | null };
}[keyof EventPayloadMap];
14 changes: 4 additions & 10 deletions src/types/simulation/simulation-response.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,13 @@
/**
* ! Autogenerated code !
* Do not make changes to this file.
* Changes may be overwritten as part of auto-generation.
*/
import type { Status } from '../../enums';
import type { DiscriminatedEventResponse } from '../shared/simulation-payload';

import type { SimulationScenarioType, Status } from '../../enums';
import type { IEventName } from '../../notifications';
export type ISimulationResponse = DiscriminatedEventResponse<BaseSimulationResponse>;

export interface ISimulationResponse {
interface BaseSimulationResponse {
id: string;
status: Status;
notification_setting_id: string;
name: string;
type: IEventName | SimulationScenarioType;
payload?: any;
last_run_at?: string | null;
created_at: string;
updated_at: string;
Expand Down

0 comments on commit 4f1a408

Please sign in to comment.