Giter Site home page Giter Site logo

rediteam's Introduction

RediTeam

A RedisConf 2021 Hackathon Project that solves for the ineffiencies around internal transfers within a company

Manager View

Screenshot

Associate View

Screenshot

Usage and High Level Feature Overview

User Registration, Login, and Session Storage

  • Registration
    • Only requires an email and password
    • Email must be unique
    • Password needs to be at least 8 characters long and must contain an upper case, lower case, number, and special character
    • Password is hashed and salted
  • Login
    • Only requires a registered email and password
    • Stores a new session entry on successful login
  • Session Storage
    • Has a max age value of 1200000
    • Uses RedisStore as session storage
    • Includes a secret prefix

User Profile Creation

  • All users must create a new profile on login
  • Requires a first name, last name, selection of whether you are a manager or not, manager name, team name, selection of office location, and selection of programming languages
  • Once submitted, the user should be able to access the main dashboard

Main Dashboard

  • As a Manager you can:
    • Create a new Req for your team
    • Cancel a created Req
    • Accept a Req application
    • Reject a Req application
  • As an Associate you can:
    • Browse open reqs
    • Apply to a req
    • Cancel an application
  • As a Manager or Associate you can:
    • View team members

Req Creation

  • To create a new Req you have to click the "New Req" button
  • Requires Req name, office location, associate level, programming languages, and description
  • The Req will be published with the hiring manager name, team, and a unique Req ID

Req Workflow

  • Currently there is a Submit (Associate) -> Accept (Hiring Manager) model for completing an internal transfer
  • Future state it should be Submit (Associate) -> Accept (Hiring Manager) -> Accept Acceptance (Associate) -> Accept Transfer (Current Manager)
  • This would require that all parties agree on the transfer before it is completed

Technologies

  • Node.js
  • Express
  • ReactJS
  • Material UI
  • Redis
  • RedisSearch
  • RedisGraph

Screenshot

Architecture Diagram

Screenshot

Data Types

  • Redis
    • User - A registered user
      • Properties
        • id - unique id
        • email
        • password
  • RedisGraph
    • :Employee - A registered user profile for an associate
      • Properties
        • id - User id
        • name - Full Name
        • firstName
        • lastName
        • programmingLanguages - List of programming languages
        • associateLevel - Can be 1,2,3,4
        • officeLocation - New York, Arlington, or San Francisco (hardcoded for now)
        • teamName
        • manager - Manager's full name
        • isManager - false
    • :Manager - A registered user profile for a manager
      • Properties
        • id - User id
        • name - Full Name
        • firstName
        • lastName
        • programmingLanguages - List of programming languages
        • associateLevel - Manager
        • officeLocation - New York, Arlington, or San Francisco (hardcoded for now)
        • teamName
        • manager - Full Name
        • isManager - true
    • :Team
      • Properties
        • name - Name of the team
    • :Associate Level
      • Properties
        • name - Name of the level
        • level - Can be 1,2,3,4 or Manager
        • yearsExperience - Can be 1,3,5, or 10
        • cost - Can be 75000, 100000, 150000, or 200000
    • :ProgammingLanguage
      • Properties
        • name - Name of the programming language
    • :OfficeLocation
      • Properties
        • name - Name of the office location
        • state
        • full_address
    • :Req
      • Properties
        • name - Name of the Req
        • managerId - ID of the hiring manager
        • teamName - Name of the team for which the Req is for
        • manager - Full name of the manager
        • associateLevel
        • officeLocation
        • programmingLanguages
        • description

RedisGraph

Screenshot Screenshot

RedisGraph Relationships

  • (:Employee)-[:Has_Skill]->(:ProgrammingLanguage)
  • (:Employee)-[:Is_Associate_Level]->(:AssociateLevel)
  • (:Employee)-[:Is_Closest_To]->(:OfficeLocation)
  • (:Employee)-[:Is_Part_Of]->(:Team) -(:Employee)-[:Is_Managed_By]->(:Manager)
  • (:Manager)-[:Is_Managed_By]->(:Manager)
  • (:Manager)-[:Is_Part_Of]->(:Team)
  • (:Req)-[:Requires_Skill]->(:ProgrammingLanguage)
  • (:Req)-[:Requires_Associate_Level]->(:AssociateLevel)
  • (:Req)-[:Requires_Office_Location]->(:OfficeLocation)
  • (:Req)-[:Hiring_For]->(:Team)
  • (:Req)-[:Hiring_Manager]->(:Manager)

API Routes

  • /api/health
    • GET
    • Returns 'API Healthy' if API is reachable
  • /api/redis_health
    • GET
    • Returns RedisGraph and RedisSearch connection status (single connection if local)
  • /api/checkSession
    • GET
    • Returns 'Active' if currently logged in user's session is active
  • /api/register
    • POST
    • Params:
      • email (String)
      • password (String)
    • Returns 'Registered' if registration is successful
  • /api/login
    • POST
    • Params:
      • email (String)
      • password (String)
    • Returns 'Correct' if login is successful
  • /api/logout
    • GET
    • Returns 'Logged Out' if logout is successful
  • /api/email
    • GET
    • Returns email of logged in user if successful
  • /api/profile
    • POST
    • Params:
      • name (String)
      • firstName (String)
      • lastName (String)
      • programmingLanguages (List of strings)
      • associateLevel (Int)
      • officeLocation (String)
      • teamName (String)
      • manager (String)
      • isManager (Boolean)
    • Returns 'Employee Profile Created' if successful
  • /api/profile
    • GET
    • Returns profile of logged in user if successful
  • /api/team/members
    • GET
    • Returns team members of logged in user if successful
  • /api/team/manager
    • GET
    • Returns manager of logged in user if successful
  • /api/team/req
    • POST
    • Params:
      • name (String)
      • teamName (String)
      • programmingLanguages (List of strings)
      • associateLevel (Int)
      • officeLocation (String)
      • manager (String)
      • description (String)
    • Returns 'Req Created' if successful
  • /api/team/reqs
    • GET
    • Returns reqs for currently logged in user if it's a Manager
  • /api/team/applications
    • GET
    • Returns applications for currently logged in user's team if it's a Manager
  • /api/reqs
    • GET
    • Returns reqs not including recommended reqs for currently logged in user if it's an associate
  • /api/reqs/recommended
    • GET
    • Returns recommended reqs not including other reqs for currently logged in user if it's an associate
  • /api/reqs/applied
    • GET
    • Returns reqs that the current user has applied to if it's an associate
  • /api/req/apply
    • POST
    • Params:
      • reqId (Int)
    • Returns 'Applied for Req!' if successful
  • /api/req/delete
    • POST
    • Params:
      • reqId (Int)
    • Returns 'Req Deleted!' if successful
  • /api/req/cancel
    • POST
    • Params:
      • reqId (Int)
    • Returns 'Req Application Cancelled!' if successful
  • /api/req/reject
    • POST
    • Params:
      • reqId (Int)
      • id (Int)
    • Returns 'Req Rejected!' if successful
  • /api/req/accept
    • POST
    • Params:
      • reqId (Int)
      • id (Int)
    • Returns 'Req Accepted!' if successful

Running it locally

Prerequisites

  • Node
  • NPM
  • Docker
  • RedisInsight (optional)

Local installation

  1. git clone {this repository}
  2. cd RediTeam
  3. docker pull redislabs/redismod
  4. docker run -p 6379:6379 redislabs/redismod
  5. npm run build
  6. npm run load
  • You may get a bunch of errors. Ignore those.
  1. npm run dev

You should now be able to navigate to localhost:3000/Login and log in using any of the emails from populated fake data or register a new users.

Fake Data

The below fake data is automatically loaded into the application during step 5 of the installation process.

# Fake logins and profiles
[
  {
  "login" :   {"email" : "[email protected]", "password" : "Abc123!"},
  "profile" : {	
                  "id" : 1,
                  "name" : "Adrian Yu",
                  "firstName" : "Adrian",
                  "lastName" : "Yu",
                  "programmingLanguages" : ["Python", "Javascript"],
                  "associateLevel" : "Manager",
                  "officeLocation" : "New York",
                  "teamName" : "Team A",
                  "manager" : "Adrian Yu",
                  "isManager" : true
              }
  }, 
  {"login" :   {"email" : "[email protected]", "password" : "Abc123!"},
  "profile" : {	
                  "id" : 2,
                  "name" : "Ardell Hyer",
                  "firstName" : "Ardell",
                  "lastName" : "Hyer",
                  "programmingLanguages" : ["Node.js", "Ruby"],
                  "associateLevel" : "Manager",
                  "officeLocation" : "Arlington",
                  "teamName" : "Team B",
                  "manager" : "Ardell Hyer",
                  "isManager" : true
              }
  },
  {"login" :   {"email" : "[email protected]", "password" : "Abc123!"},
  "profile" : {	
                  "id" : 3,
                  "name" : "Ranee Dubreuil",
                  "firstName" : "Ranee",
                  "lastName" : "Dubreuil",
                  "programmingLanguages" : ["Python", "Javascript", "Node.js"],
                  "associateLevel" : "Manager",
                  "officeLocation" : "San Francisco",
                  "teamName" : "Team C",
                  "manager" : "Ranee Dubreuil",
                  "isManager" : true
              }
  },
  {"login" :   {"email" : "[email protected]", "password" : "Abc123!"},
  "profile" : {	
                  "id" : 4,
                  "name" : "Camille Crosbie",
                  "firstName" : "Camille",
                  "lastName" : "Crosbie",
                  "programmingLanguages" : ["Python"],
                  "associateLevel" : 1,
                  "officeLocation" : "San Francisco",
                  "teamName" : "Team C",
                  "manager" : "Ranee Dubreuil",
                  "isManager" : false
              }
  },
  {"login" :   {"email" : "[email protected]", "password" : "Abc123!"},
  "profile" : {	
                  "id" : 5,
                  "name" : "Maximo Radford",
                  "firstName" : "Maximo",
                  "lastName" : "Radford",
                  "programmingLanguages" : ["Python", "Javascript"],
                  "associateLevel" : 2,
                  "officeLocation" : "San Francisco",
                  "teamName" : "Team C",
                  "manager" : "Ranee Dubreuil",
                  "isManager" : false
              }
  },
  {"login" :   {"email" : "[email protected]", "password" : "Abc123!"},
  "profile" : {	
                  "id" : 6,
                  "name" : "Sol Heckel",
                  "firstName" : "Sol",
                  "lastName" : "Heckel",
                  "programmingLanguages" : ["Python", "Javascript", "Node.js"],
                  "associateLevel" : 3,
                  "officeLocation" : "New York",
                  "teamName" : "Team C",
                  "manager" : "Ranee Dubreuil",
                  "isManager" : false
              }
  },
  {"login" :   {"email" : "[email protected]", "password" : "Abc123!"},
  "profile" : {	
                  "id" : 7,
                  "name" : "Giuseppina Gobin",
                  "firstName" : "Giuseppina",
                  "lastName" : "Gobin",
                  "programmingLanguages" : ["Javascript", "Node.js"],
                  "associateLevel" : 2,
                  "officeLocation" : "New York",
                  "teamName" : "Team B",
                  "manager" : "Ardell Hyer",
                  "isManager" : false
              }
  },
  {"login" :   {"email" : "[email protected]", "password" : "Abc123!"},
  "profile" : {	
                  "id" : 8,
                  "name" : "Chi Romanik",
                  "firstName" : "Chi",
                  "lastName" : "Romanik",
                  "programmingLanguages" : ["Javascript", "Node.js", "Python", "Ruby"],
                  "associateLevel" : 4,
                  "officeLocation" : "Arlington",
                  "teamName" : "Team B",
                  "manager" : "Ardell Hyer",
                  "isManager" : false
              }
  },
  {"login" :   {"email" : "[email protected]", "password" : "Abc123!"},
  "profile" : {	
                  "id" : 9,
                  "name" : "Denny Castaneda",
                  "firstName" : "Denny",
                  "lastName" : "Castaneda",
                  "programmingLanguages" : ["Python"],
                  "associateLevel" : 1,
                  "officeLocation" : "Arlington",
                  "teamName" : "Team B",
                  "manager" : "Ardell Hyer",
                  "isManager" : false
              }
  },
  {"login" :   {"email" : "[email protected]", "password" : "Abc123!"},
  "profile" : {	
                  "id" : 10,
                  "name" : "Linnie Laroque",
                  "firstName" : "Linnie",
                  "lastName" : "Laroque",
                  "programmingLanguages" : ["Javascript", "Node.js"],
                  "associateLevel" : 2,
                  "officeLocation" : "New York",
                  "teamName" : "Team A",
                  "manager" : "Adrian Yu",
                  "isManager" : false
              }
  },
  {"login" :   {"email" : "[email protected]", "password" : "Abc123!"},
  "profile" : {	
                  "id" : 11,
                  "name" : "John Smith",
                  "firstName" : "John",
                  "lastName" : "Smith",
                  "programmingLanguages" : ["Javascript", "Node.js", "Python"],
                  "associateLevel" : 3,
                  "officeLocation" : "San Francisco",
                  "teamName" : "Team A",
                  "manager" : "Adrian Yu",
                  "isManager" : false
              }
  }]
                        
# Fake Reqs

[
  {"name" : "Software Engineer 2",
  "managerId" : 1,
  "teamName" : "Team A",
  "manager" : "Adrian Yu",
  "associateLevel" : 2,
  "programmingLanguages" : ["Javascript","Node.js"],
  "officeLocation" : "New York",
  "description" : "Looking for a strong Javascript engineer to build and maintain our awesome full stack apps!"
  },
  {"name" : "Software Engineer 3",
  "managerId" : 3,
  "teamName" : "Team C",
  "manager" : "Ranee Dubreuil",
  "associateLevel" : 3,
  "programmingLanguages" : ["Javascript", "Node.js", "Python"],
  "officeLocation" : "San Francisco",
  "description" : "Looking for a very capable engineer with lots of Javascript and Python experience to help lead the buildout out of some of our new systems."
  }
   ]

rediteam's People

Contributors

am2367 avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

redis-developer

rediteam's Issues

ReplyError: Manager not defined

While running npm run build CLI, I see Error messages popping up.

ajeetraina@Ajeets-MacBook-Pro RediTeam % npm run load

> [email protected] load
> node src/models/populateFakeData.js

Completed Populating Fake Data!
Users index has been created
Nodes Created
[
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [
    ReplyError: Manager not defined
        at parseError (/Users/ajeetraina/projects/RediTeam/node_modules/redis-parser/lib/parser.js:179:12)
        at parseType (/Users/ajeetraina/projects/RediTeam/node_modules/redis-parser/lib/parser.js:302:14) {
      command: [Object]
    }
  ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ]
]
Unexpected error creating employee profile
[
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [
    ReplyError: Manager not defined
        at parseError (/Users/ajeetraina/projects/RediTeam/node_modules/redis-parser/lib/parser.js:179:12)
        at parseType (/Users/ajeetraina/projects/RediTeam/node_modules/redis-parser/lib/parser.js:302:14) {
      command: [Object]
    }
  ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ]
]
Unexpected error creating employee profile
Employee Profile Created
[
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ]
]
Unexpected error creating employee profile
[
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ]
]
Unexpected error creating employee profile
Employee Profile Created
[
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ]
]
Unexpected error creating employee profile
[
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ]
]
Unexpected error creating employee profile
[
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ]
]
Unexpected error creating employee profile
Registered
Registered
Registered
Registered
[
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ]
]
Unexpected error creating employee profile
Employee Profile Created
[
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ],
  [ null, [ [Array] ] ]
]
Unexpected error creating req
Req Created
Registered
Registered
Registered
Registered
Registered
Registered
Registered

I checked with the redis "monitor" command and it shows :

)-[r:Is_Closest_To]->(o)"
1626348175.709525 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MATCH(e:Employee{id:9,name:\"Denny Castaneda\",firstName:\"Denny\",lastName:\"Castaneda\",programmingLanguages:[\"Python\"],associateLevel:1,officeLocation:\"Arlington\",teamName:\"Team B\",manager:\"Ardell Hyer\",isManager:false}) MERGE(t:Team{name:\"Team B\"}) MERGE(e)-[r:Is_Part_Of]->(t)"
1626348175.710659 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MATCH(e:Employee{id:9,name:\"Denny Castaneda\",firstName:\"Denny\",lastName:\"Castaneda\",programmingLanguages:[\"Python\"],associateLevel:1,officeLocation:\"Arlington\",teamName:\"Team B\",manager:\"Ardell Hyer\",isManager:false}) MATCH(t:Team{name:\"Team B\"}) MERGE(manager:Manager{name:\"Ardell Hyer\"}) MERGE(e)-[r:Is_Managed_By]->(manager) MERGE(manager)-[r2:Is_Part_Of]->(t)"
1626348175.712115 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MERGE(e:Employee{id:10,name:\"Linnie Laroque\",firstName:\"Linnie\",lastName:\"Laroque\",programmingLanguages:[\"Javascript\",\"Node.js\"],associateLevel:2,officeLocation:\"New York\",teamName:\"Team A\",manager:\"Adrian Yu\",isManager:false}) MERGE(p:ProgrammingLanguage{name:\"javascript\"}) MERGE(e)-[r:Has_Skill]->(p)"
1626348175.712876 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MERGE(e:Employee{id:10,name:\"Linnie Laroque\",firstName:\"Linnie\",lastName:\"Laroque\",programmingLanguages:[\"Javascript\",\"Node.js\"],associateLevel:2,officeLocation:\"New York\",teamName:\"Team A\",manager:\"Adrian Yu\",isManager:false}) MERGE(p:ProgrammingLanguage{name:\"node.js\"}) MERGE(e)-[r:Has_Skill]->(p)"
1626348175.714084 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MATCH(e:Employee{id:10,name:\"Linnie Laroque\",firstName:\"Linnie\",lastName:\"Laroque\",programmingLanguages:[\"Javascript\",\"Node.js\"],associateLevel:2,officeLocation:\"New York\",teamName:\"Team A\",manager:\"Adrian Yu\",isManager:false}) MATCH(a:AssociateLevel{level:2}) MERGE(e)-[r:Is_Associate_Level]->(a)"
1626348175.716021 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MATCH(e:Employee{id:10,name:\"Linnie Laroque\",firstName:\"Linnie\",lastName:\"Laroque\",programmingLanguages:[\"Javascript\",\"Node.js\"],associateLevel:2,officeLocation:\"New York\",teamName:\"Team A\",manager:\"Adrian Yu\",isManager:false}) MATCH(o:OfficeLocation{name:\"New York\"}) MERGE(e)-[r:Is_Closest_To]->(o)"
1626348175.717512 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MATCH(e:Employee{id:10,name:\"Linnie Laroque\",firstName:\"Linnie\",lastName:\"Laroque\",programmingLanguages:[\"Javascript\",\"Node.js\"],associateLevel:2,officeLocation:\"New York\",teamName:\"Team A\",manager:\"Adrian Yu\",isManager:false}) MERGE(t:Team{name:\"Team A\"}) MERGE(e)-[r:Is_Part_Of]->(t)"
1626348175.718436 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MATCH(e:Employee{id:10,name:\"Linnie Laroque\",firstName:\"Linnie\",lastName:\"Laroque\",programmingLanguages:[\"Javascript\",\"Node.js\"],associateLevel:2,officeLocation:\"New York\",teamName:\"Team A\",manager:\"Adrian Yu\",isManager:false}) MATCH(t:Team{name:\"Team A\"}) MERGE(manager:Manager{name:\"Adrian Yu\"}) MERGE(e)-[r:Is_Managed_By]->(manager) MERGE(manager)-[r2:Is_Part_Of]->(t)"
1626348175.719904 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MERGE(e:Employee{id:11,name:\"John Smith\",firstName:\"John\",lastName:\"Smith\",programmingLanguages:[\"Javascript\",\"Node.js\",\"Python\"],associateLevel:3,officeLocation:\"San Francisco\",teamName:\"Team A\",manager:\"Adrian Yu\",isManager:false}) MERGE(p:ProgrammingLanguage{name:\"javascript\"}) MERGE(e)-[r:Has_Skill]->(p)"
1626348175.721214 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MERGE(e:Employee{id:11,name:\"John Smith\",firstName:\"John\",lastName:\"Smith\",programmingLanguages:[\"Javascript\",\"Node.js\",\"Python\"],associateLevel:3,officeLocation:\"San Francisco\",teamName:\"Team A\",manager:\"Adrian Yu\",isManager:false}) MERGE(p:ProgrammingLanguage{name:\"node.js\"}) MERGE(e)-[r:Has_Skill]->(p)"
1626348175.722241 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MERGE(e:Employee{id:11,name:\"John Smith\",firstName:\"John\",lastName:\"Smith\",programmingLanguages:[\"Javascript\",\"Node.js\",\"Python\"],associateLevel:3,officeLocation:\"San Francisco\",teamName:\"Team A\",manager:\"Adrian Yu\",isManager:false}) MERGE(p:ProgrammingLanguage{name:\"python\"}) MERGE(e)-[r:Has_Skill]->(p)"
1626348175.723848 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MATCH(e:Employee{id:11,name:\"John Smith\",firstName:\"John\",lastName:\"Smith\",programmingLanguages:[\"Javascript\",\"Node.js\",\"Python\"],associateLevel:3,officeLocation:\"San Francisco\",teamName:\"Team A\",manager:\"Adrian Yu\",isManager:false}) MATCH(a:AssociateLevel{level:3}) MERGE(e)-[r:Is_Associate_Level]->(a)"
1626348175.725250 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MATCH(e:Employee{id:11,name:\"John Smith\",firstName:\"John\",lastName:\"Smith\",programmingLanguages:[\"Javascript\",\"Node.js\",\"Python\"],associateLevel:3,officeLocation:\"San Francisco\",teamName:\"Team A\",manager:\"Adrian Yu\",isManager:false}) MATCH(o:OfficeLocation{name:\"San Francisco\"}) MERGE(e)-[r:Is_Closest_To]->(o)"
1626348175.726309 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MATCH(e:Employee{id:11,name:\"John Smith\",firstName:\"John\",lastName:\"Smith\",programmingLanguages:[\"Javascript\",\"Node.js\",\"Python\"],associateLevel:3,officeLocation:\"San Francisco\",teamName:\"Team A\",manager:\"Adrian Yu\",isManager:false}) MERGE(t:Team{name:\"Team A\"}) MERGE(e)-[r:Is_Part_Of]->(t)"
1626348175.727410 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MATCH(e:Employee{id:11,name:\"John Smith\",firstName:\"John\",lastName:\"Smith\",programmingLanguages:[\"Javascript\",\"Node.js\",\"Python\"],associateLevel:3,officeLocation:\"San Francisco\",teamName:\"Team A\",manager:\"Adrian Yu\",isManager:false}) MATCH(t:Team{name:\"Team A\"}) MERGE(manager:Manager{name:\"Adrian Yu\"}) MERGE(e)-[r:Is_Managed_By]->(manager) MERGE(manager)-[r2:Is_Part_Of]->(t)"
1626348175.729108 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MERGE(req:Req{name:\"Software Engineer 2\",managerId:1,teamName:\"Team A\",manager:\"Adrian Yu\",associateLevel:2,programmingLanguages:[\"Javascript\",\"Node.js\"],officeLocation:\"New York\",description:\"Looking for a strong Javascript engineer to build and maintain our awesome full stack apps!\"}) MERGE(p:ProgrammingLanguage{name:\"javascript\"}) MERGE(req)-[r:Requires_Skill]->(p)"
1626348175.730255 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MERGE(req:Req{name:\"Software Engineer 2\",managerId:1,teamName:\"Team A\",manager:\"Adrian Yu\",associateLevel:2,programmingLanguages:[\"Javascript\",\"Node.js\"],officeLocation:\"New York\",description:\"Looking for a strong Javascript engineer to build and maintain our awesome full stack apps!\"}) MERGE(p:ProgrammingLanguage{name:\"node.js\"}) MERGE(req)-[r:Requires_Skill]->(p)"
1626348175.731643 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MATCH(req:Req{name:\"Software Engineer 2\",managerId:1,teamName:\"Team A\",manager:\"Adrian Yu\",associateLevel:2,programmingLanguages:[\"Javascript\",\"Node.js\"],officeLocation:\"New York\",description:\"Looking for a strong Javascript engineer to build and maintain our awesome full stack apps!\"}) MATCH(a:AssociateLevel{level:2}) MERGE(req)-[r:Requires_Associate_Level]->(a)"
1626348175.732792 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MATCH(req:Req{name:\"Software Engineer 2\",managerId:1,teamName:\"Team A\",manager:\"Adrian Yu\",associateLevel:2,programmingLanguages:[\"Javascript\",\"Node.js\"],officeLocation:\"New York\",description:\"Looking for a strong Javascript engineer to build and maintain our awesome full stack apps!\"}) MATCH(o:OfficeLocation{name:\"New York\"}) MERGE(req)-[r:Requires_Office_Location]->(o)"
1626348175.734384 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MATCH(req:Req{name:\"Software Engineer 2\",managerId:1,teamName:\"Team A\",manager:\"Adrian Yu\",associateLevel:2,programmingLanguages:[\"Javascript\",\"Node.js\"],officeLocation:\"New York\",description:\"Looking for a strong Javascript engineer to build and maintain our awesome full stack apps!\"}) MATCH(e:Manager{id:1})--(t:Team) MERGE(req)-[r:Hiring_For]->(t) SET req.teamName=t.name SET req.manager=e.name"
1626348175.735938 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MATCH(req:Req{name:\"Software Engineer 2\",managerId:1,teamName:\"Team A\",manager:\"Adrian Yu\",associateLevel:2,programmingLanguages:[\"Javascript\",\"Node.js\"],officeLocation:\"New York\",description:\"Looking for a strong Javascript engineer to build and maintain our awesome full stack apps!\"}) MATCH(e:Manager{id:1}) MERGE(req)-[r:Hiring_Manager]->(e)"
1626348175.737121 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MERGE(req:Req{name:\"Software Engineer 3\",managerId:3,teamName:\"Team C\",manager:\"Ranee Dubreuil\",associateLevel:3,programmingLanguages:[\"Javascript\",\"Node.js\",\"Python\"],officeLocation:\"San Francisco\",description:\"Looking for a very capable engineer with lots of Javascript and Python experience to help lead the buildout out of some of our new systems.\"}) MERGE(p:ProgrammingLanguage{name:\"javascript\"}) MERGE(req)-[r:Requires_Skill]->(p)"
1626348175.738871 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MERGE(req:Req{name:\"Software Engineer 3\",managerId:3,teamName:\"Team C\",manager:\"Ranee Dubreuil\",associateLevel:3,programmingLanguages:[\"Javascript\",\"Node.js\",\"Python\"],officeLocation:\"San Francisco\",description:\"Looking for a very capable engineer with lots of Javascript and Python experience to help lead the buildout out of some of our new systems.\"}) MERGE(p:ProgrammingLanguage{name:\"node.js\"}) MERGE(req)-[r:Requires_Skill]->(p)"
1626348175.740644 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MERGE(req:Req{name:\"Software Engineer 3\",managerId:3,teamName:\"Team C\",manager:\"Ranee Dubreuil\",associateLevel:3,programmingLanguages:[\"Javascript\",\"Node.js\",\"Python\"],officeLocation:\"San Francisco\",description:\"Looking for a very capable engineer with lots of Javascript and Python experience to help lead the buildout out of some of our new systems.\"}) MERGE(p:ProgrammingLanguage{name:\"python\"}) MERGE(req)-[r:Requires_Skill]->(p)"
1626348175.742724 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MATCH(req:Req{name:\"Software Engineer 3\",managerId:3,teamName:\"Team C\",manager:\"Ranee Dubreuil\",associateLevel:3,programmingLanguages:[\"Javascript\",\"Node.js\",\"Python\"],officeLocation:\"San Francisco\",description:\"Looking for a very capable engineer with lots of Javascript and Python experience to help lead the buildout out of some of our new systems.\"}) MATCH(a:AssociateLevel{level:3}) MERGE(req)-[r:Requires_Associate_Level]->(a)"
1626348175.744474 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MATCH(req:Req{name:\"Software Engineer 3\",managerId:3,teamName:\"Team C\",manager:\"Ranee Dubreuil\",associateLevel:3,programmingLanguages:[\"Javascript\",\"Node.js\",\"Python\"],officeLocation:\"San Francisco\",description:\"Looking for a very capable engineer with lots of Javascript and Python experience to help lead the buildout out of some of our new systems.\"}) MATCH(o:OfficeLocation{name:\"San Francisco\"}) MERGE(req)-[r:Requires_Office_Location]->(o)"
1626348175.746218 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MATCH(req:Req{name:\"Software Engineer 3\",managerId:3,teamName:\"Team C\",manager:\"Ranee Dubreuil\",associateLevel:3,programmingLanguages:[\"Javascript\",\"Node.js\",\"Python\"],officeLocation:\"San Francisco\",description:\"Looking for a very capable engineer with lots of Javascript and Python experience to help lead the buildout out of some of our new systems.\"}) MATCH(e:Manager{id:3})--(t:Team) MERGE(req)-[r:Hiring_For]->(t) SET req.teamName=t.name SET req.manager=e.name"
1626348175.747885 [0 172.17.0.1:57356] "GRAPH.QUERY" "Employee" "MATCH(req:Req{name:\"Software Engineer 3\",managerId:3,teamName:\"Team C\",manager:\"Ranee Dubreuil\",associateLevel:3,programmingLanguages:[\"Javascript\",\"Node.js\",\"Python\"],officeLocation:\"San Francisco\",description:\"Looking for a very capable engineer with lots of Javascript and Python experience to help lead the buildout out of some of our new systems.\"}) MATCH(e:Manager{id:3}) MERGE(req)-[r:Hiring_Manager]->(e)"
1626348175.749305 [0 172.17.0.1:57356] "hset" "users:3" "id" "3" "email" "[email protected]" "password" "$2b$10$uBF75qqB8hj4G7W6E0BnmudJEOf9vl6liYe.kfdULcJDhcppMNmYe"
1626348175.749598 [0 172.17.0.1:57356] "hset" "users:1" "id" "1" "email" "[email protected]" "password" "$2b$10$XRvxZIB2BChCfe4kIsNS4.ENoiJ/EiimdCX61MQMgAPgl/9JlM1QG"
1626348175.749650 [0 172.17.0.1:57356] "hset" "users:6" "id" "6" "email" "[email protected]" "password" "$2b$10$xXB/Dc02PewuxfWmddSYdu2HHhraU6EV.BNq1REOLbeA8liExKubO"
1626348175.749709 [0 172.17.0.1:57356] "hset" "users:5" "id" "5" "email" "[email protected]" "password" "$2b$10$cxocPfrT7IADFWOf7oxiru9p0Oqm5h4e79M9ry/s4RKgUrJiSppRu"
1626348175.782893 [0 172.17.0.1:57356] "hset" "users:8" "id" "8" "email" "[email protected]" "password" "$2b$10$ZxtIIJMiYtcBlp91OOf7QesWpVOmS8i6cQ3oz1K3HTigkyViAvSCm"
1626348175.783218 [0 172.17.0.1:57356] "hset" "users:7" "id" "7" "email" "[email protected]" "password" "$2b$10$joRlQ2WrLuqL2rdM7Y9Sb.58vRDaYdfXCXV1sEgVO7I5.eXC2Tyom"
1626348175.783280 [0 172.17.0.1:57356] "hset" "users:4" "id" "4" "email" "[email protected]" "password" "$2b$10$TG7KcPg7uNYFy9emV2KAMeX/X6sfmtUPAakR7SU.UsGgOboTt17D6"
1626348175.783325 [0 172.17.0.1:57356] "hset" "users:9" "id" "9" "email" "[email protected]" "password" "$2b$10$GR1sArXQ29M5Nhl7.mvcAuiklxfA21h36xqivk8Szwtj2xztHYN0y"
1626348175.848782 [0 172.17.0.1:57356] "hset" "users:10" "id" "10" "email" "[email protected]" "password" "$2b$10$K0Tynho9Kv27jGs4pwjffeiPp74nLflpuVVMYpD3sSxPpQw74J2h."
1626348175.849084 [0 172.17.0.1:57356] "hset" "users:2" "id" "2" "email" "[email protected]" "password" "$2b$10$wvzvBwgGnVOOBfAZhQfDsucmN06oPdmFic.3pe6PxQ/fQaz.erEWG"
1626348175.849152 [0 172.17.0.1:57356] "hset" "users:11" "id" "11" "email" "[email protected]" "password" "$2b$10$YZ8MNqfggDV9Ar1mFz2OPOFGrLYOboDnV7gy5M.CwtHA9gZure22K"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.