1.2.0-beta.16.2 • Published 4 years ago

scirichon-crud-handler v1.2.0-beta.16.2

Weekly downloads
674
License
-
Repository
-
Last release
4 years ago

An easy to use framework to build rest api service with koa-neo4j,data models are fully declarative by json-schema

features

  • fully declarative koa routes,relationship in neo4j by json schema

data modeling based on json schema extension attributes

basic model

{
  "id": "User",
  "type": "object",
  "properties": {
    "alias": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "lang": {
      "type": "string"
    },
    "userid":{
      "type":"integer"
    },
    "passwd":{
      "type":"string"
    }
  },
  "route":"/users"
}
  • first each data model is a valid json schema,so model 'User' will be validated with ajv as json object with fields and related data types as above

  • data model with attribute "route":"/users" will generate restful api interface with route /users

POST /users

PUT  /users/:uuid

DELETE /users/:uuid

GET /users/:uuid

GET /users
  • "id":"User" is not only the id of the json schema but also the label of the node stored in neo4j

model reference others

{
  "id": "ConfigurationItem",
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "responsibility":{
        "type": "integer",
        "schema":"User",
        "relationship":{"name":"RESPONSIBLE_FOR","reverse":true}
    },
    ...
  },
  "required": ["name"],
  "route": "/cfgItems",
  "search":{"index":"cmdb"}
}
  • schema means field responsibility in model ConfigurationItem reference model User and will generate relationship in neo4j as following

    (:ConfigurationItem)<-:RESPONSIBLE_FOR-(:User)

  • search means instance of ConfigurationItem will also stored in elasticsearch with cmdb as index name

Search

  • query interfaces which use cypher and elasticsearch dsl(will I called eql) directly
api/searchByCypher
{
	"category":"ITService",
	"search":["email","pop3"],
	"cypher":"OPTIONAL MATCH (s1:ITService) WHERE s1.uuid IN {search} or s1.group IN {search} WITH COLLECT(distinct(s1.uuid)) as services_byIds UNWIND {search} as keyword OPTIONAL MATCH (s1:ITService)-[:BelongsTo]->(sg:ITServiceGroup) WHERE s1.name = keyword or sg.name = keyword WITH services_byIds+collect(distinct(s1.uuid)) as services UNWIND services AS service RETURN COLLECT(distinct service)"
}

category is id of the model,cypher is the raw cypher query, other fields are required parameters in cypher query

api/searchByEql
{
  "category":"ConfigurationItem",
  "body":
  {
      "query": {
      	"bool":{
      		"must":[
      			{"match": {"category": "Router"}},
      			{"match":{"status.status":"In_Use"}},
      			{"match":{"it_service":"{{service_email_id}}"}}
      		]
      	}

      },
      "sort" : [
          { "product_date" : {"order" : "desc"}}]
  }
}

category is id of the model,body is the raw eql

Deploy

  1. install db server

    neo4j

    elasticsearch

    redis

  2. install npm dependencies

    npm install

  3. configuration

    modify value in config/default.json to match db configuration

      "neo4j": {
        "host": "localhost",
        "port": 7687,
        "http_port":7474,
        "user": "neo4j",
        "password": "neo4j"
      },
      "elasticsearch":{
        "host": "localhost",
        "port": 9200,
        "requestTimeout":3000,
        "mode": "strict"
      },
      "redis": {
        "host": "localhost",
        "port": 6379
      },
  1. init Schema

    npm run init

  2. start

    npm start

  1. run integration test cases with postman

    npm test

1.2.0-beta.16.2

4 years ago

1.2.0-beta.16

4 years ago

1.2.0-beta.15

4 years ago

1.2.0-beta.14

4 years ago

1.2.0-beta.13

4 years ago

1.2.0-beta.12

5 years ago

1.2.0-beta.11

5 years ago

1.2.0-beta.10

5 years ago

1.2.0-beta.9

5 years ago

1.2.0-beta.8

5 years ago

1.2.0-beta.7

5 years ago

1.2.0-beta.6

5 years ago

1.2.0-beta.5

5 years ago

1.2.0-beta.4

5 years ago

1.2.0-beta.3

5 years ago

1.2.0-beta.1

5 years ago

1.2.0-beta.2

5 years ago

1.1.0-beta.18

6 years ago

1.1.0-beta.17

6 years ago

1.1.0-beta.16

6 years ago

1.1.0-beta.15

6 years ago

1.1.0-beta.14

6 years ago

1.1.0-beta.13

6 years ago

1.1.0-beta.967

6 years ago

1.1.0-beta.12

6 years ago

1.1.0-beta.968

6 years ago

1.1.0-beta.969

6 years ago

1.1.0-beta.11

6 years ago

1.1.0-beta.10

6 years ago

1.1.0-beta.970

6 years ago

1.1.0-beta.9

6 years ago

1.1.0-beta.974

6 years ago

1.1.0-beta.8

6 years ago

1.1.0-beta.975

6 years ago

1.1.0-beta.976

6 years ago

1.1.0-beta.977

6 years ago

1.1.0-beta.978

6 years ago

1.1.0-beta.979

6 years ago

1.1.0-beta.7

6 years ago

1.1.0-beta.6

6 years ago

1.1.0-beta.981

6 years ago

1.1.0-beta.982

6 years ago

1.1.0-beta.983

6 years ago

1.1.0-beta.5

6 years ago

1.1.0-beta.998

6 years ago

1.1.0-beta.4

6 years ago

1.1.0-beta.3

6 years ago

1.1.0-beta.999

6 years ago

1.1.0-beta.2

6 years ago

1.1.0-beta.1

6 years ago

1.1.0

6 years ago

1.0.8

6 years ago

1.0.6-beta.5

6 years ago

1.0.6-beta.4

6 years ago

1.0.6-beta.3

6 years ago

1.0.5-beta.974

6 years ago

1.0.5-beta.975

6 years ago

1.0.5-beta.976

6 years ago

1.0.5-beta.977

6 years ago

1.0.5-beta.978

6 years ago

1.0.5-beta.979

6 years ago

1.0.5-beta.980

6 years ago

1.0.5-beta.981

6 years ago

1.0.5-beta.982

6 years ago

1.0.5-beta.983

6 years ago

1.0.5-beta.984

6 years ago

1.0.5-beta.985

6 years ago

1.0.5-beta.986

6 years ago

1.0.5-beta.47

6 years ago

1.0.5-beta.987

6 years ago

1.0.5-beta.988

6 years ago

1.0.5-beta.989

6 years ago

1.0.5-beta.46

6 years ago

1.0.5-beta.990

6 years ago

1.0.5-beta.45

6 years ago

1.0.5-beta.44

6 years ago

1.0.5-beta.993

6 years ago

1.0.5-beta.95

6 years ago

1.0.5-beta.43

6 years ago

1.0.5-beta.42

6 years ago

1.0.5-beta.41

6 years ago

1.0.5-beta.40

6 years ago

1.0.5-beta.98

6 years ago

1.0.5-beta.39

6 years ago

1.0.5-beta.38

6 years ago

1.0.5-beta.37

6 years ago

1.0.5-beta.36

6 years ago

1.0.5-beta.35

6 years ago

1.0.5-beta.34

6 years ago

1.0.5-beta.33

6 years ago

1.0.5-beta.32

6 years ago

1.0.5-beta.31

7 years ago

1.0.5-beta.30

7 years ago

1.0.5-beta.995

7 years ago

1.0.5-beta.996

7 years ago

1.0.5-beta.997

7 years ago

1.0.5-beta.998

7 years ago

1.0.5-beta.999

7 years ago

1.0.5-beta.29

7 years ago

1.0.5-beta.28

7 years ago

1.0.5-beta.27

7 years ago

1.0.5-beta.26

7 years ago

1.0.5-beta.25

7 years ago

1.0.5-beta.24

7 years ago

1.0.5-beta.23

7 years ago

1.0.5-beta.22

7 years ago

1.0.5-beta.21

7 years ago

1.0.5-beta.20

7 years ago

1.0.5-beta.19

7 years ago

1.0.5-beta.18

7 years ago

1.0.5-beta.17

7 years ago

1.0.5-beta.16

7 years ago

1.0.5-beta.15

7 years ago

1.0.5-beta.14

7 years ago

1.0.5-beta.13

7 years ago

1.0.5-beta.12

7 years ago

1.0.5-beta.11

7 years ago

1.0.5-beta.10

7 years ago

1.0.5-beta.9

7 years ago

1.0.5-beta.8

7 years ago

1.0.5-beta.7

7 years ago

1.0.5-beta.6

7 years ago

1.0.5-beta.5

7 years ago

1.0.5-beta.4

7 years ago

1.0.5-beta.3

7 years ago

1.0.6-beta.2

7 years ago

1.0.6-beta.1

7 years ago

1.0.6

7 years ago

1.0.5-beta.2

7 years ago

1.0.5-beta.1

7 years ago

1.0.5

7 years ago

1.0.4-beta.3

7 years ago

1.0.4-beta.2

7 years ago

1.0.4-beta.1

7 years ago

1.0.3-beta.9

7 years ago

1.0.3-beta.8

7 years ago

1.0.3-beta.7

7 years ago

1.0.3-beta.6

7 years ago

1.0.3-beta.5

7 years ago

1.0.3-beta.4

7 years ago

1.0.3-beta.3

7 years ago

1.0.3-beta.2

7 years ago

1.0.3-beta.1

7 years ago

1.0.2-beta.9

7 years ago

1.0.2-beta.8

7 years ago

1.0.2-beta.7

7 years ago

1.0.2-beta.6

7 years ago

1.0.2-beta.5

7 years ago

1.0.2-beta.4

7 years ago

1.0.2-beta.3

7 years ago

1.0.2-beta.2

7 years ago

1.0.2-beta.1

7 years ago

1.0.1-beta.9

7 years ago

1.0.1-beta.8

7 years ago

1.0.1-beta.7

7 years ago

1.0.1-beta.6

7 years ago

1.0.1-beta.5

7 years ago

1.0.1-beta.4

7 years ago

1.0.1-beta.3

7 years ago

1.0.1-beta.2

7 years ago

1.0.1-beta.1

7 years ago

1.0.0-beta.9

7 years ago

1.0.0-beta.8

7 years ago

1.0.0-beta.7

7 years ago

1.0.0-beta.6

7 years ago

1.0.0-beta.5

7 years ago

1.0.0-beta.4

7 years ago

1.0.0-beta.3

7 years ago

1.0.0-beta.2

7 years ago

1.0.0-beta.1

7 years ago