Skip to content

Thammada/graphql-compose-examples

 
 

Repository files navigation

This is example app of graphql-compose

Live example on Heroku: https://graphql-compose.herokuapp.com/

npm install
npm run seed && npm run dev
open http://localhost:3000

This example has simple User mongoose model that supports bunch of CRUD operations.

const UserSchema = new mongoose.Schema({
  name: String, // standard types
  age: {
    type: Number,
    index: true,
  },
  languages: {
    type: [LanguagesSchema], // you may include other schemas (here included as array of embedded documents)
    default: [],
  },
  contacts: { // another mongoose way for providing embedded documents
    email: String,
    phones: [String], // array of strings
  },
  gender: { // enum field with values
    type: String,
    enum: ['male', 'female', 'ladyboy'],
  },
});

screen shot 2016-07-03 at 15 23 03

screen shot 2016-07-15 at 12 41 17

Generated schema in txt format

schema {
  query: RootQuery
  mutation: RootMutation
}

input _idOperatorsFilterFindManyUserInput {
  gt: MongoID
  gte: MongoID
  lt: MongoID
  lte: MongoID
  ne: MongoID
  in: [MongoID]
  nin: [MongoID]
}

input _idOperatorsFilterFindOneUserInput {
  gt: MongoID
  gte: MongoID
  lt: MongoID
  lte: MongoID
  ne: MongoID
  in: [MongoID]
  nin: [MongoID]
}

input _idOperatorsFilterRemoveManyUserInput {
  gt: MongoID
  gte: MongoID
  lt: MongoID
  lte: MongoID
  ne: MongoID
  in: [MongoID]
  nin: [MongoID]
}

input _idOperatorsFilterRemoveOneUserInput {
  gt: MongoID
  gte: MongoID
  lt: MongoID
  lte: MongoID
  ne: MongoID
  in: [MongoID]
  nin: [MongoID]
}

input _idOperatorsFilterUpdateManyUserInput {
  gt: MongoID
  gte: MongoID
  lt: MongoID
  lte: MongoID
  ne: MongoID
  in: [MongoID]
  nin: [MongoID]
}

input _idOperatorsFilterUpdateOneUserInput {
  gt: MongoID
  gte: MongoID
  lt: MongoID
  lte: MongoID
  ne: MongoID
  in: [MongoID]
  nin: [MongoID]
}

input _idOperatorsFilterUserInput {
  gt: MongoID
  gte: MongoID
  lt: MongoID
  lte: MongoID
  ne: MongoID
  in: [MongoID]
  nin: [MongoID]
}

input AgeOperatorsFilterFindManyUserInput {
  gt: Float
  gte: Float
  lt: Float
  lte: Float
  ne: Float
  in: [Float]
  nin: [Float]
}

input AgeOperatorsFilterFindOneUserInput {
  gt: Float
  gte: Float
  lt: Float
  lte: Float
  ne: Float
  in: [Float]
  nin: [Float]
}

input AgeOperatorsFilterRemoveManyUserInput {
  gt: Float
  gte: Float
  lt: Float
  lte: Float
  ne: Float
  in: [Float]
  nin: [Float]
}

input AgeOperatorsFilterRemoveOneUserInput {
  gt: Float
  gte: Float
  lt: Float
  lte: Float
  ne: Float
  in: [Float]
  nin: [Float]
}

input AgeOperatorsFilterUpdateManyUserInput {
  gt: Float
  gte: Float
  lt: Float
  lte: Float
  ne: Float
  in: [Float]
  nin: [Float]
}

input AgeOperatorsFilterUpdateOneUserInput {
  gt: Float
  gte: Float
  lt: Float
  lte: Float
  ne: Float
  in: [Float]
  nin: [Float]
}

input AgeOperatorsFilterUserInput {
  gt: Float
  gte: Float
  lt: Float
  lte: Float
  ne: Float
  in: [Float]
  nin: [Float]
}

scalar ConnectionCursor

input CreateOneUserInput {
  name: String
  age: Float
  languages: [UserUserLanguagesInput]
  contacts: UserContactsInput
  gender: EnumUserGender
}

type CreateOneUserPayload {
  recordId: MongoID
  record: User
}

enum EnumUserGender {
  male
  female
  ladyboy
}

enum EnumUserLanguagesSkill {
  basic
  fluent
  native
}

input FilterFindManyUserInput {
  name: String
  age: Float
  languages: [UserUserLanguagesInput]
  contacts: UserContactsInput
  gender: EnumUserGender
  _id: MongoID
  _operators: OperatorsFilterFindManyUserInput
}

input FilterFindOneUserInput {
  name: String
  age: Float
  languages: [UserUserLanguagesInput]
  contacts: UserContactsInput
  gender: EnumUserGender
  _id: MongoID
  _operators: OperatorsFilterFindOneUserInput
}

input FilterRemoveManyUserInput {
  name: String
  age: Float
  languages: [UserUserLanguagesInput]
  contacts: UserContactsInput
  gender: EnumUserGender
  _id: MongoID
  _operators: OperatorsFilterRemoveManyUserInput
}

input FilterRemoveOneUserInput {
  name: String
  age: Float
  languages: [UserUserLanguagesInput]
  contacts: UserContactsInput
  gender: EnumUserGender
  _id: MongoID
  _operators: OperatorsFilterRemoveOneUserInput
}

input FilterUpdateManyUserInput {
  name: String
  age: Float
  languages: [UserUserLanguagesInput]
  contacts: UserContactsInput
  gender: EnumUserGender
  _id: MongoID
  _operators: OperatorsFilterUpdateManyUserInput
}

input FilterUpdateOneUserInput {
  name: String
  age: Float
  languages: [UserUserLanguagesInput]
  contacts: UserContactsInput
  gender: EnumUserGender
  _id: MongoID
  _operators: OperatorsFilterUpdateOneUserInput
}

input FilterUserInput {
  name: String
  age: Float
  languages: [UserUserLanguagesInput]
  contacts: UserContactsInput
  gender: EnumUserGender
  _id: MongoID
  _operators: OperatorsFilterUserInput
}

scalar MongoID

input OperatorsFilterFindManyUserInput {
  age: AgeOperatorsFilterFindManyUserInput
  _id: _idOperatorsFilterFindManyUserInput
}

input OperatorsFilterFindOneUserInput {
  age: AgeOperatorsFilterFindOneUserInput
  _id: _idOperatorsFilterFindOneUserInput
}

input OperatorsFilterRemoveManyUserInput {
  age: AgeOperatorsFilterRemoveManyUserInput
  _id: _idOperatorsFilterRemoveManyUserInput
}

input OperatorsFilterRemoveOneUserInput {
  age: AgeOperatorsFilterRemoveOneUserInput
  _id: _idOperatorsFilterRemoveOneUserInput
}

input OperatorsFilterUpdateManyUserInput {
  age: AgeOperatorsFilterUpdateManyUserInput
  _id: _idOperatorsFilterUpdateManyUserInput
}

input OperatorsFilterUpdateOneUserInput {
  age: AgeOperatorsFilterUpdateOneUserInput
  _id: _idOperatorsFilterUpdateOneUserInput
}

input OperatorsFilterUserInput {
  age: AgeOperatorsFilterUserInput
  _id: _idOperatorsFilterUserInput
}

type PageInfo {
  hasNextPage: Boolean!
  hasPreviousPage: Boolean!
  startCursor: String
  endCursor: String
}

type RemoveByIdUserPayload {
  recordId: MongoID
  record: User
}

type RemoveManyUserPayload {
  numAffected: Int
}

type RemoveOneUserPayload {
  recordId: MongoID
  record: User
}

type RootMutation {
  userCreate(record: CreateOneUserInput!): CreateOneUserPayload
  userUpdateById(record: UpdateByIdUserInput!): UpdateByIdUserPayload
  userUpdateOne(record: UpdateOneUserInput!, filter: FilterUpdateOneUserInput, sort: SortUpdateOneUserInput, skip: Int): UpdateOneUserPayload
  userUpdateMany(record: UpdateManyUserInput!, filter: FilterUpdateManyUserInput, sort: SortUpdateManyUserInput, skip: Int, limit: Int = 1000): UpdateManyUserPayload
  userRemoveById(_id: MongoID!): RemoveByIdUserPayload
  userRemoveOne(filter: FilterRemoveOneUserInput, sort: SortRemoveOneUserInput): RemoveOneUserPayload
  userRemoveMany(filter: FilterRemoveManyUserInput!): RemoveManyUserPayload
}

type RootQuery {
  userById(_id: MongoID!): User
  userByIds(_ids: [MongoID]!, limit: Int = 1000, sort: SortFindByIdsUserInput): [User]
  userOne(filter: FilterFindOneUserInput, skip: Int, sort: SortFindOneUserInput): User
  userMany(filter: FilterFindManyUserInput, skip: Int, limit: Int = 1000, sort: SortFindManyUserInput): [User]
  userCount(filter: FilterUserInput): Int
  userConnection(first: Int, after: ConnectionCursor, last: Int, before: ConnectionCursor, filter: FilterFindManyUserInput, sort: SortConnectionUserEnum = _ID_DESC): UserConnection
}

enum SortConnectionUserEnum {
  _ID_DESC
  _ID_ASC
}

enum SortFindByIdsUserInput {
  _ID_ASC
  _ID_DESC
  AGE_ASC
  AGE_DESC
}

enum SortFindManyUserInput {
  _ID_ASC
  _ID_DESC
  AGE_ASC
  AGE_DESC
}

enum SortFindOneUserInput {
  _ID_ASC
  _ID_DESC
  AGE_ASC
  AGE_DESC
}

enum SortRemoveOneUserInput {
  _ID_ASC
  _ID_DESC
  AGE_ASC
  AGE_DESC
}

enum SortUpdateManyUserInput {
  _ID_ASC
  _ID_DESC
  AGE_ASC
  AGE_DESC
}

enum SortUpdateOneUserInput {
  _ID_ASC
  _ID_DESC
  AGE_ASC
  AGE_DESC
}

input UpdateByIdUserInput {
  name: String
  age: Float
  languages: [UserUserLanguagesInput]
  contacts: UserContactsInput
  gender: EnumUserGender
  _id: MongoID!
}

type UpdateByIdUserPayload {
  recordId: MongoID
  record: User
}

input UpdateManyUserInput {
  name: String
  age: Float
  languages: [UserUserLanguagesInput]
  contacts: UserContactsInput
  gender: EnumUserGender
}

type UpdateManyUserPayload {
  numAffected: Int
}

input UpdateOneUserInput {
  name: String
  age: Float
  languages: [UserUserLanguagesInput]
  contacts: UserContactsInput
  gender: EnumUserGender
}

type UpdateOneUserPayload {
  recordId: MongoID
  record: User
}

type User {
  name: String
  age: Float
  languages: [UserLanguages]
  contacts: UserContacts
  gender: EnumUserGender
  _id: MongoID
}

type UserConnection {
  count: Int
  pageInfo: PageInfo!
  edges: [UserEdge]
}

type UserContacts {
  email: String
  phones: [String]
}

input UserContactsInput {
  email: String
  phones: [String]
}

type UserEdge {
  node: User
  cursor: ConnectionCursor!
}

type UserLanguages {
  language: String
  skill: EnumUserLanguagesSkill
}

input UserUserLanguagesInput {
  language: String
  skill: EnumUserLanguagesSkill
}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%