# Add here your search queries
# see the detailed Source documentation at https://github.com/ddnexus/flex/wiki/Sources


# ANCHORS litheral key: it will not be used as template
# you can store here fragments of queries to reuse in the templates below
ANCHORS:
  - &name_partial
    multi_match:
      query: <<name>>
      fields: <<fields>>
      type: phrase
  - &species_support_id_partial
    term:
      species_support_id: <<species_support_id>>
  - &occupied_zone_id_partial
    terms:
      occupied_zone_id: <<occupied_zone_id>>
  - &restricted_zone_id_partial
    terms:
      restricted_zone_id: <<restricted_zone_id>>
  - &user_closet_hangers_ownership_partial
    has_child:
      type: closet_hanger
      query:
        bool:
          must:
            - term:
                user_id: <<user_id>>
            - term:
                owned: <<user_closet_hanger_ownership>>
  - &body_id_partial
    constant_score:
      filter:
        or:
          query:
            - term:
                body_id: <<body_id>>
            - term:
                body_id: 0

_names:
  *name_partial

_negative_names:
  *name_partial

_species_support_ids:
  *species_support_id_partial

_negative_species_support_ids:
  *species_support_id_partial

_occupied_zone_ids:
  *occupied_zone_id_partial

_negative_occupied_zone_ids:
  *occupied_zone_id_partial

_restricted_zone_ids:
  *restricted_zone_id_partial

_negative_restricted_zone_ids:
  *restricted_zone_id_partial

_user_closet_hanger_ownerships:
  *user_closet_hangers_ownership_partial

_negative_user_closet_hanger_ownerships:
  *user_closet_hangers_ownership_partial

_fits_pet_types:
  *body_id_partial

_negative_fits_pet_types:
  *body_id_partial

item_search:
  - query:
      bool:
        must:
          - term:
              is_nc: <<is_nc= ~>>
          - term:
              is_pb: <<is_pb= ~>>
          - <<_names= ~>>
          - <<_species_support_ids= ~>>
          - <<_occupied_zone_ids= ~>>
          - <<_restricted_zone_ids= ~>>
          - <<_user_closet_hanger_ownerships= ~>>
          - <<_fits_pet_types= ~>>
        must_not:
          - <<_negative_names= ~>>
          - <<_negative_species_support_ids= ~>>
          - <<_negative_occupied_zone_ids= ~>>
          - <<_negative_restricted_zone_ids= ~>>
          - <<_negative_user_closet_hanger_ownerships= ~>>
          - <<_negative_fits_pet_types= ~>>
    sort:
      - name.<<locale>>.untouched