/**
 * Generated by API Builder - https://www.apibuilder.io
 * Service version: 0.0.1
 * User agent: apibuilder app.apibuilder.io/apicollective/examples-graphql-users/0.0.1/anorm_2_8_parsers
 */
import anorm._

package io.apibuilder.examples.graphql.users.anorm.parsers {

  import io.apibuilder.examples.graphql.users.anorm.conversions.Standard._

  import io.apibuilder.examples.graphql.users.anorm.conversions.Types._

  object UserStatus {

    def parserWithPrefix(prefix: String, sep: String = "_"): RowParser[io.apibuilder.examples.graphql.users.models.UserStatus] = parser(prefixOpt = Some(s"$prefix$sep"))

    def parser(name: String = "user_status", prefixOpt: Option[String] = None): RowParser[io.apibuilder.examples.graphql.users.models.UserStatus] = {
      SqlParser.str(prefixOpt.getOrElse("") + name) map {
        case value => io.apibuilder.examples.graphql.users.models.UserStatus(value)
      }
    }

  }

  object User {

    def parserWithPrefix(prefix: String, sep: String = "_"): RowParser[io.apibuilder.examples.graphql.users.models.User] = parser(prefixOpt = Some(s"$prefix$sep"))

    def parser(
      id: String = "id",
      status: String = "status",
      email: String = "email",
      name: String = "name",
      prefixOpt: Option[String] = None
    ): RowParser[io.apibuilder.examples.graphql.users.models.User] = {
      SqlParser.get[_root_.java.util.UUID](prefixOpt.getOrElse("") + id) ~
      io.apibuilder.examples.graphql.users.anorm.parsers.UserStatus.parser(prefixOpt.getOrElse("") + status) ~
      SqlParser.str(prefixOpt.getOrElse("") + email) ~
      SqlParser.str(prefixOpt.getOrElse("") + name).? map {
        case id ~ status ~ email ~ name => {
          io.apibuilder.examples.graphql.users.models.User(
            id = id,
            status = status,
            email = email,
            name = name
          )
        }
      }
    }

  }

  object UserEmailPatchForm {

    def parserWithPrefix(prefix: String, sep: String = "_"): RowParser[io.apibuilder.examples.graphql.users.models.UserEmailPatchForm] = parser(prefixOpt = Some(s"$prefix$sep"))

    def parser(
      email: String = "email",
      prefixOpt: Option[String] = None
    ): RowParser[io.apibuilder.examples.graphql.users.models.UserEmailPatchForm] = {
      SqlParser.str(prefixOpt.getOrElse("") + email) map {
        case email => {
          io.apibuilder.examples.graphql.users.models.UserEmailPatchForm(
            email = email
          )
        }
      }
    }

  }

  object UserForm {

    def parserWithPrefix(prefix: String, sep: String = "_"): RowParser[io.apibuilder.examples.graphql.users.models.UserForm] = parser(prefixOpt = Some(s"$prefix$sep"))

    def parser(
      status: String = "status",
      email: String = "email",
      name: String = "name",
      prefixOpt: Option[String] = None
    ): RowParser[io.apibuilder.examples.graphql.users.models.UserForm] = {
      io.apibuilder.examples.graphql.users.anorm.parsers.UserStatus.parser(prefixOpt.getOrElse("") + status) ~
      SqlParser.str(prefixOpt.getOrElse("") + email) ~
      SqlParser.str(prefixOpt.getOrElse("") + name).? map {
        case status ~ email ~ name => {
          io.apibuilder.examples.graphql.users.models.UserForm(
            status = status,
            email = email,
            name = name
          )
        }
      }
    }

  }

  object UserStatusPatchForm {

    def parserWithPrefix(prefix: String, sep: String = "_"): RowParser[io.apibuilder.examples.graphql.users.models.UserStatusPatchForm] = parser(prefixOpt = Some(s"$prefix$sep"))

    def parser(
      status: String = "status",
      prefixOpt: Option[String] = None
    ): RowParser[io.apibuilder.examples.graphql.users.models.UserStatusPatchForm] = {
      io.apibuilder.examples.graphql.users.anorm.parsers.UserStatus.parser(prefixOpt.getOrElse("") + status) map {
        case status => {
          io.apibuilder.examples.graphql.users.models.UserStatusPatchForm(
            status = status
          )
        }
      }
    }

  }

  object UserPatchForm {

    def parserWithPrefix(prefix: String, sep: String = "_") = {
      io.apibuilder.examples.graphql.users.anorm.parsers.UserStatusPatchForm.parser(prefixOpt = Some(s"$prefix$sep")) |
      io.apibuilder.examples.graphql.users.anorm.parsers.UserEmailPatchForm.parser(prefixOpt = Some(s"$prefix$sep"))
    }

    def parser() = {
      io.apibuilder.examples.graphql.users.anorm.parsers.UserStatusPatchForm.parser() |
      io.apibuilder.examples.graphql.users.anorm.parsers.UserEmailPatchForm.parser()
    }

  }

}