fix: preserve capture overrides on partial updates
This commit is contained in:
@@ -11,7 +11,7 @@ const paramsSchema = z.object({
|
||||
const bodySchema = z
|
||||
.object({
|
||||
captureTsUtcOverride: z.string().datetime().nullable().optional(),
|
||||
captureOffsetMinutesOverride: z.coerce.number().int().nullable().optional(),
|
||||
captureOffsetMinutesOverride: z.number().int().nullable().optional(),
|
||||
})
|
||||
.strict();
|
||||
|
||||
@@ -48,15 +48,23 @@ export async function handleSetCaptureOverride(input: {
|
||||
};
|
||||
}
|
||||
|
||||
const db = (input.db ?? getDb()) as DbLike;
|
||||
const data = bodyParsed.data;
|
||||
const captureTs = data.captureTsUtcOverride
|
||||
? new Date(data.captureTsUtcOverride)
|
||||
const hasCaptureTs = "captureTsUtcOverride" in data;
|
||||
const hasCaptureOffset = "captureOffsetMinutesOverride" in data;
|
||||
if (!hasCaptureTs && !hasCaptureOffset) {
|
||||
return { status: 400, body: { error: "invalid_body" } };
|
||||
}
|
||||
|
||||
const db = (input.db ?? getDb()) as DbLike;
|
||||
|
||||
const captureTs = hasCaptureTs
|
||||
? data.captureTsUtcOverride
|
||||
? new Date(data.captureTsUtcOverride)
|
||||
: null
|
||||
: null;
|
||||
const captureOffset = hasCaptureOffset
|
||||
? data.captureOffsetMinutesOverride ?? null
|
||||
: null;
|
||||
const captureOffset =
|
||||
data.captureOffsetMinutesOverride !== undefined
|
||||
? data.captureOffsetMinutesOverride
|
||||
: null;
|
||||
|
||||
const rows = await db<
|
||||
{
|
||||
@@ -71,11 +79,21 @@ export async function handleSetCaptureOverride(input: {
|
||||
capture_ts_utc_override,
|
||||
capture_offset_minutes_override
|
||||
)
|
||||
values (${paramsParsed.data.id}, ${captureTs}, ${captureOffset})
|
||||
values (
|
||||
${paramsParsed.data.id},
|
||||
${captureTs},
|
||||
${captureOffset}
|
||||
)
|
||||
on conflict (asset_id)
|
||||
do update set
|
||||
capture_ts_utc_override = excluded.capture_ts_utc_override,
|
||||
capture_offset_minutes_override = excluded.capture_offset_minutes_override
|
||||
capture_ts_utc_override = case
|
||||
when ${hasCaptureTs} then excluded.capture_ts_utc_override
|
||||
else asset_overrides.capture_ts_utc_override
|
||||
end,
|
||||
capture_offset_minutes_override = case
|
||||
when ${hasCaptureOffset} then excluded.capture_offset_minutes_override
|
||||
else asset_overrides.capture_offset_minutes_override
|
||||
end
|
||||
returning asset_id, capture_ts_utc_override, capture_offset_minutes_override, created_at
|
||||
`;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user