Skip to content

Instantly share code, notes, and snippets.

View vladbatushkov's full-sized avatar
🥥
Sabai sabai

Vlad Batushkov vladbatushkov

🥥
Sabai sabai
View GitHub Profile
@vladbatushkov
vladbatushkov / money-gen.cql
Last active May 30, 2020 05:33
Generate graph of Finance Transactions
// clean up
CALL apoc.periodic.iterate(
"MATCH (n) RETURN n",
"DETACH DELETE n",
{ batchSize: 10000, parallel: true });
// generate Entities
CALL apoc.generate.er(500000, 5000000, 'Client', 'TRANSFER_TO');
// select ATMs
MATCH (c:Client)
WITH c
@vladbatushkov
vladbatushkov / FlightsSearchObjects.js
Created April 18, 2020 07:10
GraphQL FlightsSearchObjects query
query {
FlightsSearchObjects(from: "Bangkok", to: "Moscow", date:"20200101") {
flights {
flight {
flight_number
price
duration
departs_local
arrival_local
}
@vladbatushkov
vladbatushkov / scalar-types.js
Created April 18, 2020 07:07
Custom Scalar Types
const pad = (s) => {
let str = s + "";
while (str.length < 2)
str = "0" + str;
return str;
}
const flightsDateTime = new GraphQLScalarType({
name: 'FlightsDateTime',
description: 'Description of flights dateTime type',
type Query {
FlightsSearchObjects(from: String, to: String, date: String): [FlightsSearchResult]
}
const query = "CALL custom.getFlightsObjects($from, $to, $date, 2, 6) YIELD result RETURN result";
export const resolvers = {
Query: {
FlightsSearchObjects : async (object, params, ctx, resolveInfo) => {
var result;
@vladbatushkov
vladbatushkov / gql-query-flights-search-nodes.js
Last active April 18, 2020 05:33
FlightsSearchNodes GraphQL query schema
type FlightDetails {
flight_number: String!
duration: String!
price: FlightsInt!
departs_local: FlightsDateTime!
arrival_local: FlightsDateTime!
}
type FlightInfo {
flight: FlightDetails @neo4j_ignore
@vladbatushkov
vladbatushkov / flights-neighbors.cql
Created April 18, 2020 04:31
Find Airport neighbors Airports
MATCH (a:Airport) WHERE this.city = a.city AND this <> a RETURN a
@vladbatushkov
vladbatushkov / airport-schema.js
Created April 18, 2020 03:49
GraphQL Airport Type
type Airport {
code: String!
name: String!
country: String!
city: String!
location: Point!
directs: [Airport] @relation(name: "FLIES_TO", direction: "OUT")
neighbors: [Airport] @cypher(statement: "MATCH (a:Airport) WHERE this.city = a.city AND this <> a RETURN a")
}
@vladbatushkov
vladbatushkov / gql-query-airports.js
Last active April 18, 2020 03:39
GraphQL query to list Airports
const GET_AIRPORTS = gql`
query airportsPaginateQuery(
$first: Int
$offset: Int
$orderBy: [_AirportOrdering]
$filter: _AirportFilter
) {
Airport(
first: $first
offset: $offset
@vladbatushkov
vladbatushkov / react-query-airports.js
Last active March 3, 2020 15:54
Example of Query component for GraphQL-to-Neo4j request for Airports
<Query
query={gql`
query airportsPaginateQuery(
$first: Int
$offset: Int
$orderBy: [_AirportOrdering]
$filter: _AirportFilter
) {
Airport(
first: $first
@vladbatushkov
vladbatushkov / fsapp-procedure.cql
Last active January 8, 2020 17:09
Flights Search Application Procedure
CALL apoc.custom.asProcedure("getFlights",
"WITH { a: $a, b: $b, date: $date, tmin: $tmin, tmax: $tmax } as params
MATCH (a:Airport { city: params.a })
WITH params, AVG(a.location.latitude) as ala, AVG(a.location.longitude) as alo
MATCH (b:Airport { city: params.b })
WITH params, ala, alo, AVG(b.location.latitude) as bla, AVG(b.location.longitude) as blo
WITH params, distance(point({ latitude: ala, longitude: alo }), point({ latitude: bla, longitude: blo })) / 1000 * 1.05 as max
MATCH path = ((a:Airport { city: params.a })-[:FLIES_TO*..3]->(b:Airport { city: params.b }))
WHERE apoc.coll.sum([x IN relationships(path) | x.distance ]) <= max AND SIZE(apoc.coll.duplicates([ x IN nodes(path) | x.city ])) = 0
WITH nodes(path) as routes, params