MemMongo GraphQL seamless bindings

Ivan Asmer a5844cbd30 +builtin arrays 4 years ago
README.md 990a72c51c +readme 4 years ago
anon.js b4e9ccf133 +count to give ability get count via graphql when result type isnt array but Int 4 years ago
expand.js a5844cbd30 +builtin arrays 4 years ago
index.js 5d23ded7be jwt module split to check function and graphql middlware 4 years ago
jwt.js db61e92fe1 +jwtGQLRole for anon, query recursive walker for object id and regexp 4 years ago
models.js 9976b60c07 check bot && array relations 4 years ago
package-lock.json 721f64a5bc seamless crud between mm and graphql 4 years ago
package.json 721f64a5bc seamless crud between mm and graphql 4 years ago

README.md

MM-Graphql are seamless magic bind tool between Graphql and MemMongo

basic tests:

type Category {
  _id: ID
  createdAt: String
  name: String!
  goods: [Good]
}

input CategoryInput {
  _id: ID
  name: String
  goods: [GoodInput]
}

type Good {
  _id: ID
  createdAt: String
  name: String!
  description: String
  price: Float
  imgUrls: [String]
  orderGoods: [OrderGood]
  categories: [Category]
}

input GoodInput {
  _id: ID
  name: String
  description: String
  imgUrls: [String]
  price: Float
  categories: [CategoryInput]
}

type Mutation {
  UserDelete(user: UserInput): User
  UserUpsert(user: UserInput): User
  CategoryDelete(category: CategoryInput): Category
  CategoryUpsert(category: CategoryInput): Category
  GoodDelete(good: GoodInput): Good
  GoodUpsert(good: GoodInput): Good
  OrderGoodDelete(orderGood: OrderGoodInput): OrderGood
  OrderGoodUpsert(orderGood: OrderGoodInput): OrderGood
  OrderDelete(order: OrderInput): Order
  OrderUpsert(order: OrderInput): Order
}

type Order {
  _id: ID
  createdAt: String
  orderGoods: [OrderGood]
  total: Float
}

type OrderGood {
  _id: ID
  createdAt: String
  price: Float
  count: Float
  good: Good
  order: Order
  total: Float
}

input OrderGoodInput {
  _id: ID
  count: Int
  good: GoodInput
  order: OrderInput
}

input OrderInput {
  _id: ID
  orderGoods: [OrderGoodInput]
}

type Query {
  UserFind(query: String): [User]
  UserFindOne(query: String): User
  CategoryFind(query: String): [Category]
  CategoryFindOne(query: String): Category
  GoodFind(query: String): [Good]
  GoodFindOne(query: String): Good
  OrderGoodFind(query: String): [OrderGood]
  OrderGoodFindOne(query: String): OrderGood
  OrderFind(query: String): [Order]
  OrderFindOne(query: String): Order
}

type User {
  _id: String
  createdAt: String
  login: String
  nick: String
  orders: [Order]
}

input UserInput {
  _id: String
  login: String
  nick: String
}

Mutation and Query section created by boilerplate generator.

queries:

query mmOrders($query:String){
  OrderFind(query:$query){
    _id,
		orderGoods{
      _id,
			total,
			count,
		  good{
        _id, name, price,
        categories{
          _id, name
        }
      }
    }
  }
}

query mmOrder($queryOne:String){
  OrderFindOne(query:$queryOne){
    _id,
		orderGoods{
      _id
    }
  }
}

mutation mmOrderDel($order:OrderInput){
  OrderDelete(order:$order){
    _id, orderGoods{
      _id
    }
  }
}

mutation mmCategoryUpsert($category:CategoryInput){
	CategoryUpsert(category:$category){
    _id, name, goods{
      _id, name, description
    }
  }
}

query mmGoods{
  GoodFind(query:"[{}]"){
    _id, 
    categories{
      _id, name
    }
  }
}

query mmGood{
  GoodFindOne(query:"[{\"_id\": \"5d43941ddc27227aa3de6aa0\"}]"){
    _id, name 
    categories{
      _id, name
    }
  }
}

query mmCategories{
  CategoryFind(query:"[{}]"){
    _id, name, 
    goods{
      _id, name, description,
			categories{
        _id, name
      }
    }
  }
}

# mutation createUser($login:String!, $password:String!){
#   createUser(login:$login, password:$password){
#     _id, login    
#   }  
# }

# query login($login:String!, $password:String!){
#   login(login:$login, password:$password)
# }

# mutation pwd($password:String!){
#   changePassword(password: $password){
#     _id, login
# 	}
# }

Variables:

{
"queryOne": "[{\"_id\": \"5d388f0786f70ff605a78700\"}]",
"query": "[{}]",
 "order": {
    "_id": "5d38f2ce524e8382d111556e"  #для удаления
  },

  "category": {    //нет id - новая категория
    "name": "smth", //название новой категории
		"goods": [  //товары новой категории
      {"_id": "5d390368355751480651ed19"},  //id есть - существующий товар
		  {"name": "new smth"}              //новый товар
    ]
  },
}