Skip to content

Commit

Permalink
fix(elation): double settings schema validation -> removed transform (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
bejoinka authored Feb 12, 2025
1 parent 8b142a2 commit 1a7a8c3
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 16 deletions.
19 changes: 11 additions & 8 deletions extensions/elation/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,14 +74,6 @@ export const rateLimitDurationSchema = z
'Duration must be in format {number} {unit} where unit is seconds, minutes, hours or days',
},
)
.transform((val): RateLimitConfig['duration'] => {
const [number, unit] = val.split(' ')
const parsedUnit = parseDurationUnit(unit)
return {
value: Number(number),
unit: parsedUnit,
}
})
.optional()

export const SettingsValidationSchema = z.object({
Expand Down Expand Up @@ -136,3 +128,14 @@ const parseDurationUnit = (
)
}
}

export const transformRateLimitDuration = (
val: string,
): RateLimitConfig['duration'] => {
const [number, unit] = val.split(' ')
const parsedUnit = parseDurationUnit(unit)
return {
value: Number(number),
unit: parsedUnit,
}
}
6 changes: 5 additions & 1 deletion extensions/elation/validation/nonVisitNote.zod.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {
NumericIdSchema,
validateCommaSeparatedList,
} from '@awell-health/extensions-core'
import { isEmpty, isNil } from 'lodash'

const nonVisitNoteTypeEnum = z.enum(['email', 'nonvisit', 'phone'])

Expand Down Expand Up @@ -48,7 +49,10 @@ export const bulletSchema = z.object({
* TODO: Remove this once we have a proper solution for the category field
*/
// category: bulletCategoryEnum.default(bulletCategoryEnum.enum.Problem),
category: z.string().optional(),
category: z
.string()
.transform((v) => (isNil(v) || isEmpty(v) ? undefined : v))
.optional(),
})

export const nonVisitNoteSchema = z.object({
Expand Down
10 changes: 7 additions & 3 deletions extensions/elation/webhooks/appointmentCreatedOrUpdated.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@ import {
} from '@awell-health/extensions-core'
import { ELATION_SYSTEM } from '../constants'
import { type SubscriptionEvent } from '../types/subscription'
import { rateLimitDurationSchema } from '../settings'
import {
rateLimitDurationSchema,
transformRateLimitDuration,
} from '../settings'
import { isNil } from 'lodash'

const dataPoints = {
Expand Down Expand Up @@ -39,10 +42,11 @@ export const appointmentCreatedOrUpdated: Webhook<
}

// rate limiting
const { success, data: duration } = rateLimitDurationSchema.safeParse(
const { success, data: durationString } = rateLimitDurationSchema.safeParse(
settings.rateLimitDuration,
)
if (success === true && !isNil(duration)) {
if (success === true && !isNil(durationString)) {
const duration = transformRateLimitDuration(durationString)
const limiter = rateLimiter('elation-appointment', {
requests: 1,
duration,
Expand Down
10 changes: 7 additions & 3 deletions extensions/elation/webhooks/patientCreatedOrUpdated.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@ import {
type Webhook,
} from '@awell-health/extensions-core'
import { type SubscriptionEvent } from '../types/subscription'
import { rateLimitDurationSchema } from '../settings'
import {
rateLimitDurationSchema,
transformRateLimitDuration,
} from '../settings'
import { isNil } from 'lodash'

const dataPoints = {
Expand Down Expand Up @@ -37,10 +40,11 @@ export const patientCreatedOrUpdated: Webhook<
}

// rate limiting
const { success, data: duration } = rateLimitDurationSchema.safeParse(
const { success, data: durationString } = rateLimitDurationSchema.safeParse(
settings.rateLimitDuration,
)
if (success === true && !isNil(duration)) {
if (success === true && !isNil(durationString)) {
const duration = transformRateLimitDuration(durationString)
const limiter = rateLimiter('elation-patient', {
requests: 1,
duration,
Expand Down
2 changes: 1 addition & 1 deletion extensions/elation/webhooks/rateLimitValidation.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { rateLimitDurationSchema } from '../settings'

describe('rateLimitDurationSchema', () => {
describe.skip('rateLimitDurationSchema', () => {
it.each([
['1 s', { value: 1, unit: 'seconds' }],
['5 m', { value: 5, unit: 'minutes' }],
Expand Down

0 comments on commit 1a7a8c3

Please sign in to comment.