Skip to content

Instantly share code, notes, and snippets.

View duanebester's full-sized avatar

Duane Bester duanebester

View GitHub Profile
const mapConfig = {
style: "mapbox://styles/mapbox/outdoors-v10",
containerStyle: {
height: "100vh",
width: "100vw"
},
center: { lat: 30.266666, lng: -97.73333 },
flyToOptions: {
speed: 0.8
}
@duanebester
duanebester / gql-elastic.UserFeatures-1.js
Last active December 2, 2019 19:34
User Features 1
import React from "react";
import { Layer, Feature } from "react-mapbox-gl";
import { gql } from "apollo-boost";
import { useQuery } from "@apollo/react-hooks";
function UserFeatures({ bbox }) {
const { loading, error, data } = useQuery(USER_FEATURES, {
variables: { bbox }
});
@duanebester
duanebester / gql-elastic.UserFeatures-0.js
Last active December 2, 2019 19:33
User Features 0
const USER_FEATURES = gql`
query($bbox: BBox) {
geoSearch(bbox: $bbox) {
users {
hits {
name
location {
lat
lon
}
@duanebester
duanebester / gql-elastic.query-3.graphql
Created November 26, 2019 16:58
Search users and coffee shops with name filter for each
query ($bbox: BBox) {
geoSearch(bbox: $bbox) {
users(name: "M") {
hits {
id
name
location {
lat
lon
}
@duanebester
duanebester / gql-elastic.Main-2.scala
Created November 26, 2019 16:31
Main 2 - Update server routes
val route: Route =
(post & path("graphql")) {
entity(as[JsValue]) { requestJson =>
GraphQLServer.endpoint(requestJson)
}
} ~ {
getFromResource("graphiql.html")
}
@duanebester
duanebester / gql-elastic.CoffeeShop.scala
Last active November 22, 2019 23:41
Coffee Shop case class
package models.responses
import spray.json.DefaultJsonProtocol
import models.common._
// CoffeeShop.scala
case class CoffeeShop(id: Int, name: String, location: Location) extends GeoSearchable
object CoffeeShop extends DefaultJsonProtocol {
implicit val format = jsonFormat3(CoffeeShop.apply)
}
@duanebester
duanebester / gql-elastic.SearchResponse.scala
Last active November 22, 2019 23:42
Search Response case class
package models.responses
import models.common._
// SearchResponse.scala
trait SearchResponse[T <: GeoSearchable] {
val hits: Seq[T]
val total: Long
}
@duanebester
duanebester / gql-elastic.Location.scala
Created November 22, 2019 22:12
Location case class
case class Location(lat: String, lon: String)
object Location extends DefaultJsonProtocol {
implicit val format = jsonFormat2(Location.apply)
}
@duanebester
duanebester / gql-elastic.Elastic.buildUserQuery.scala
Last active November 26, 2019 16:43
Update buildQuery in Elastic
def buildQuery(queryFilter: Filter): BoolQuery = {
var qMusts = mutable.ListBuffer[Query]()
var qFilters = mutable.ListBuffer[Query]()
if (queryFilter.name.isDefined) {
val name = queryFilter.name.get.toLowerCase()
qMusts += prefixQuery("name", name);
} else {
qMusts += matchAllQuery()
}
@duanebester
duanebester / gql-elastic.query-2.graphql
Last active November 26, 2019 16:41
GraphQL Query 2
query ($bbox: BBox) {
geoSearch(bbox: $bbox) {
users(name: "M") {
hits {
id
name
location {
lat
lon
}