import { Pool } from 'pg'
import bcrypt from 'bcryptjs'

const pool = new Pool({
  user: 'musicuser',
  host: 'localhost',
  database: 'musicdb',
  password: 'Tjqjqhdks$321',
  port: 5432,
})

export default defineEventHandler(async (event) => {
  try {
    const body = await readBody(event)
    const { user_id, password, name, role_level } = body

    if (!user_id || !password || !name || !role_level) {
      throw createError({
        statusCode: 400,
        statusMessage: '모든 필드를 입력해주세요.'
      })
    }

    // 권한 등급 검증 (1~3)
    if (role_level < 1 || role_level > 3) {
      throw createError({
        statusCode: 400,
        statusMessage: '권한 등급은 1~3 사이여야 합니다.'
      })
    }

    // 아이디 중복 확인
    const existingUser = await pool.query(
      'SELECT user_id FROM members WHERE user_id = $1',
      [user_id]
    )

    if (existingUser.rows.length > 0) {
      throw createError({
        statusCode: 409,
        statusMessage: '이미 존재하는 아이디입니다.'
      })
    }

    // 비밀번호 해시화 (현재는 평문 저장, 추후 bcrypt로 변경)
    // const hashedPassword = await bcrypt.hash(password, 10)

    // 사용자 등록
    const result = await pool.query(
      'INSERT INTO members (user_id, password, name, role_level) VALUES ($1, $2, $3, $4) RETURNING *',
      [user_id, password, name, role_level]
    )

    const newUser = result.rows[0]

    return {
      success: true,
      message: '회원가입이 완료되었습니다.',
      user: {
        id: newUser.id,
        user_id: newUser.user_id,
        name: newUser.name,
        role_level: newUser.role_level
      }
    }

  } catch (error) {
    console.error('Register error:', error)
    throw error
  }
})
