-
Notifications
You must be signed in to change notification settings - Fork 1.5k
DOCSP-50472: schema validation #3400
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…aravel-mongodb into DOCSP-50472-jsonSchema-method
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
some small things then LGTM
- ``Schema::create()``: When creating a new collection | ||
- ``Schema::table()``: When updating collection properties |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Q: can you only implement schema validation when using these methods for these specific purposes? or is the info after the colons just a reminder of the method's purpose?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These are the only two methods in Laravel's Schema
that accept a callback to alter columns, so you can only implement schema validation on either creating a collection or updating it.
- ``Schema::table()``: When updating collection properties | ||
|
||
After you implement schema validation, the server allows you to run only | ||
those write operations which follow the validation rules. Use schema |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
those write operations which follow the validation rules. Use schema | |
those write operations that follow the validation rules. Use schema |
After you implement schema validation, the server allows you to run only | ||
those write operations which follow the validation rules. Use schema | ||
validation to restrict data types and value ranges of document fields in | ||
a specified collection. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
S: i wonder if the connection between these two sentences would be clearer if you switched them. something like:
After you implement schema validation, the server allows you to run only | |
those write operations which follow the validation rules. Use schema | |
validation to restrict data types and value ranges of document fields in | |
a specified collection. | |
You can use schema validation to restrict data types and value ranges of document fields in | |
a specified collection. After you implement schema validation, the server allows you to run only | |
those write operations which follow the validation rules. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
makes sense
Before creating a collection with schema validation rules, you must | ||
define a JSON schema. | ||
|
||
The schema is a JSON object that contains key-value pairs | ||
specifying the validation rules for your collection. At the top level, | ||
this object must include a ``$jsonSchema`` object. The ``$jsonSchema`` | ||
object can include the following fields: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
S: break up paragraphs differently. could also then remove first 'JSON'
Before creating a collection with schema validation rules, you must | |
define a JSON schema. | |
The schema is a JSON object that contains key-value pairs | |
specifying the validation rules for your collection. At the top level, | |
this object must include a ``$jsonSchema`` object. The ``$jsonSchema`` | |
object can include the following fields: | |
Before creating a collection with schema validation rules, you must | |
define the schema. | |
A schema is a JSON object that contains key-value pairs | |
specifying the validation rules for your collection. | |
At the top level, this object must include a ``$jsonSchema`` object. The ``$jsonSchema`` | |
object can include the following fields: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removed this paragraph per PV suggestion
- ``title``: Sets an optional title for the schema. | ||
- ``required``: Specifies a list of required fields for each document in your collection. | ||
- ``properties``: Sets property requirements for individual fields. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I: no periods
- ``title``: Sets an optional title for the schema. | |
- ``required``: Specifies a list of required fields for each document in your collection. | |
- ``properties``: Sets property requirements for individual fields. | |
- ``title``: Sets an optional title for the schema | |
- ``required``: Specifies a list of required fields for each document in your collection | |
- ``properties``: Sets property requirements for individual fields |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
removed this text
This example demonstrates how to pass a JSON schema to the | ||
``jsonSchema()`` method when creating a collection. The schema | ||
validation specifies that documents in the ``pilots`` collection must | ||
contain the ``license_number`` field with an integer value between |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
S:
contain the ``license_number`` field with an integer value between | |
contain the ``license_number`` field, and the field must have an integer value between |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
changed to a list
|
||
The schema is a JSON object that contains key-value pairs | ||
specifying the validation rules for your collection. At the top level, | ||
this object must include a ``$jsonSchema`` object. The ``$jsonSchema`` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
$jsonSchema
doesn't need to be included in the schema argument (see the example). Since the method is Blueprint::jsonSchema
, the '$jsonSchema'
operation is already implied.
So this documentation may be valid for MongoDB server but not for Laravel usage
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh also! Since this is PHP, the schema argument is not an object, but an associative array.
this object must include a ``$jsonSchema`` object. The ``$jsonSchema`` | ||
object can include the following fields: | ||
|
||
- ``title``: Sets an optional title for the schema. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we actually include this documentation? Seems to me the $jsonSchema
operation is covered by the Mongo server docs. The Laravel ORM passes the schema through as is. I think specifying allowed fields here puts us in a situation of having to update this documentation when Mongo server specs change, when the user could just use the Mongo server docs as the single source of truth for jsonSchema usage.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That makes sense - I'll cut out some of this text and apply the suggestions from your prev comment.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great! 🙏
https://jira.mongodb.org/browse/DOCSP-50472
Adds documentation for the
jsonSchema()
method.Staging: https://deploy-preview-193--docs-laravel.netlify.app/eloquent-models/schema-builder/#implement-schema-validation
Checklist