Files
dofus-manager/docs/architecture/5-api-specification.md
2026-01-19 08:52:38 +01:00

3.6 KiB

5. API Specification

Server Functions Pattern

TanStack Start utilise des "Server Functions" - des fonctions RPC type-safe qui s'exécutent côté serveur.

// Définition
import { createServerFn } from '@tanstack/react-start/server';
import { z } from 'zod';

const inputSchema = z.object({
  name: z.string().min(1),
});

export const createCharacter = createServerFn({ method: 'POST' })
  .validator((data: unknown) => inputSchema.parse(data))
  .handler(async ({ data }) => {
    // Logique serveur avec accès DB
    return await db.character.create({ data });
  });

// Utilisation côté client
const result = await createCharacter({ data: { name: 'MyChar' } });

API Endpoints (Server Functions)

Characters

Function Method Description
getCharacters GET Liste tous les personnages avec filtres
getCharacter GET Récupère un personnage par ID
createCharacter POST Crée un nouveau personnage
updateCharacter POST Met à jour un personnage
deleteCharacter POST Supprime un personnage
bulkUpdateCharacters POST Met à jour plusieurs personnages
bulkDeleteCharacters POST Supprime plusieurs personnages

Accounts

Function Method Description
getAccounts GET Liste tous les comptes
getAccount GET Récupère un compte par ID
createAccount POST Crée un nouveau compte
updateAccount POST Met à jour un compte
deleteAccount POST Supprime un compte

Teams

Function Method Description
getTeams GET Liste toutes les équipes
getTeam GET Récupère une équipe avec ses membres
createTeam POST Crée une nouvelle équipe
updateTeam POST Met à jour une équipe
deleteTeam POST Supprime une équipe
addTeamMembers POST Ajoute des personnages à une équipe
removeTeamMembers POST Retire des personnages d'une équipe

Progressions

Function Method Description
getProgressions GET Liste toutes les progressions
getCharacterProgressions GET Progressions d'un personnage
updateCharacterProgression POST Met à jour une progression
bulkUpdateProgressions POST Met à jour plusieurs progressions
syncFromDofusDb POST Synchronise depuis DofusDB

Auth

Function Method Description
login POST Authentification
logout POST Déconnexion
getSession GET Récupère la session courante

Validation Schemas

// src/lib/schemas/character.ts
import { z } from 'zod';

export const createCharacterSchema = z.object({
  name: z.string().min(2).max(50),
  level: z.number().int().min(1).max(200),
  classId: z.number().int().positive(),
  serverId: z.number().int().positive(),
  accountId: z.string().uuid(),
});

export const updateCharacterSchema = createCharacterSchema.partial();

export const characterFiltersSchema = z.object({
  search: z.string().optional(),
  classIds: z.array(z.number()).optional(),
  serverIds: z.array(z.number()).optional(),
  accountIds: z.array(z.string()).optional(),
  minLevel: z.number().optional(),
  maxLevel: z.number().optional(),
  page: z.number().int().positive().default(1),
  limit: z.number().int().min(1).max(100).default(20),
  sortBy: z.enum(['name', 'level', 'class', 'server']).default('name'),
  sortOrder: z.enum(['asc', 'desc']).default('asc'),
});