"Represents the currently authenticated user."
type Me @model(class: "App\\Models\\Auth\\User") {
    "The primary key of the resource"
    id: Int!

    "The username of authenticated user"
    name: String!

    "The email of the user"
    email: String!

    "The date the user verified their email"
    emailVerifiedAt(format: String! = "Y-m-d H:i:s"): String! @timestamp(attribute: "email_verified_at")

    "The date the user confirmed their two-factor authentication"
    twoFactorConfirmedAt(format: String! = "Y-m-d H:i:s"): String! @timestamp(attribute: "two_factor_confirmed_at")

    "The date that the resource was created"
    createdAt(format: String! = "Y-m-d H:i:s"): String! @timestamp(attribute: "created_at")

    "The date that the resource was updated"
    updatedAt(format: String! = "Y-m-d H:i:s"): String! @timestamp(attribute: "updated_at")

    playlists(
        name_like: String @like(key: "name")
        visibility: PlaylistVisibility @eq
        where: _ @whereConditions(columnsEnum: PlaylistFilterableColumns, handler: "App\\GraphQL\\WhereConditions\\WhereConditionsHandler")
        sort: [PlaylistSort!] @sort
    ): [Playlist!]! @hasManyCustom(type: SIMPLE)

    watchHistory: [WatchHistory!]! @hasManyCustom(type: SIMPLE)

    likes: [Like!]! @hasManyCustom(type: SIMPLE)

    permissions(
        default: Boolean @eq
        priority_lesser: Int @where(operator: "<", key: "priority")
        priority_greater: Int @where(operator: ">", key: "priority")
        sort: [PermissionSort!] @sort
    ): [Permission!]! @belongsToManyCustom(type: CONNECTION, edgeType: "PermissionEdge")

    roles(
        default: Boolean @eq
        priority_lesser: Int @where(operator: "<", key: "priority")
        priority_greater: Int @where(operator: ">", key: "priority")
        sort: [RoleSort!] @sort
    ): [Role!]! @belongsToManyCustom(type: CONNECTION, edgeType: "RoleEdge")
}

extend type Query {
    "Returns the data of the currently authenticated user."
    me: Me @auth
}