Skip to content

Commit ed37be9

Browse files
committed
Add backward compatibility for lootlog config fields
1 parent 0be564a commit ed37be9

5 files changed

Lines changed: 356 additions & 13 deletions

File tree

apps/api/openapi.yaml

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6500,23 +6500,45 @@ components:
65006500
type: array
65016501
items:
65026502
type: string
6503+
collectLootWhitelistGuildIds:
6504+
type: array
6505+
items:
6506+
type: string
6507+
description: "DEPRECATED: Use catchingGuildIds instead"
6508+
addTimersWhitelistGuildIds:
6509+
type: array
6510+
items:
6511+
type: string
6512+
description: "DEPRECATED: Use catchingGuildIds instead"
65036513
required:
65046514
- userId
65056515
- accountId
65066516
- characterId
65076517
- catchingGuildIds
6518+
- collectLootWhitelistGuildIds
6519+
- addTimersWhitelistGuildIds
65086520
CreateOrUpdateLootlogCharacterConfigDto:
65096521
type: object
65106522
properties:
6523+
characterId:
6524+
type: string
6525+
minLength: 1
65116526
catchingGuildIds:
6527+
description: Guild IDs used for catching-related actions
6528+
type: array
6529+
items:
6530+
type: string
6531+
lootGuildIds:
6532+
description: "DEPRECATED: Use catchingGuildIds instead"
6533+
type: array
6534+
items:
6535+
type: string
6536+
timerGuildIds:
6537+
description: "DEPRECATED: Use catchingGuildIds instead"
65126538
type: array
65136539
items:
65146540
type: string
6515-
characterId:
6516-
type: string
6517-
minLength: 1
65186541
required:
6519-
- catchingGuildIds
65206542
- characterId
65216543
UserLootlogConfigResponseDto_Output:
65226544
type: object
@@ -6531,11 +6553,23 @@ components:
65316553
type: array
65326554
items:
65336555
type: string
6556+
collectLootWhitelistGuildIds:
6557+
type: array
6558+
items:
6559+
type: string
6560+
description: "DEPRECATED: Use catchingGuildIds instead"
6561+
addTimersWhitelistGuildIds:
6562+
type: array
6563+
items:
6564+
type: string
6565+
description: "DEPRECATED: Use catchingGuildIds instead"
65346566
required:
65356567
- userId
65366568
- accountId
65376569
- characterId
65386570
- catchingGuildIds
6571+
- collectLootWhitelistGuildIds
6572+
- addTimersWhitelistGuildIds
65396573
TimerSettingsResponseDto__schema0:
65406574
anyOf:
65416575
- type: string

apps/api/src/shared/dto/user-lootlog-config-response.dto.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,33 @@ const UserLootlogConfigResponseSchema = z.object({
66
accountId: z.string(),
77
characterId: z.string(),
88
catchingGuildIds: z.array(z.string()),
9+
collectLootWhitelistGuildIds: z
10+
.array(z.string())
11+
.describe("DEPRECATED: Use catchingGuildIds instead"),
12+
addTimersWhitelistGuildIds: z
13+
.array(z.string())
14+
.describe("DEPRECATED: Use catchingGuildIds instead"),
915
});
1016

17+
export type UserLootlogConfigResponse = z.infer<
18+
typeof UserLootlogConfigResponseSchema
19+
>;
20+
21+
type UserLootlogConfigSource = Pick<
22+
UserLootlogConfigResponse,
23+
"userId" | "accountId" | "characterId" | "catchingGuildIds"
24+
>;
25+
26+
export function toUserLootlogConfigResponse(
27+
config: UserLootlogConfigSource,
28+
): UserLootlogConfigResponse {
29+
return {
30+
...config,
31+
collectLootWhitelistGuildIds: config.catchingGuildIds,
32+
addTimersWhitelistGuildIds: config.catchingGuildIds,
33+
};
34+
}
35+
1136
export class UserLootlogConfigResponseDto extends createZodDto(
1237
UserLootlogConfigResponseSchema,
1338
) {}

apps/api/src/user-lootlog-config/dto/create-user-account-config.dto.ts

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,47 @@
11
import { z } from "zod";
22
import { createZodDto } from "nestjs-zod";
33

4-
const CreateOrUpdateLootlogCharacterConfigSchema = z.object({
5-
catchingGuildIds: z.array(z.string()),
6-
characterId: z.string().min(1),
7-
});
4+
const CreateOrUpdateLootlogCharacterConfigSchema = z
5+
.object({
6+
characterId: z.string().min(1),
7+
catchingGuildIds: z
8+
.array(z.string())
9+
.optional()
10+
.describe("Guild IDs used for catching-related actions"),
11+
lootGuildIds: z
12+
.array(z.string())
13+
.optional()
14+
.describe("DEPRECATED: Use catchingGuildIds instead"),
15+
timerGuildIds: z
16+
.array(z.string())
17+
.optional()
18+
.describe("DEPRECATED: Use catchingGuildIds instead"),
19+
})
20+
.refine(
21+
(data) =>
22+
data.catchingGuildIds !== undefined ||
23+
data.lootGuildIds !== undefined ||
24+
data.timerGuildIds !== undefined,
25+
{
26+
message:
27+
"One of catchingGuildIds, lootGuildIds, or timerGuildIds must be provided",
28+
path: ["catchingGuildIds"],
29+
},
30+
);
31+
32+
export type CreateOrUpdateLootlogCharacterConfigInput = z.infer<
33+
typeof CreateOrUpdateLootlogCharacterConfigSchema
34+
>;
35+
36+
export function resolveCatchingGuildIds(
37+
data: CreateOrUpdateLootlogCharacterConfigInput,
38+
): string[] {
39+
if (data.catchingGuildIds !== undefined) {
40+
return data.catchingGuildIds;
41+
}
42+
43+
return [...(data.lootGuildIds ?? []), ...(data.timerGuildIds ?? [])];
44+
}
845

946
export class CreateOrUpdateLootlogCharacterConfigDto extends createZodDto(
1047
CreateOrUpdateLootlogCharacterConfigSchema,

0 commit comments

Comments
 (0)