Rapsys\AirBundle\Entity\Location:
    type: entity
    repositoryClass: Rapsys\AirBundle\Repository\LocationRepository
    table: locations
    id:
        id:
            type: integer
            generator: 
                strategy: AUTO
            options:
                unsigned: true
    fields:
        title:
            type: string
            length: 32
        description:
            type: text
            nullable: true
        address:
            type: string
            length: 32
        zipcode:
            type: string
            length: 5
        city:
            type: string
            length: 64
        latitude:
            type: decimal
            precision: 8
            scale: 6
        longitude:
            type: decimal
            precision: 9
            scale: 6
        indoor:
            type: boolean
        hotspot:
            type: boolean
        created:
            type: datetime
        updated:
            type: datetime
    oneToMany:
        sessions:
            targetEntity: Rapsys\AirBundle\Entity\Session
            mappedBy: location
        snippets:
            targetEntity: Rapsys\AirBundle\Entity\Snippet
            mappedBy: location
    manyToMany:
        users:
            targetEntity: Rapsys\AirBundle\Entity\User
            mappedBy: locations
    indexes:
        #XXX: used in SessionRepository::(findAllPendingDailyWeather|findAllPendingHourlyWeather)
        zipcode:
            columns: [ zipcode ]
        city_zipcode3:
            columns: [ city, zipcode ]
            #XXX: see https://github.com/doctrine/dbal/pull/2412 and https://stackoverflow.com/questions/32539973/configuring-index-text-length-mysql-in-doctrine
            options:
                lengths: [ ~, 3 ]
    lifecycleCallbacks:
        preUpdate: ['preUpdate']