func getUserSchema(context *application.MyContext) graphql.Schema {
	var userType = graphql.Fields{
		"user": &graphql.Field{
			Type: graphql.NewObject(
				graphql.ObjectConfig{
					Name: "User",
					Fields: graphql.Fields{
						"id": &graphql.Field{
							Type: graphql.String,
						},
						"name": &graphql.Field{
							Type: graphql.String,
						},
						"password": &graphql.Field{
							Type: graphql.String,
						},
					},
				},
			),
			Args: graphql.FieldConfigArgument{
				"id": &graphql.ArgumentConfig{
					Type: graphql.String,
				},
			},
			Resolve: func(p graphql.ResolveParams) (interface{}, error) {
				id, isOK := p.Args["id"].(string)

				if isOK {
					var dbConnection = (context.GetDbConnection()).(*mgo.Database)
					var result = user_models.UserStruct{}
					err := dbConnection.C("users").Find(bson.M{"_id": bson.ObjectIdHex(id)}).One(&result)
					if err != nil {
						panic(err)
					}
					return result, nil
				}
				return nil, nil
			},
		},
	}
	var schema, _ = graphql.NewSchema(
		graphql.SchemaConfig{
			Query: graphql.NewObject(
				graphql.ObjectConfig{
					Name:   "UserQuery",
					Fields: userType,
				}),
		},
	)
	return schema
}
func Register(rw http.ResponseWriter, rq *http.Request, context *application.MyContext) {
	username := rq.FormValue("username")
	password := rq.FormValue("password")

	isValid := helpers.ValidateRegister(username, password)

	if !isValid {
		application.ResponseData(rw, nil, http.StatusBadRequest)
		return
	}

	var newPerson = &user_models.UserStruct{Username: strings.ToLower(username), Password: password}
	var dbConnection = (context.GetDbConnection()).(*mgo.Database)
	err := dbConnection.C("users").Insert(newPerson)
	if err != nil {
		panic(err)
	}
	application.ResponseData(rw, newPerson, http.StatusGone)
}