module Interro::Validations

Overview

Validate inputs to your queries before saving the values to the database. Since QueryBuilder includes Validations, it allows you to reference Result and Failure by their shorthand names.

struct UserQuery < Interro::QueryBuilder(User)
  def create(*, name : String, email : String, team : Team, role : User::Role)
    Result(User).new
      .validate_presence(name: name, email: email)
      .validate_uniqueness("email") { where(email: email).any? }
      .valid do
        insert(
          name: name,
          email: email,
          team_id: team.id,
          role: role.value,
        )
      end
  end
end

Direct including types

Defined in:

validations.cr