import vine from '@vinejs/vine'

const email = () => vine.string().email().maxLength(254)
const password = () => vine.string().minLength(8).maxLength(72)

export const signupValidator = vine.compile(
  vine.object({
    email: email().unique({ table: 'users', column: 'email' }),
    username: vine
      .string()
      .maxLength(16)
      .alphaNumeric()
      .unique({ table: 'users', column: 'username' }),
    password: password(),
    passwordConfirmation: vine.string().sameAs('password'),
    dateOfBirth: vine.date({ formats: ['YYYY-MM-DD'] }),
    sex: vine.enum(['male', 'female', 'other']),
    locale: vine.string().fixedLength(2).alpha(),
    agreedToTos: vine.accepted(),
  })
)

export const loginValidator = vine.compile(
  vine.object({
    email: email(),
    password: vine.string().maxLength(128),
  })
)
