Files
peakskills/clients/domains/admin-client.ts
2025-08-25 09:04:33 +02:00

105 lines
2.4 KiB
TypeScript

import { BaseHttpClient } from "../base/http-client";
export interface Skill {
id: string;
name: string;
description: string;
icon: string;
categoryId: string;
category: string;
usageCount: number;
}
export interface Team {
id: string;
name: string;
direction: string;
memberCount: number;
}
export interface TeamMember {
id: string;
firstName: string;
lastName: string;
fullName: string;
joinedAt: string;
}
export interface UserFormData {
firstName: string;
lastName: string;
teamId: string;
}
export interface User {
uuid: string;
firstName: string;
lastName: string;
teamName?: string;
hasEvaluations: boolean;
}
export class AdminClient extends BaseHttpClient {
// Skills Management
async createSkill(
skillData: Omit<Skill, "id" | "usageCount">
): Promise<Skill> {
return await this.post<Skill>(`/admin/skills`, skillData);
}
async updateSkill(skillData: Skill): Promise<Skill> {
return await this.put<Skill>(`/admin/skills`, skillData);
}
async deleteSkill(skillId: string): Promise<void> {
await this.delete(`/admin/skills?id=${skillId}`);
}
// Teams Management
async getTeams(): Promise<Team[]> {
return await this.get<Team[]>(`/admin/teams`);
}
async createTeam(teamData: Omit<Team, "id" | "memberCount">): Promise<Team> {
return await this.post<Team>(`/admin/teams`, teamData);
}
async updateTeam(teamData: Team): Promise<Team> {
return await this.put<Team>(`/admin/teams`, teamData);
}
async deleteTeam(teamId: string): Promise<void> {
await this.delete(`/admin/teams?id=${teamId}`);
}
async deleteDirection(direction: string): Promise<void> {
await this.delete(
`/admin/teams?direction=${encodeURIComponent(direction)}`
);
}
// Team Members
async getTeamMembers(teamId: string): Promise<TeamMember[]> {
return await this.get<TeamMember[]>(`/admin/teams/${teamId}/members`);
}
async removeTeamMember(teamId: string, memberId: string): Promise<void> {
await this.delete(`/admin/teams/${teamId}/members`, {
memberId,
});
}
// User Management
async getUsers(): Promise<User[]> {
return await this.get<User[]>(`/admin/users`);
}
async createUser(userData: UserFormData): Promise<User> {
return await this.post<User>(`/admin/users`, userData);
}
async deleteUser(userId: string): Promise<void> {
await this.delete(`/admin/users/${userId}`);
}
}