Giter Club home page Giter Club logo

Comments (7)

jonasschmidt avatar jonasschmidt commented on September 18, 2024

Hey, can you provide the complete inputs (schema and data) and the outputs you got? I'm trying to piece things together to reproduce the issue, but I think I'm missing some of the parts. The full schema in your example seems to have a mix of symbol and string keys and is missing an opening %{ at least.

from ex_json_schema.

kairos0ne avatar kairos0ne commented on September 18, 2024

Ok that's the output of the resolved schema. All schema files are below.

Request schema:
https://amnesia.io/222de8695240d2e5fc222151dd4579d3358732ad522fd8a73c32062e42c58279

Table schema:
https://amnesia.io/7a4a8883634e21aa99d9e7e0dc41550b1a19c9f6c0dda166377e260aeb504d1e

Pairs schema:
https://amnesia.io/5f00cf0449e900d66ef786825025fe824d9e327747acc9cf2786183cafa707b5

Varchar Schema:
https://amnesia.io/dbecf85609449920fa82236da5c5b8b3eb31edb7f622ab39f19102780dc549ef

Integer:
https://amnesia.io/5afde27e2e86a7a04a6109029903852487849bb3407fdf1f84ac7c5dc0bd558a

Here is the data im sending:

{
    "action": "create",
    "body": {
        "name": "ch_request2",
        "parent": "request",
        "schema": [
            {
                "name": "description",
                "type": "varchar"
            },
            {
                "name": "test",
                "type": "integer"
            }
        ]
    }
}

Here the output of the request I'm sending: Its a postgrex error as it validates with "^integer$" pattern

{
    "error": "type "integerasdasd" does not exist"
}

from ex_json_schema.

kairos0ne avatar kairos0ne commented on September 18, 2024

Its probably also worth noting that I tried also without factoring the common params and I get the same result.

Also if i change the param for varchar to test but that one validates against the pattern which is strange its almost like as if the oneOf is only checking the first key for a pattern. However, if you look at the parent schema oneOf is working correctly as I'm not using a pattern. So perhaps isolated to pattern ?

from ex_json_schema.

jonasschmidt avatar jonasschmidt commented on September 18, 2024

I think the problem is with your table schema. When your items is a list of schemas, you're validating the items against the schema at that list position. That's tuple validation in JSON Schema terms: https://json-schema.org/understanding-json-schema/reference/array.html#tuple-validation. So with this schema:

"items": [
        {
	        "type": "object",
	        "oneOf": [
		        {
			        "$ref": "lib/schemas/pairs.schema.json"
		        }
	        ]
        }
]

you're only validating the first item. If you want to validate all items with the same schema, you need this:

"items": {
	"type": "object",
	"oneOf": [
		{
			"$ref": "lib/schemas/pairs.schema.json"
		}
	]
}

from ex_json_schema.

jonasschmidt avatar jonasschmidt commented on September 18, 2024

Btw you also don't need a pattern for your types. You can use "const": "integer" to match on a constant value.

from ex_json_schema.

kairos0ne avatar kairos0ne commented on September 18, 2024

amazing - thank you for your help with this and as I said I'm quite new to json schema and Elixir for that matter. So apologies if it kept you from more pressing issues. This lib is great and I look forward to the latest schema support.

from ex_json_schema.

jonasschmidt avatar jonasschmidt commented on September 18, 2024

Happy to help. The official page I linked to earlier is quite good at explaining features in depth, with examples and everything. And there are also editors around that might help with composing a schema and giving the right hints.

from ex_json_schema.

Related Issues (20)

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.