Refactor stores and types for improved data handling and schema definitions
All checks were successful
SteamWarCI Build successful
All checks were successful
SteamWarCI Build successful
- Consolidated player fetching logic in stores.ts to utilize dataRepo. - Introduced teams fetching logic in stores.ts. - Updated permissions structure in stores.ts for better clarity. - Enhanced data schemas in data.ts with new ResponseUser and ResponseTeam schemas. - Expanded event-related schemas in event.ts to include groups, relations, and event creation/update structures. - Improved code formatting for consistency and readability across files.
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import {z} from "zod";
|
||||
import { z } from "zod";
|
||||
|
||||
export const SchematicTypeSchema = z.object({
|
||||
name: z.string(),
|
||||
@@ -57,3 +57,12 @@ export const ResponseErrorSchema = z.object({
|
||||
});
|
||||
|
||||
export type ResponseError = z.infer<typeof ResponseErrorSchema>;
|
||||
|
||||
export const ResponseUserSchema = z.object({
|
||||
name: z.string(),
|
||||
uuid: z.string(),
|
||||
prefix: z.string(),
|
||||
perms: z.array(z.string()),
|
||||
});
|
||||
|
||||
export type ResponseUser = z.infer<typeof ResponseUserSchema>;
|
||||
|
||||
@@ -17,9 +17,46 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import {z} from "zod";
|
||||
import {TeamSchema} from "./team.js";
|
||||
import {PlayerSchema} from "./data.js";
|
||||
import { z } from "zod";
|
||||
import { TeamSchema } from "./team.js";
|
||||
import { PlayerSchema, ResponseUserSchema } from "./data.js";
|
||||
|
||||
export const ResponseGroupsSchema = z.object({
|
||||
id: z.number(),
|
||||
name: z.string(),
|
||||
pointsPerWin: z.number(),
|
||||
pointsPerLoss: z.number(),
|
||||
pointsPerDraw: z.number(),
|
||||
type: z.enum(["GROUP_STAGE", "ELIMINATION_STAGE"]),
|
||||
points: z.record(z.string(), z.number()).nullable(),
|
||||
});
|
||||
|
||||
export const EventFightSchema = z.object({
|
||||
id: z.number(),
|
||||
spielmodus: z.string(),
|
||||
map: z.string(),
|
||||
blueTeam: TeamSchema,
|
||||
redTeam: TeamSchema,
|
||||
start: z.number(),
|
||||
ergebnis: z.number(),
|
||||
spectatePort: z.number().nullable(),
|
||||
group: ResponseGroupsSchema.nullable(),
|
||||
});
|
||||
|
||||
export type EventFight = z.infer<typeof EventFightSchema>;
|
||||
|
||||
export type ResponseGroups = z.infer<typeof ResponseGroupsSchema>;
|
||||
|
||||
export const ResponseRelationSchema = z.object({
|
||||
id: z.number(),
|
||||
fight: EventFightSchema,
|
||||
type: z.enum(["FIGHT", "GROUP"]),
|
||||
fromFight: EventFightSchema.nullable(),
|
||||
fromGroup: ResponseGroupsSchema.nullable(),
|
||||
fromPlace: z.number(),
|
||||
});
|
||||
|
||||
export type ResponseRelation = z.infer<typeof ResponseRelationSchema>;
|
||||
|
||||
export const ShortEventSchema = z.object({
|
||||
id: z.number(),
|
||||
@@ -35,29 +72,63 @@ export const SWEventSchema = ShortEventSchema.extend({
|
||||
maxTeamMembers: z.number(),
|
||||
schemType: z.string().nullable(),
|
||||
publicSchemsOnly: z.boolean(),
|
||||
referees: z.array(PlayerSchema),
|
||||
});
|
||||
|
||||
export type SWEvent = z.infer<typeof SWEventSchema>;
|
||||
|
||||
export const EventFightSchema = z.object({
|
||||
id: z.number(),
|
||||
spielmodus: z.string(),
|
||||
map: z.string(),
|
||||
blueTeam: TeamSchema,
|
||||
redTeam: TeamSchema,
|
||||
start: z.number(),
|
||||
ergebnis: z.number(),
|
||||
spectatePort: z.number().nullable(),
|
||||
group: z.string().nullable(),
|
||||
});
|
||||
|
||||
export type EventFight = z.infer<typeof EventFightSchema>;
|
||||
|
||||
export const ExtendedEventSchema = z.object({
|
||||
event: SWEventSchema,
|
||||
teams: z.array(TeamSchema),
|
||||
groups: z.array(ResponseGroupsSchema),
|
||||
fights: z.array(EventFightSchema),
|
||||
referees: z.array(ResponseUserSchema),
|
||||
relations: z.array(ResponseRelationSchema),
|
||||
});
|
||||
|
||||
export type ExtendedEvent = z.infer<typeof ExtendedEventSchema>;
|
||||
|
||||
export const ResponseTeamSchema = z.object({
|
||||
id: z.number(),
|
||||
name: z.string(),
|
||||
kuerzel: z.string(),
|
||||
color: z.string(),
|
||||
});
|
||||
|
||||
export type ResponseTeam = z.infer<typeof ResponseTeamSchema>;
|
||||
|
||||
export const CreateEventGroupSchema = z.object({
|
||||
name: z.string(),
|
||||
type: z.enum(["GROUP_STAGE", "ELIMINATION_STAGE"]),
|
||||
});
|
||||
export type CreateEventGroup = z.infer<typeof CreateEventGroupSchema>;
|
||||
|
||||
export const UpdateEventGroupSchema = z.object({
|
||||
name: z.string().nullable().optional(),
|
||||
type: z.enum(["GROUP_STAGE", "ELIMINATION_STAGE"]).nullable().optional(),
|
||||
pointsPerWin: z.number().nullable().optional(),
|
||||
pointsPerLoss: z.number().nullable().optional(),
|
||||
pointsPerDraw: z.number().nullable().optional(),
|
||||
});
|
||||
export type UpdateEventGroup = z.infer<typeof UpdateEventGroupSchema>;
|
||||
|
||||
export const CreateEventRelationSchema = z.object({
|
||||
fightId: z.number(),
|
||||
team: z.enum(["RED", "BLUE"]),
|
||||
fromType: z.enum(["FIGHT", "GROUP"]),
|
||||
fromId: z.number(),
|
||||
fromPlace: z.number(),
|
||||
});
|
||||
export type CreateEventRelation = z.infer<typeof CreateEventRelationSchema>;
|
||||
|
||||
export const UpdateFromRelationSchema = z.object({
|
||||
fromType: z.enum(["FIGHT", "GROUP"]),
|
||||
fromId: z.number(),
|
||||
fromPlace: z.number(),
|
||||
});
|
||||
export type UpdateFromRelation = z.infer<typeof UpdateFromRelationSchema>;
|
||||
|
||||
export const UpdateEventRelationSchema = z.object({
|
||||
team: z.enum(["RED", "BLUE"]).nullable().optional(),
|
||||
from: UpdateFromRelationSchema.nullable().optional(),
|
||||
});
|
||||
export type UpdateEventRelation = z.infer<typeof UpdateEventRelationSchema>;
|
||||
|
||||
Reference in New Issue
Block a user