userService.ts•1.72 kB
/**
* Servicio para gestionar usuarios
*/
/**
* Interface para representar un usuario
*/
export interface User {
id: string;
nombre: string;
apellido: string;
dni: string;
createdAt: Date;
}
// Simulación de una base de datos en memoria
const users: User[] = [];
/**
* Crea un nuevo usuario
* @param nombre Nombre del usuario
* @param apellido Apellido del usuario
* @param dni DNI del usuario
* @returns El usuario creado
*/
export async function createUser(nombre: string, apellido: string, dni: string): Promise<User> {
// Validar que todos los campos estén presentes
if (!nombre) throw new Error('El campo nombre es obligatorio');
if (!apellido) throw new Error('El campo apellido es obligatorio');
if (!dni) throw new Error('El campo DNI es obligatorio');
// En un caso real, aquí validaríamos también el formato del DNI
// Crear un nuevo usuario
const newUser: User = {
id: generateId(),
nombre,
apellido,
dni,
createdAt: new Date()
};
// Guardar el usuario (en un caso real, esto sería en una base de datos)
users.push(newUser);
return newUser;
}
/**
* Genera un ID único
* @returns ID único
*/
function generateId(): string {
return Math.random().toString(36).substring(2, 15) +
Math.random().toString(36).substring(2, 15);
}
/**
* Obtiene todos los usuarios
* @returns Lista de usuarios
*/
export async function getUsers(): Promise<User[]> {
return [...users];
}
/**
* Busca un usuario por DNI
* @param dni DNI a buscar
* @returns Usuario encontrado o null si no existe
*/
export async function getUserByDni(dni: string): Promise<User | null> {
return users.find(user => user.dni === dni) || null;
}