Skip to content

Instantly share code, notes, and snippets.

View duanebester's full-sized avatar

Duane Bester duanebester

View GitHub Profile
@duanebester
duanebester / gql-elastic.variables.json
Created November 14, 2019 02:42
Example bbox variables
{
"bbox": {
"topLeft": {
"lat": "35.28944337263661",
"lon": "-104.44739421164043"
},
"bottomRight": {
"lat": "26.858621162123413",
"lon": "-93.09427205358374"
}
package models.responses
import spray.json.DefaultJsonProtocol
import models.common._
// User.scala
case class User(id: Int, name: String, location: Location) extends GeoSearchable
object User extends DefaultJsonProtocol {
implicit val format = jsonFormat3(User.apply)
}
@duanebester
duanebester / gql-elastic.docker-compose.yml
Created November 14, 2019 02:31
Docker Compose Example
version: "2.2"
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.4.2
container_name: es01
environment:
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms2g -Xmx2g"
ulimits:
memlock:
@duanebester
duanebester / gql-elastic.query.graphql
Last active November 22, 2019 22:33
GraphQL Example BBox Query
query ($bbox: BBox) { # We tell GQL the type of the $bbox variable
geoSearch(bbox: $bbox) {
users {
hits {
id
name
}
}
coffeeShops {
hits {
@duanebester
duanebester / gql-elastic.Main-0.scala
Last active November 14, 2019 01:59
Main Scala App - 0
object Main extends App {
val PORT = 8080
implicit val actorSystem = ActorSystem("graphql-server")
implicit val materializer = ActorMaterializer()
import actorSystem.dispatcher
scala.sys.addShutdownHook(() -> shutdown())
val route: Route =
name := "gql-elastic"
version := "0.1"
scalaVersion := "2.13.0"
val elastic4sVersion = "7.1.0"
libraryDependencies ++= Seq(
"org.sangria-graphql" %% "sangria" % "2.0.0-M1",
"org.sangria-graphql" %% "sangria-spray-json" % "1.0.2",
"com.typesafe.akka" %% "akka-http" % "10.1.10",
"com.typesafe.akka" %% "akka-http-spray-json" % "10.1.10",
@duanebester
duanebester / reducer.ts
Created November 14, 2019 01:08
Reducer Example
import { Bucket, State, Action } from './interfaces';
const replaceBucket = (state: State, index: number, replacer: Function) => {
const stateCopy = { ...state };
stateCopy.buckets[index] = replacer(stateCopy.buckets[index]);
return stateCopy;
};
export default function reducer(state: State, action: Action): State {
switch (action.type) {
@duanebester
duanebester / interfaces.ts
Last active November 14, 2019 01:08
Reducer Interface Example
export interface Bucket {
notes: string;
id?: string;
}
export interface UpdateNotesPayload {
targetIndex: number;
value: string;
}
@duanebester
duanebester / ProductManager.jsx
Last active March 14, 2019 16:35
Product Manager React Component
import React, {Suspense} from 'react';
import {BrowserRouter as Router, Route} from 'react-router-dom';
import ProductManagerIndex from './ProductManagerIndex';
const ProductManagerCreate = React.lazy(() => import('./ProductManagerCreate'));
export default function ProductManager () {
return (
<Suspense fallback={<div>Loading...</div>}>
<Router>
@duanebester
duanebester / productPageAdmin.js.md
Last active March 8, 2019 15:58
Angular controller diff
 import './productPageAdmin.scss';
 import template from './productPageAdmin.html';
+import {react2angular} from 'react2angular';
+import ProductManager from 'components/pages/admin/productManager';
 
 const productPageAdmin = angular.module('productPageAdmin', [grid, resources, editProduct]);
+
+productPageAdmin.component('productManager', react2angular(ProductManager));
+