import PocketBase from 'pocketbase';

const PB_URL = process.env.POCKETBASE_URL || 'http://127.0.0.1:8090';
const ADMIN_EMAIL = process.env.PB_ADMIN_EMAIL;
const ADMIN_PASSWORD = process.env.PB_ADMIN_PASSWORD;

async function createReview() {
  if (!ADMIN_EMAIL || !ADMIN_PASSWORD) {
    console.error('❌ Укажите PB_ADMIN_EMAIL и PB_ADMIN_PASSWORD в .env');
    process.exit(1);
  }

  const pb = new PocketBase(PB_URL);

  try {
    await pb.admins.authWithPassword(ADMIN_EMAIL, ADMIN_PASSWORD);
    console.log('✅ Подключено к PocketBase');
  } catch (e) {
    console.error('❌ Ошибка авторизации admin');
    process.exit(1);
  }

  const testEmail = 'vasiliy.sinicin@yandex.ru';
  const testPassword = 'TestPass123!';

  let userId: string;

  try {
    const existingUser = await pb.collection('users').getList(1, 1, {
      filter: `email = "${testEmail}"`,
    });

    if (existingUser.items.length > 0) {
      userId = existingUser.items[0].id;
      console.log('ℹ️  Использован существующий пользователь:', userId);
    } else {
      const user = await pb.collection('users').create({
        email: testEmail,
        password: testPassword,
        passwordConfirm: testPassword,
        name: 'Тестовый Пользователь',
      });
      userId = user.id;
      console.log('✅ Создан пользователь:', userId);
    }
  } catch (e: any) {
    console.error('❌ Ошибка создания пользователя:', e.data || e.message);
    process.exit(1);
  }

  try {
    const review = await pb.collection('reviews').create({
      user: userId,
      name: 'Василий',
      surname: 'Синицин',
      profession: 'Предприниматель',
      text: 'Помогли вернуть права после лишения. Всё сделали быстро и профессионально. Через 2 месяца права уже были у меня. Рекомендую!',
      rating: 5,
      votesCount: 0,
      status: 'published',
    });

    console.log('✅ Отзыв создан');
    console.log('   ID:', review.id);
    console.log('   rating:', review.rating);
    console.log('   status:', review.status);
  } catch (e: any) {
    if (e.data?.message?.includes('already exists')) {
      console.log('ℹ️  Отзыв уже существует');
    } else {
      console.error('❌ Ошибка:', e.data || e.message);
    }
  }
}

createReview();