// Interface a UserRepository számára
// JavaScript-ben nincs natív interface, ezért dokumentációként szolgál

class IUserRepository {
  /**
   * Új user létrehozása
   * @param {Object} userData - User adatai (email, name, password, role)
   * @returns {Promise<Object>} Létrehozott user objektum
   */
  async create(userData) {
    throw new Error('create() metódust implementálni kell');
  }

  /**
   * User keresése ID alapján
   * @param {number} id - User ID
   * @returns {Promise<Object|null>} User objektum vagy null
   */
  async findById(id) {
    throw new Error('findById() metódust implementálni kell');
  }

  /**
   * User keresése email alapján
   * @param {string} email - User email címe
   * @returns {Promise<Object|null>} User objektum vagy null
   */
  async findByEmail(email) {
    throw new Error('findByEmail() metódust implementálni kell');
  }

  /**
   * Összes user lekérése
   * @returns {Promise<Array>} User objektumok tömbje
   */
  async findAll() {
    throw new Error('findAll() metódust implementálni kell');
  }

  /**
   * User frissítése
   * @param {number} id - User ID
   * @param {Object} userData - Frissítendő adatok
   * @returns {Promise<Object>} Frissített user objektum
   */
  async update(id, userData) {
    throw new Error('update() metódust implementálni kell');
  }

  /**
   * User törlése
   * @param {number} id - User ID
   * @returns {Promise<Object>} Törölt user objektum
   */
  async delete(id) {
    throw new Error('delete() metódust implementálni kell');
  }
}

module.exports = IUserRepository;
